View a markdown version of this page

Schritt 1: Erstellen eines Ziels - CloudWatch Amazon-Protokolle

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Schritt 1: Erstellen eines Ziels

Wichtig

Alle Schritte in diesem Verfahren müssen im Konto des Protokolldatenempfängers ausgeführt werden.

In diesem Beispiel hat das Konto des Empfängers der Protokolldaten die Konto-ID 9999999999, während die AWS Konto-ID des Absenders der Protokolldaten 111111111111 lautet. AWS

In diesem Beispiel wird ein Ziel mithilfe eines Amazon Kinesis Data Streams-Streams namens und einer Rolle erstellt, die es Logs ermöglicht RecipientStream, Daten darauf zu schreiben. CloudWatch

Wenn das Ziel erstellt wird, sendet CloudWatch Logs im Namen des Empfängerkontos eine Testnachricht an das Ziel. Wenn der Abonnementfilter später aktiv ist, sendet CloudWatch Logs im Namen des Quellkontos Protokollereignisse an das Ziel.

So erstellen Sie ein Ziel
  1. Erstellen Sie im Empfängerkonto einen Ziel-Stream in Amazon Kinesis Data Streams. Geben Sie an der Eingabeaufforderung Folgendes ein:

    aws kinesis create-stream --stream-name "RecipientStream" --shard-count 1
  2. Warten Sie, bis der -Stream aktiv wird. Sie können den Befehl aws kinesis describe-stream verwenden, um die Eigenschaft zu überprüfen. StreamDescription.StreamStatus Notieren Sie sich außerdem den StreamDescription.StreamARN Wert, da Sie ihn später an Logs übergeben werden: CloudWatch

    aws kinesis describe-stream --stream-name "RecipientStream" { "StreamDescription": { "StreamStatus": "ACTIVE", "StreamName": "RecipientStream", "StreamARN": "arn:aws:kinesis:us-east-1:999999999999:stream/RecipientStream", "Shards": [ { "ShardId": "shardId-000000000000", "HashKeyRange": { "EndingHashKey": "34028236692093846346337460743176EXAMPLE", "StartingHashKey": "0" }, "SequenceNumberRange": { "StartingSequenceNumber": "4955113521868881845667950383198145878459135270218EXAMPLE" } } ] } }

    Es kann einige Minuten dauern, bis der Stream im aktiven Status angezeigt wird.

  3. Erstellen Sie die IAM-Rolle, die CloudWatch Logs die Erlaubnis erteilt, Daten in Ihren Stream aufzunehmen. Zunächst müssen Sie eine Vertrauensrichtlinie in einer Datei TrustPolicyForCWL.json ~/ erstellen. Erstellen Sie in einem Text-Editor die Richtliniendatei, verwenden Sie nicht die IAM-Konsole.

    Diese Richtlinie enthält einen globalen Bedingungskontextschlüssel aws:SourceArn, der das sourceAccountId angibt, um das Confused-Deputy-Problem zu vermeiden. Wenn Sie die Quell-Kontonummer beim ersten Aufruf noch nicht kennen, empfehlen wir Ihnen, die Ziel-ARN in das Quell-ARN-Feld einzutragen. Bei den folgenden Aufrufen sollten Sie als Quell-ARN den tatsächlichen Quell-ARN angeben, den Sie beim ersten Aufruf ermittelt haben. Weitere Informationen finden Sie unter Confused-Deputy-Prävention.

    { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } }, "Action": "sts:AssumeRole" } }
  4. Verwenden Sie den Befehl aws iam create-role, um die IAM-Rolle zu erstellen und die Vertrauensrichtlinie anzugeben. Notieren Sie sich den zurückgegebenen Role.Arn Wert, da er später auch an CloudWatch Logs übergeben wird:

    aws iam create-role \ --role-name CWLtoKinesisRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:region:sourceAccountId:*", "arn:aws:logs:region:recipientAccountId:*" ] } }, "Principal": { "Service": "logs.amazonaws.com" } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoKinesisRole", "Path": "/", "Arn": "arn:aws:iam::999999999999:role/CWLtoKinesisRole" } }
  5. Erstellen Sie eine Berechtigungsrichtlinie, um zu definieren, welche Aktionen CloudWatch Logs für Ihr Konto ausführen können. Verwenden Sie zunächst einen Texteditor, um eine Berechtigungsrichtlinie in einer Datei ~/: PermissionsForCWL.json

    { "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:region:999999999999:stream/RecipientStream" } ] }
  6. Verknüpfen Sie die Berechtigungsrichtlinie mit der Rolle, und verwenden Sie dazu den Befehl aws iam put-role-policy:

    aws iam put-role-policy \ --role-name CWLtoKinesisRole \ --policy-name Permissions-Policy-For-CWL \ --policy-document file://~/PermissionsForCWL.json
  7. Nachdem sich der Stream im aktiven Status befindet und Sie die IAM-Rolle erstellt haben, können Sie das CloudWatch Logs-Ziel erstellen.

    1. In diesem Schritt wird keine Zugriffsrichtlinie mit Ihrem Ziel verknüpft. Es ist zudem erst der erste von zwei Schritten zum Erstellen eines Ziels. Notieren Sie sich den in der Nutzlast ausgegebenen Wert DestinationArn:

      aws logs put-destination \ --destination-name "testDestination" \ --target-arn "arn:aws:kinesis:region:999999999999:stream/RecipientStream" \ --role-arn "arn:aws:iam::999999999999:role/CWLtoKinesisRole" { "DestinationName" : "testDestination", "RoleArn" : "arn:aws:iam::999999999999:role/CWLtoKinesisRole", "DestinationArn" : "arn:aws:logs:us-east-1:999999999999:destination:testDestination", "TargetArn" : "arn:aws:kinesis:us-east-1:999999999999:stream/RecipientStream" }
    2. Verknüpfen Sie, nachdem Schritt 7a abgeschlossen ist, im Empfängerkonto der Protokolldaten eine Zugriffsrichtlinie mit dem Ziel. Diese Richtlinie muss die PutSubscriptionFilter Aktion „Logs:“ angeben und gewährt dem Absenderkonto die Erlaubnis, auf das Ziel zuzugreifen.

      Die Richtlinie gewährt dem AWS Konto, das Protokolle sendet, die Erlaubnis. Sie können nur dieses eine Konto in der Richtlinie angeben, oder wenn das Senderkonto Mitglied einer Organisation ist, kann die Richtlinie die Organisations-ID der Organisation angeben. Auf diese Weise können Sie nur eine Richtlinie erstellen, mit der mehrere Konten in einer Organisation Protokolle an dieses Zielkonto senden können.

      Verwenden Sie einen Texteditor, um eine Datei mit dem Namen ~/AccessPolicy.json mit einer der folgenden Richtlinienanweisungen zu erstellen.

      Diese erste Beispielrichtlinie ermöglicht es allen Konten in der Organisation, die die ID o-1234567890 haben, Protokolle an das Empfängerkonto zu senden.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": "logs:PutSubscriptionFilter", "Resource": "arn:aws:logs:us-east-1:999999999999:destination:testDestination", "Condition": { "StringEquals": { "aws:PrincipalOrgID": [ "o-1234567890" ] } } } ] }

      In diesem nächsten Beispiel kann nur das Protokolldatenabsenderkonto (111111111111) Protokolle an das Protokolldatenempfängerkonto senden.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "111111111111" }, "Action": "logs:PutSubscriptionFilter", "Resource": "arn:aws:logs:us-east-1:999999999999:destination:testDestination" } ] }
    3. Fügen Sie die Richtlinie, die Sie im vorherigen Schritt erstellt haben, dem Ziel an.

      aws logs put-destination-policy \ --destination-name "testDestination" \ --access-policy file://~/AccessPolicy.json

      Diese Zugriffsrichtlinie ermöglicht es Benutzern im AWS Konto mit der ID 111111111111, das Ziel mit ARN arn:aws:logs PutSubscriptionFilter ::999999999999:destination:testDestination anzurufen. region Jeder Versuch PutSubscriptionFilter eines anderen Benutzers, gegen dieses Ziel anzurufen, wird abgelehnt.

      Informationen dazu, wie Sie die Berechtigungen eines Benutzers mit einer Zugriffsrichtlinie prüfen, finden Sie unter Verwenden der Richtlinienvalidierung im IAM-Benutzerhandbuch.

Wenn Sie fertig sind und die Nutzung AWS Organizations für Ihre kontoübergreifenden Berechtigungen verwenden, folgen Sie den Schritten unterSchritt 2: (Nur bei Verwendung einer Organisation) Erstellen Sie eine IAM-Rolle. Wenn Sie dem anderen Konto Berechtigungen direkt erteilen, anstatt Organizations zu verwenden, können Sie diesen Schritt überspringen und mit fortfahren Schritt 4: Erstellen eines Abonnementfilters.