Collecter les journaux AWS Control Tower

Compatible avec:

Ce document explique comment ingérer les journaux AWS Control Tower dans Google Security Operations. AWS Control Tower permet de surveiller la gouvernance, la conformité et la sécurité de plusieurs comptes AWS. Cette intégration vous permet d'analyser les journaux d'AWS Control Tower pour améliorer la visibilité et le niveau de sécurité.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer d'un accès privilégié à AWS.

Configurer le bucket Amazon S3

  1. Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur: Créer un bucket.
  2. Enregistrez le nom et la région du bucket pour une utilisation ultérieure.
  3. Créez un utilisateur en suivant le guide de l'utilisateur Créer un utilisateur IAM.
  4. Sélectionnez l'utilisateur créé.
  5. Sélectionnez l'onglet Informations d'identification de sécurité.
  6. Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
  7. Sélectionnez Service tiers comme Cas d'utilisation.
  8. Cliquez sur Suivant.
  9. Facultatif: ajoutez une balise de description.
  10. Cliquez sur Créer une clé d'accès.
  11. Cliquez sur Download CSV file (Télécharger le fichier CSV) pour enregistrer la clé d'accès et la clé d'accès secrète pour les utiliser ultérieurement.
  12. Cliquez sur OK.
  13. Sélectionnez l'onglet Autorisations.
  14. Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
  15. Sélectionnez Ajouter des autorisations.
  16. Sélectionnez Joindre directement des règles.
  17. Recherchez et sélectionnez les règles AmazonS3FullAccess et CloudWatchLogsFullAccess.
  18. Cliquez sur Suivant.
  19. Cliquez sur Ajouter des autorisations.

Configurer CloudTrail dans AWS Control Tower

  1. Connectez-vous à l'AWS Management Console.
  2. Accédez à AWS Control Tower.
  3. Dans la barre de recherche, saisissez CloudTrail, puis sélectionnez-le dans la liste des services.
  4. Cliquez sur Créer un parcours pour créer un parcours.

  5. Spécifiez les paramètres de la piste:

    • Nom du parcours: attribuez un nom significatif au parcours (par exemple, ControlTowerTrail).
    • Appliquer la trace à toutes les régions: assurez-vous de sélectionner Oui pour Appliquer la trace à toutes les régions.
    • Événements de gestion: assurez-vous que les événements Lecture/Écriture sont définis sur Tous.
    • Facultatif: Événements de données: activez les événements de données S3 et les événements de données Lambda pour capturer l'activité des données de manière détaillée.
    • Facultatif: Validation des fichiers journaux: activez cette option pour vous assurer que les fichiers journaux ne sont pas altérés une fois stockés.
  6. Dans le sélecteur Événement, choisissez d'enregistrer les événements de gestion et les événements de données.

Configurer CloudTrail pour envoyer des journaux à un bucket S3

  1. Accédez à la console IAM AWS.
  2. Cliquez sur Rôles.
  3. Recherchez le rôle que CloudTrail utilise AWSServiceRoleForCloudTrail (le rôle est créé automatiquement lorsque vous configurez CloudTrail).
  4. Dans l'onglet Autorisations du rôle, cliquez sur Attacher des stratégies.
  5. Recherchez CloudTrailS3DeliveryPolicy.
  6. Cochez la case située à côté de la règle CloudTrailS3DeliveryPolicy.
  7. Cliquez sur Attach policy (Attacher la stratégie).
  8. Accédez à la console CloudTrail d'AWS.
  9. Dans la section Storage location (Emplacement de stockage), sélectionnez S3 comme destination des fichiers journaux.
  10. Sélectionnez le bucket S3 que vous avez créé précédemment.
  11. Cliquez sur Allow (Autoriser) lorsque vous êtes invité à accorder à CloudTrail l'autorisation d'écrire des journaux dans le bucket de votre choix.
  12. Vérifiez vos paramètres, puis cliquez sur Créer (ou sur Enregistrer les modifications si vous modifiez un parcours existant).

