Créez une intégration pour enregistrer les événements provenant de l'extérieur à l' AWS aide du AWS CLI - AWS CloudTrail

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.

Créez une intégration pour enregistrer les événements provenant de l'extérieur à l' AWS aide du AWS CLI

Cette section décrit comment vous pouvez utiliser le AWS CLI pour créer une intégration CloudTrail Lake afin de consigner des événements provenant de l'extérieur de AWS.

Dans le AWS CLI, vous créez une intégration en quatre commandes (trois si vous disposez déjà d'un magasin de données d'événements répondant aux critères). Les magasins de données d'événements que vous utilisez comme destinations pour une intégration doivent être destinés à une seule région et à un seul compte ; ils ne peuvent pas être multirégionaux, ils ne peuvent pas enregistrer les événements des organisations dans AWS Organizations lesquelles ils se trouvent et ils ne peuvent inclure que des événements d'activité. Le type d'événement dans la console doit être Events from integrations (Événements issus des intégrations). Dans leAPI, la eventCategory valeur doit êtreActivityAuditLog. Pour plus d'informations sur les intégrations, veuillez consulter la section Créez une intégration avec une source d'événements en dehors de AWS.

  1. Si vous ne disposez d'aucun stockage de données d'événement que vous pouvez utiliser pour l'intégration, exécutez create-event-data-store pour en créer un.

    L'exemple de AWS CLI commande suivant crée un magasin de données d'événements qui enregistre les événements extérieurs AWS. Pour les événements d'activité, la valeur du sélecteur de champ eventCategory est ActivityAuditLog. Le stockage de données d'événement a une période de conservation de 90 jours. Par défaut, le magasin de données d'événements collecte les événements de toutes les régions, mais comme il ne collecte pas d'AWS événements, définissez-le sur une seule région en ajoutant l'--no-multi-region-enabledoption. La protection contre la résiliation est activée par défaut et le stockage de données d'événement ne collecte pas d'événements pour les comptes d'une organisation.

    aws cloudtrail create-event-data-store \ --name my-event-data-store \ --no-multi-region-enabled \ --retention-period 90 \ --advanced-event-selectors '[ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["ActivityAuditLog"] } ] } ]'

    Voici un exemple de réponse.

    { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE", "Name": "my-event-data-store", "AdvancedEventSelectors": [ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "ActivityAuditLog" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 90, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-10-27T10:55:55.384000-04:00", "UpdatedTimestamp": "2023-10-27T10:57:05.549000-04:00" }

    Vous aurez besoin de l'identifiant de la banque de données d'événements (le ARN suffixe du ou EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE dans l'exemple de réponse précédent) pour passer à l'étape suivante et créer votre chaîne.

  2. Exécutez la create-channelcommande pour créer un canal permettant à un partenaire ou à une application source d'envoyer des événements vers un magasin de données d'événements dans CloudTrail.

    Un canal dispose des composants suivants :

    Source

    CloudTrail utilise ces informations pour identifier les partenaires auxquels les données relatives aux événements sont envoyées CloudTrail en votre nom. Une source est requise et peut être Custom pour tous les événements externes àAWS valides, ou le nom d'une source d'événements partenaires. Un seul canal est autorisé par source.

    Pour plus d'informations sur les valeurs Source des partenaires disponibles, veuillez consulter la section Informations supplémentaires sur les partenaires d'intégration.

    Statut d'ingestion

    Le statut du canal indique le moment auquel les derniers événements ont été reçus d'une source de canal.

    Destinations

    Les destinations sont les magasins de données d'événements du CloudTrail lac qui reçoivent les événements du canal. Vous pouvez modifier les stockages de données d'événement de destination pour un canal.

    Pour ne plus recevoir d'événements provenant d'une source, supprimez le canal.

    Afin d'exécuter cette commande, vous avez besoin d'au moins un ID de stockage de données d'événement de destination. Le type de destination valide est EVENT_DATA_STORE. Vous pouvez envoyer des événements ingérés vers plusieurs stockages de données d'événement. L'exemple de commande suivant crée un canal qui envoie des événements à deux magasins de données d'événements, représentés par leur valeur IDs dans l'Locationattribut du --destinations paramètre. Les paramètres --destinations, --name et --source sont obligatoires. Pour ingérer les événements d'un CloudTrail partenaire, spécifiez le nom du partenaire comme valeur de--source. Pour ingérer des événements provenant de vos propres applications externes AWS, spécifiez Custom comme valeur de--source.

    aws cloudtrail create-channel \ --region us-east-1 \ --destinations '[{"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE"}, {"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEg922-5n2l-3vz1- apqw8EXAMPLE"}]' --name my-partner-channel \ --source $partnerSourceName \

    Dans la réponse à votre create-channel commande, copiez ARN le nouveau canal. Vous en aurez besoin ARN pour exécuter les put-audit-events commandes put-resource-policy et dans les étapes suivantes.

  3. Exécutez la put-resource-policycommande pour associer une politique de ressources au canal. Les politiques de ressources sont des documents de JSON politique qui spécifient les actions qu'un principal spécifié peut effectuer sur la ressource et dans quelles conditions. Les comptes définis comme principaux dans la politique de ressources de la chaîne peuvent les appeler PutAuditEvents API pour diffuser des événements.

    Note

    Si vous ne créez pas de politique de ressources pour la chaîne, seul le propriétaire de la chaîne peut l'appeler PutAuditEvents API sur la chaîne.

    Les informations requises pour la politique sont déterminées par le type d'intégration.

    • Pour une intégration de direction, la politique CloudTrail doit contenir le AWS compte IDs du partenaire et vous devez saisir l'identifiant externe unique fourni par le partenaire. CloudTrail ajoute automatiquement le AWS compte du partenaire IDs à la politique de ressources lorsque vous créez une intégration à l'aide de la CloudTrail console. Reportez-vous à la documentation du partenaire pour savoir comment obtenir les numéros de AWS compte requis pour la police.

    • Pour une intégration de solution, vous devez spécifier au moins un identifiant de AWS compte comme identifiant principal, et vous pouvez éventuellement saisir un identifiant externe pour éviter toute confusion entre les adjoints.

    Voici les conditions requises pour la politique de ressources :

    • La ressource ARN définie dans la politique doit correspondre au canal auquel ARN la politique est attachée.

    • La politique ne contient qu'une seule action : cloudtrail-data : PutAuditEvents

    • La politique contient au moins une instruction. La politique peut comporter un maximum de 20 instructions.

    • Chaque instruction comprend au moins un principal. Une instruction peut comporter un maximum de 50 principaux.

    aws cloudtrail put-resource-policy \ --resource-arn "channelARN" \ --policy "{ "Version": "2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b", "Condition": { "StringEquals": { "cloudtrail:ExternalId": "UniqueExternalIDFromPartner" } } } ] }"

    Pour plus d’informations sur les stratégies de ressources, consultez AWS CloudTrail exemples de politiques basées sur les ressources.

  4. Exécutez le PutAuditEventsAPIpour intégrer CloudTrail les événements de votre activité. Vous aurez besoin de la charge utile des événements que vous souhaitez CloudTrail ajouter. Assurez-vous qu'aucune information sensible ou d'identification personnelle ne se trouve dans la charge utile de l'événement avant de l'ingérer. CloudTrail Notez qu'il PutAuditEvents API utilise le cloudtrail-data CLI point de terminaison et non le cloudtrail point de terminaison.

    Les exemples suivants montrent comment utiliser la put-audit-events CLI commande. Les paramètres --audit-events et --channel-arn sont obligatoires. Le paramètre --external-id est requis si un ID externe est défini dans la politique de ressources. Vous avez besoin ARN du canal que vous avez créé à l'étape précédente. La valeur de --audit-events est un JSON tableau d'objets d'événements. --audit-eventsinclut un identifiant requis pour l'événement, la charge utile requise de l'événement comme valeur deEventData, et une somme de contrôle facultative pour aider à valider l'intégrité de l'événement après son ingestion. CloudTrail

    aws cloudtrail-data put-audit-events \ --channel-arn $ChannelArn \ --external-id $UniqueExternalIDFromPartner \ --audit-events \ id="event_ID",eventData='"{event_payload}"' \ id="event_ID",eventData='"{event_payload}"',eventDataChecksum="optional_checksum"

    Voici un exemple de commande avec deux exemples d'événement.

    aws cloudtrail-data put-audit-events \ --channel-arn arn:aws:cloudtrail:us-east-1:123456789012:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \ --external-id UniqueExternalIDFromPartner \ --audit-events \ id="EXAMPLE3-0f1f-4a85-9664-d50a3EXAMPLE",eventData='"{\"eventVersion\":\0.01\",\"eventSource\":\"custom1.domain.com\", ... \}"' \ id="EXAMPLE7-a999-486d-b241-b33a1EXAMPLE",eventData='"{\"eventVersion\":\0.02\",\"eventSource\":\"custom2.domain.com\", ... \}"',eventDataChecksum="EXAMPLE6e7dd61f3ead...93a691d8EXAMPLE"

    L'exemple de commande suivant ajoute le --cli-input-json paramètre pour spécifier un JSON fichier (custom-events.json) contenant la charge utile d'un événement.

    aws cloudtrail-data put-audit-events --channel-arn $channelArn --external-id $UniqueExternalIDFromPartner --cli-input-json file://custom-events.json --region us-east-1

    Voici le contenu d'exemple du JSON fichier d'exemple,custom-events.json.

    { "auditEvents": [ { "eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"12.34.56.78\",\"recipientAccountId\":\"152089810396\"}", "id": "1" } ] }

Vous pouvez vérifier que l'intégration fonctionne et qu'elle CloudTrail ingère correctement les événements provenant de la source en exécutant la get-channelcommande. La sortie de get-channel indique l'horodatage le plus récent ayant CloudTrail reçu des événements.

aws cloudtrail get-channel --channel arn:aws:cloudtrail:us-east-1:01234567890:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE

(Facultatif) Calcul d'une valeur de somme de contrôle

La somme de contrôle que vous spécifiez comme valeur de EventDataChecksum dans une PutAuditEvents demande vous permet de vérifier qui CloudTrail reçoit l'événement correspondant à la somme de contrôle ; elle permet de vérifier l'intégrité des événements. La valeur checksum est un SHA256 algorithme base64 que vous calculez en exécutant la commande suivante.

printf %s "{"eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"source_IP_address\", \"recipientAccountId\":\"recipient_account_ID\"}", "id": "1"}" \ | openssl dgst -binary -sha256 | base64

La commande renvoie la somme de contrôle. Voici un exemple.

EXAMPLEDHjkI8iehvCUCWTIAbNYkOgO/t0YNw+7rrQE=

La valeur de la somme de contrôle devient la valeur de EventDataChecksum dans votre demande PutAuditEvents. Si la somme de contrôle ne correspond pas à celle de l'événement fourni, CloudTrail rejette l'événement avec une InvalidChecksum erreur.