Collecter les journaux AWS Control Tower
Ce document explique comment ingérer des journaux AWS Control Tower dans Google Security Operations. AWS Control Tower permet de gérer la gouvernance, la conformité et la surveillance de la sécurité dans plusieurs comptes AWS. Cette intégration vous permet d'analyser les journaux d'AWS Control Tower pour une meilleure visibilité et une meilleure sécurité.
Avant de commencer
Assurez-vous de remplir les conditions préalables suivantes :
- Instance Google SecOps
- Accès privilégié à AWS
Configurer le bucket Amazon S3
- Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur : Créer un bucket.
- Enregistrez le nom et la région du bucket pour une utilisation ultérieure.
- Créez un utilisateur en suivant ce guide : Créer un utilisateur IAM.
- Sélectionnez l'utilisateur créé.
- Sélectionnez l'onglet Informations d'identification de sécurité.
- Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
- Sélectionnez Service tiers comme Cas d'utilisation.
- Cliquez sur Suivant.
- Facultatif : ajoutez un tag de description.
- Cliquez sur Créer une clé d'accès.
- Cliquez sur Télécharger le fichier CSV pour enregistrer la clé d'accès et la clé d'accès secrète pour une utilisation ultérieure.
- Cliquez sur OK.
- Sélectionnez l'onglet Autorisations.
- Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
- Sélectionnez Ajouter des autorisations.
- Sélectionnez Joindre directement des règles.
- Recherchez et sélectionnez les règles AmazonS3FullAccess et CloudWatchLogsFullAccess.
- Cliquez sur Suivant.
- Cliquez sur Ajouter des autorisations.
Configurer CloudTrail dans AWS Control Tower
- Connectez-vous à l'AWS Management Console.
- Accédez à AWS Control Tower.
- Dans la barre de recherche, saisissez CloudTrail et sélectionnez-le dans la liste des services.
Cliquez sur Create Trail (Créer un parcours) pour créer un parcours.
Spécifiez les paramètres de la trace :
- Nom du sentier : donnez un nom explicite au sentier (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 Lambda pour capturer l'activité détaillée des données.
- Facultatif : Validation des fichiers journaux : activez cette option pour vous assurer que les fichiers journaux ne sont pas falsifiés une fois stockés.
Dans le sélecteur Événement, choisissez d'enregistrer les événements de gestion et les événements de données.
Configurer CloudTrail
- Accédez à la console IAM AWS.
- Cliquez sur Rôles.
- Recherchez le rôle utilisé par CloudTrail
AWSServiceRoleForCloudTrail
(il est créé automatiquement lorsque vous configurez CloudTrail). - Dans l'onglet Autorisations du rôle, cliquez sur Attacher des règles.
- Recherchez
CloudTrailS3DeliveryPolicy
. - Cochez la case à côté du règlement
CloudTrailS3DeliveryPolicy
. - Cliquez sur Attach policy (Attacher la stratégie).
- Accédez à la console AWS CloudTrail.
- Dans la section Emplacement de stockage, sélectionnez S3 comme destination des fichiers journaux.
- Sélectionnez le bucket S3 que vous avez créé précédemment.
- Cliquez sur Autoriser lorsque vous êtes invité à accorder à CloudTrail l'autorisation d'écrire des journaux dans le bucket de votre choix.
- Vérifiez vos paramètres, puis cliquez sur Créer (ou Enregistrer les modifications si vous modifiez un parcours existant).
Configurer des flux
Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :
- Paramètres SIEM> Flux
- Plate-forme de contenu > Packs de contenu
Configurer des flux à partir de Paramètres SIEM > Flux
Pour configurer plusieurs flux pour différents types de journaux dans cette famille de produits, consultez Configurer des flux par produit.
Pour configurer un seul flux :
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux AWS Control Tower).
- Sélectionnez Amazon S3 comme Type de source.
- Sélectionnez AWS Control Tower comme type de journal.
- Cliquez sur Suivant.
Spécifiez les valeurs des paramètres d'entrée suivants :
- 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 de votre bucket S3.
- Remplacez
- L'URI est : sélectionnez Répertoire ou Répertoire incluant les sous-répertoires, selon la structure de votre bucket.
Options de suppression de la source : sélectionnez l'option de suppression en fonction de vos préférences d'ingestion.
ID de clé d'accès : clé d'accès de l'utilisateur disposant des autorisations de lecture du bucket S3.
Clé d'accès secrète : clé secrète de l'utilisateur avec les autorisations nécessaires pour lire le bucket S3.
Espace de noms de l'élément : espace de noms de l'élément.
Libellés d'ingestion : libellé à appliquer aux événements de ce flux.
Cliquez sur Suivant.
Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
Configurer des flux depuis le Hub de contenu
Indiquez les valeurs des champs suivants :
- 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 de votre bucket S3.
- Remplacez
- L'URI est : sélectionnez Répertoire ou Répertoire incluant les sous-répertoires, selon la structure de votre bucket.
- Options de suppression de la source : sélectionnez l'option de suppression en fonction de vos préférences d'ingestion.
ID de clé d'accès : clé d'accès de l'utilisateur disposant des autorisations de lecture du bucket S3.
Clé d'accès secrète : clé secrète de l'utilisateur avec les autorisations nécessaires pour lire le bucket S3.
Options avancées
- Nom du flux : valeur préremplie qui identifie le flux.
- Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
- Espace de noms de l'élément : espace de noms associé au flux.
- Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.
Table 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ésumé. |
digestPublicKeyFingerprint | target.resource.attribute.labels.value | Empreinte de la clé publique utilisée pour signer le résumé. |
digestS3Bucket | target.resource.name | Nom du bucket S3 dans lequel le résumé est stocké. |
digestS3Object | target.file.full_path | Chemin d'accès à l'objet de synthèse 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 | Identifiant 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écapitulatif 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 de 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 associé à la requête, le cas échéant. |
Records.errorMessage | security_result.description | Message d'erreur associé à la requête, le cas échéant. |
Records.eventCategory | security_result.category_details | Catégorie de l'événement. |
Records.eventID | metadata.product_log_id | Identifiant 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écapitulatif 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 demande. |
Records.requestParameters.groupName | target.group.group_display_name | Nom du groupe, le cas échéant, associé à la demande. |
Records.requestParameters.userName | src.user.userid | Nom de l'utilisateur, le cas échéant, associé à la demande. |
Records.requestParameters.userName | src.user.user_display_name | Nom de l'utilisateur, le cas échéant, associé à la demande. |
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écapitulatif des résultats de sécurité. |
Records.sourceIPAddress | principal.hostname | Adresse IP du compte principal. Utilisé comme nom d'hôte s'il ne s'agit pas d'une adresse IP valide. |
Records.sourceIPAddress | principal.ip | Adresse IP du compte principal. |
Records.tlsDetails.cipherSuite | network.tls.cipher | Suite de chiffrement utilisée pour la connexion TLS. |
Records.tlsDetails.tlsVersion | network.tls.version | Version de 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 ayant émis 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 la valeur sur "STATUS_UPDATE", "USER_RESOURCE_ACCESS", "USER_LOGIN" ou "GENERIC_EVENT" en fonction de eventName. |
- | metadata.log_type | Défini sur "AWS_CONTROL_TOWER". |
- | metadata.product_name | Définissez la valeur sur "AWS Control Tower". |
- | metadata.vendor_name | Défini sur "AWS". |
- | principal.asset.attribute.cloud.environment | Défini sur "AMAZON_WEB_SERVICES". |
- | security_result.action | Définissez la valeur sur "ALLOW" (AUTORISER) ou "BLOCK" (BLOQUER) en fonction du code d'erreur. |
- | security_result.severity | Définissez-le sur "INFORMATIONAL". |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.