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 1111111111 lautet. AWS
In diesem Beispiel wird ein Ziel mithilfe eines Kinesis Data Streams-Streams namens und einer Rolle erstellt RecipientStream, die es CloudWatch Logs ermöglicht, Daten darauf zu schreiben.
Wenn das Ziel erstellt ist, 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
-
Erstellen Sie im Empfängerkonto einen Zieldatenstrom in Kinesis Data Streams. Geben Sie an der Eingabeaufforderung Folgendes ein:
aws kinesis create-stream --stream-name "RecipientStream" --shard-count 1
-
Warten Sie, bis der -Stream aktiv wird. Sie können den Befehl aws kinesis describe-stream verwenden, um das zu überprüfen. StreamDescription StreamStatusEigentum. Notieren Sie sich außerdem den ARN Wert StreamDescription.Stream, da Sie ihn später an CloudWatch Logs übergeben werden:
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.
-
Erstellen Sie die IAM Rolle, die CloudWatch Logs die Erlaubnis erteilt, Daten in Ihren Stream einzufügen. Zunächst müssen Sie eine Vertrauensrichtlinie in einer Datei ~/ TrustPolicyFor CWL .json erstellen. Verwenden Sie einen Texteditor, um diese Richtliniendatei zu erstellen, verwenden Sie nicht die IAM Konsole.
Diese Richtlinie enthält einen globalen Bedingungskontextschlüssel
aws:SourceArn
, der dassourceAccountId
angibt, um das Confused-Deputy-Problem zu vermeiden. Wenn Sie die Quellkonto-ID beim ersten Anruf noch nicht kennen, empfehlen wir Ihnen, das Ziel ARN in das ARN Quellfeld einzugeben. Bei den nachfolgenden Aufrufen sollten Sie als Quelle ARN die tatsächliche Quelle festlegenARN, die Sie beim ersten Anruf abgerufen haben. Weitere Informationen finden Sie unter Confused-Deputy-Prävention.{ "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:
region
:sourceAccountId
:*", "arn:aws:logs:region
:recipientAccountId
:*" ] } }, "Action": "sts:AssumeRole" } } -
Verwenden Sie den Befehl aws iam create-role, um die Rolle zu erstellen, und geben Sie IAM dabei die Vertrauensrichtliniendatei an. Notieren Sie sich den zurückgegebenen Role.Arn-Wert, da er später auch an Logs übergeben wird: CloudWatch
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": "2023-05-29T13:46:29.431Z", "RoleName": "CWLtoKinesisRole", "Path": "/", "Arn": "arn:aws:iam::999999999999:role/CWLtoKinesisRole" } } -
Erstellen Sie eine Berechtigungsrichtlinie, um zu definieren, welche Aktionen CloudWatch Logs auf Ihrem Konto ausführen kann. Verwenden Sie zunächst einen Texteditor, um eine Berechtigungsrichtlinie in einer Datei ~/ PermissionsFor CWL .json zu erstellen:
{ "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:
region
:999999999999:stream/RecipientStream" } ] } -
Ordnen Sie die Berechtigungsrichtlinie der Rolle zu, indem Sie den Befehl aws put-role-policy iam verwenden:
aws iam put-role-policy \ --role-name CWLtoKinesisRole \ --policy-name Permissions-Policy-For-CWL \ --policy-document file://~/PermissionsForCWL.json
-
Nachdem sich der Stream im aktiven Status befindet und Sie die IAM Rolle erstellt haben, können Sie das CloudWatch Logs-Ziel erstellen.
-
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 DestinationArndas, was in der Payload zurückgegeben wird:
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" }
-
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: spezifizieren und dem Absenderkonto die Erlaubnis erteilen, auf das Ziel zuzugreifen.
Die Richtlinie erteilt dem AWS Konto, das Protokolle sendet, die entsprechenden Berechtigungen. 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.{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : "*", "Action" : ["logs:PutSubscriptionFilter","logs:PutAccountPolicy"], "Resource" : "arn:aws:logs:region: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.
{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : ["logs:PutSubscriptionFilter","logs:PutAccountPolicy"], "Resource" : "arn:aws:logs:
region
:999999999999:destination:testDestination" } ] } -
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, mit arn:aws:logs PutSubscriptionFiltergegen das Ziel anzurufen: ARN
region
testDestination:999999999999:Ziel:. Jeder Versuch eines anderen Benutzers, für dieses Ziel anzurufen, wird abgewiesen. PutSubscriptionFilterInformationen zur Überprüfung der Benutzerrechte anhand einer Zugriffsrichtlinie finden Sie unter Verwenden von Policy Validator im IAMBenutzerhandbuch.
-
Wenn Sie fertig sind und AWS Organizations für Ihre kontoübergreifenden Berechtigungen verwenden, folgen Sie den Schritten unter. Schritt 2: (Nur wenn Sie eine Organisation verwenden) Erstellen Sie eine Rolle IAM Wenn Sie dem anderen Konto Berechtigungen direkt erteilen, anstatt Organizations zu verwenden, können Sie diesen Schritt überspringen und mit fortfahren Schritt 3: Erstellen Sie eine Abonnementfilterrichtlinie auf Kontoebene.