Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Étape 1 : créer une destination
Important
Toutes les étapes de cette procédure doivent être réalisées dans le compte du destinataire des données du journal.
Dans cet exemple, le compte du destinataire des données du journal a un ID de compte 999999999999, tandis que l'identifiant du AWS compte de l'expéditeur AWS des données du journal est 111111111111.
Cet exemple crée une destination à l'aide d'un flux Kinesis Data Streams RecipientStream appelé, et d'un rôle qui CloudWatch permet à Logs d'y écrire des données.
Lorsque la destination est créée, CloudWatch Logs envoie un message test à la destination au nom du compte du destinataire. Lorsque le filtre d'abonnement est activé ultérieurement, CloudWatch Logs envoie les événements du journal à la destination au nom du compte source.
Pour créer une destination
-
Dans le compte du destinataire, créez un flux de diffusion de destination dans Kinesis Data Streams. À l'invite de commande, saisissez :
aws kinesis create-stream --stream-name "RecipientStream" --shard-count 1
-
Patientez jusqu'à ce que le flux devienne actif. Vous pouvez utiliser la commande aws kinesis describe-stream pour vérifier le. StreamDescription StreamStatuspropriété. Prenez également note de la ARN valeur StreamDescription.Stream, car vous la transmettrez ultérieurement à CloudWatch Logs :
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" } } ] } }
Votre flux de données peut prendre une ou deux minutes avant d'apparaître avec le statut actif.
-
Créez le IAM rôle qui autorise CloudWatch Logs à insérer des données dans votre flux. Tout d'abord, vous devez créer une politique de confiance dans un fichier ~/ TrustPolicyFor CWL .json. Utilisez un éditeur de texte pour créer ce fichier de règles, n'utilisez pas la IAM console.
Cette politique comprend une clé de contexte de condition globale
aws:SourceArn
qui spécifie lesourceAccountId
pour aider à prévenir le problème de sécurité du député confus. Si vous ne connaissez pas encore l'ID du compte source lors du premier appel, nous vous recommandons de saisir la destination ARN dans le ARN champ source. Lors des appels suivants, vous devez définir la source comme ARN étant la source réelle ARN que vous avez collectée lors du premier appel. Pour de plus amples informations, veuillez consulter Prévention du député confus.{ "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" } } -
Utilisez la commande aws iam create-role pour créer le IAM rôle, en spécifiant le fichier de politique de confiance. Prenez note de la valeur Role.Arn renvoyée, car elle sera également transmise à CloudWatch Logs ultérieurement :
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" } } -
Créez une politique d'autorisation pour définir les actions que CloudWatch Logs peut effectuer sur votre compte. Utilisez d'abord un éditeur de texte pour créer une politique d'autorisations dans un fichier ~/ PermissionsFor CWL .json :
{ "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:
region
:999999999999:stream/RecipientStream" } ] } -
Associez la politique d'autorisation au rôle à l'aide de la put-role-policy commande aws iam :
aws iam put-role-policy \ --role-name CWLtoKinesisRole \ --policy-name Permissions-Policy-For-CWL \ --policy-document file://~/PermissionsForCWL.json
-
Une fois que le flux est actif et que vous avez créé le IAM rôle, vous pouvez créer la destination CloudWatch Logs.
-
Cette étape n'associe aucune stratégie d'accès à votre destination. Il s'agit uniquement de la première de deux étapes pour créer une destination. Notez DestinationArnce qui est renvoyé dans la charge utile :
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" }
-
Une fois l'étape 7a terminée, dans le compte des données du journal du destinataire, associez une stratégie d'accès à la destination. Cette politique doit spécifier l'PutSubscriptionFilteraction logs : et autoriser le compte expéditeur à accéder à la destination.
La politique accorde l'autorisation au AWS compte qui envoie les journaux. Vous pouvez spécifier uniquement ce compte dans la politique. Si le compte de l'expéditeur est membre d'une organisation, la politique peut également spécifier l'ID de l'organisation. De cette façon, vous pouvez créer une seule politique pour autoriser plusieurs comptes d'une organisation à envoyer des journaux à ce compte de destination.
Utilisez un éditeur de texte pour créer un fichier nommé
~/AccessPolicy.json
avec l'une des déclarations de politique suivantes.Ce premier exemple de politique autorise tous les comptes de l'organisation possédant un ID
o-1234567890
à envoyer les journaux au compte du destinataire.{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : "*", "Action" : "logs:PutSubscriptionFilter", "Resource" : "arn:aws:logs:region:999999999999:destination:testDestination", "Condition": { "StringEquals" : { "aws:PrincipalOrgID" : ["o-1234567890"] } } } ] }
Cet exemple suivant permet uniquement au compte des données du journal de l'expéditeur (111111111111) d'envoyer des journaux au compte du destinataire des données du journal.
{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : "logs:PutSubscriptionFilter", "Resource" : "arn:aws:logs:
region
:999999999999:destination:testDestination" } ] } -
Associez la politique que vous avez créée à l'étape précédente à la destination.
aws logs put-destination-policy \ --destination-name "testDestination" \ --access-policy file://~/AccessPolicy.json
Cette politique d'accès permet aux utilisateurs du AWS compte ayant l'ID 111111111111 d'appeler la destination avec arn:aws:logs PutSubscriptionFilter: ARN
region
:99999999999999:destination :. testDestination Toute tentative d' PutSubscriptionFilter appel de la part d'un autre utilisateur vers cette destination sera rejetée.Pour valider les privilèges d'un utilisateur par rapport à une politique d'accès, consultez la section Utilisation du validateur de politique dans le guide de l'IAMutilisateur.
-
Lorsque vous avez terminé, si vous utilisez AWS Organizations pour vos autorisations multi-comptes, suivez les étapes décrites dansÉtape 2 : (uniquement si vous utilisez une organisation) Créez un IAM rôle. Si vous accordez des autorisations directement à l'autre compte au lieu d'utiliser des organisations, vous pouvez ignorer cette étape et passer à Étape 4 : créer un filtre d'abonnement.