Configurer un flux dans Google SecOps pour ingérer les journaux AWS Control Tower

  1. Accédez à SIEM Settings > Feeds (Paramètres du SIEM > Flux).
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux AWS Control Tower).
  4. Sélectionnez Amazon S3 comme Type de source.
  5. Sélectionnez AWS Control Tower comme Type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants:

    • Region (Région) : région dans laquelle se trouve le bucket Amazon S3.
    • URI S3: URI du bucket.
      • s3://your-log-bucket-name/
        • Remplacez your-log-bucket-name par le nom réel du bucket.
    • Un URI est: sélectionnez Répertoire ou Répertoire incluant des sous-répertoires.
    • Options de suppression de la source: sélectionnez l'option de suppression en fonction de vos préférences.

    • ID de clé d'accès: clé d'accès utilisateur ayant accès au bucket S3.

    • Clé d'accès secrète: clé secrète de l'utilisateur ayant accès au bucket S3.

    • Espace de noms des éléments: espace de noms des éléments.

    • Libellés d'ingestion: libellé à appliquer aux événements de ce flux.

  8. Cliquez sur Suivant.

  9. Vérifiez la configuration de votre nouveau flux dans l'écran Finaliser, puis cliquez sur Envoyer.

Tableau de mappage UDM

Champ du journal Mappage UDM Logique
awsAccountId target.user.group_identifiers ID du compte AWS associé à l'événement.
digestPublicKeyFingerprint target.file.sha1 Empreinte de la clé publique utilisée pour signer le récapitulatif.
digestPublicKeyFingerprint target.resource.attribute.labels.value Empreinte de la clé publique utilisée pour signer le récapitulatif.
digestS3Bucket target.resource.name Nom du bucket S3 dans lequel le récapitulatif est stocké.
digestS3Object target.file.full_path Chemin d'accès à l'objet récapitulatif dans le bucket S3.
digestSignatureAlgorithm network.tls.cipher Algorithme utilisé pour signer le condensé.
digestSignatureAlgorithm target.resource.attribute.labels.value Algorithme utilisé pour signer le condensé.
digestStartTime metadata.event_timestamp Heure de début de la période du récapitulatif. Utilisé comme heure de l'événement si eventTime n'est pas disponible.
eventCategory security_result.category_details Catégorie de l'événement.
eventID metadata.product_log_id ID unique de l'événement.
eventName metadata.product_event_type Nom de l'événement.
eventName security_result.summary Nom de l'événement, utilisé pour générer le résumé des résultats de sécurité.
eventSource target.application Source de l'événement.
eventTime metadata.event_timestamp Heure à laquelle l'événement s'est produit.
eventType additional.fields.value.string_value Le type d'événement.
logFiles.hashValue about.file.sha256 Hachage SHA-256 du fichier journal.
logFiles.s3Bucket about.resource.name Nom du bucket S3 dans lequel le fichier journal est stocké.
logFiles.s3Object about.file.full_path Chemin d'accès à l'objet de fichier journal dans le bucket S3.
previousDigestHashValue target.file.sha256 Hachage SHA-256 du condensé précédent.
recipientAccountId target.resource.attribute.labels.value ID du compte AWS du destinataire de l'événement.
Records.awsRegion principal.location.name Région AWS dans laquelle l'événement s'est produit.
Records.errorCode security_result.rule_id Code d'erreur (le cas échéant) associé à la requête.
Records.errorMessage security_result.description Message d'erreur, le cas échéant, associé à la requête.
Records.eventCategory security_result.category_details Catégorie de l'événement.
Records.eventID metadata.product_log_id ID unique de l'événement.
Records.eventName metadata.product_event_type Nom de l'événement.
Records.eventName security_result.summary Nom de l'événement, utilisé pour générer le résumé des résultats de sécurité.
Records.eventSource target.application Source de l'événement.
Records.eventTime metadata.event_timestamp Heure à laquelle l'événement s'est produit.
Records.eventType additional.fields.value.string_value Le type d'événement.
Records.requestID target.resource.attribute.labels.value ID de la requête.
Records.requestParameters.groupName target.group.group_display_name Nom du groupe, le cas échéant, associé à la requête.
Records.requestParameters.userName src.user.userid Nom de l'utilisateur, le cas échéant, associé à la requête.
Records.requestParameters.userName src.user.user_display_name Nom de l'utilisateur, le cas échéant, associé à la requête.
Records.responseElements.ConsoleLogin security_action Résultat de la tentative de connexion à la console.
Records.responseElements.ConsoleLogin security_result.summary Résultat de la tentative de connexion à la console, utilisé pour générer le résumé des résultats de sécurité.
Records.sourceIPAddress principal.hostname Adresse IP du principal. Utilisé comme nom d'hôte si l'adresse IP n'est pas valide.
Records.sourceIPAddress principal.ip Adresse IP du principal.
Records.tlsDetails.cipherSuite network.tls.cipher Suite de chiffrement utilisée pour la connexion TLS.
Records.tlsDetails.tlsVersion network.tls.version Version TLS utilisée pour la connexion.
Records.userAgent network.http.user_agent User-agent de la requête.
Records.userIdentity.accessKeyId additional.fields.value.string_value ID de clé d'accès utilisé pour la requête.
Records.userIdentity.accountId principal.user.group_identifiers ID de compte AWS de l'utilisateur.
Records.userIdentity.arn principal.user.attribute.labels.value ARN de l'utilisateur.
Records.userIdentity.arn target.user.userid ARN de l'utilisateur. Utilisé comme ID utilisateur si le nom d'utilisateur n'est pas disponible.
Records.userIdentity.principalId principal.user.product_object_id ID principal de l'utilisateur.
Records.userIdentity.sessionContext.attributes.mfaAuthenticated principal.user.attribute.labels.value Indique si l'authentification multifacteur a été utilisée pour la requête.
Records.userIdentity.sessionContext.sessionIssuer.userName principal.user.userid Nom d'utilisateur de l'utilisateur qui a lancé la session.
Records.userIdentity.type principal.resource.type Type d'identité utilisé pour la requête.
Records.userIdentity.userName target.user.userid Le nom d'utilisateur de l'utilisateur.
- extensions.auth.mechanism Définissez-le sur "REMOTE".
- metadata.event_type Définissez cette valeur sur "STATUS_UPDATE", "USER_RESOURCE_ACCESS", "USER_LOGIN" ou "GENERIC_EVENT" en fonction du nom de l'événement.
- metadata.log_type Définissez-le sur "AWS_CONTROL_TOWER".
- metadata.product_name Défini sur "AWS Control Tower".
- metadata.vendor_name Définissez cette valeur sur "AWS".
- principal.asset.attribute.cloud.environment Définissez-le sur "AMAZON_WEB_SERVICES".
- security_result.action Définissez cette valeur sur "ALLOW" ou "BLOCK" en fonction du code d'erreur.
- security_result.severity Définissez-le sur "INFORMATIONAL".

Modifications

2024-03-17

  • Amélioration:
  • Mappage de "req.userIdentity.arn" et "req.userIdentity.userName" sur "target.user.userid".

2023-01-04

  • Amélioration:
  • Initialisation des variables pour éviter la réplication des données dans la boucle For.

2022-12-15

  • Amélioration:
  • Mappage de "metadata.vendor_name" sur "AWS".
  • Mappage de "metadata.product_name" sur "AWS Control Tower".
  • Mappage de "metadata.event_type" sur "USER_LOGIN" lorsque "eventName" est "ConsoleLogin".
  • Mappage de "security_result.severity" sur "INFORMATIONAL" lorsque "eventName" est "ConsoleLogin".

2022-11-17

  • Amélioration:
  • Mappage de "req.userIdentity.userName" et "req.userIdentity.sessionContext.sessionIssuer.userName" sur "target.user.id".
  • Mappage de "ConsoleLogin:Success" sur "security_result.action".
  • Informations sur le port mappées de "sourceIPAddress" à "principal.port".

2022-10-31

  • Analyseur nouvellement créé.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.