Collecter les journaux AWS CloudTrail

Compatible avec :

Ce document explique comment collecter les journaux AWS CloudTrail en configurant un flux Google Security Operations et comment les champs de journal sont mappés aux champs du modèle de données unifié (UDM) de Google SecOps.

Pour en savoir plus, consultez Ingestion de données dans Google SecOps.

Un déploiement typique comprend AWS CloudTrail et le flux Google SecOps configuré pour envoyer des journaux à Google SecOps. Votre déploiement peut être différent du déploiement typique décrit dans ce document. Le déploiement contient les composants suivants :

  • AWS CloudTrail : plate-forme qui collecte les journaux.

  • AWS S3 : plate-forme qui stocke les journaux.

  • Flux Google SecOps : flux Google SecOps qui récupère les journaux depuis AWS S3 et les écrit dans Google SecOps.

  • Google SecOps : plate-forme qui conserve et analyse les journaux d'AWS CloudTrail.

Un libellé d'ingestion identifie l'analyseur qui normalise les données de journal brutes au format UDM structuré. Les informations de ce document s'appliquent à l'analyseur avec le libellé d'ingestion AWS_CLOUDTRAIL.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Compte AWS
  • Conditions requises pour utiliser AWS CloudTrail remplies. Pour en savoir plus, consultez Configuration d'AWS CloudTrail.
  • Tous les systèmes de l'architecture de déploiement utilisent le fuseau horaire UTC.

Étapes de base pour ingérer des journaux depuis S3 avec SQS

Cette section décrit les étapes de base pour ingérer des journaux AWS CloudTrail dans votre instance Google SecOps. Ces étapes expliquent comment procéder à l'aide d'Amazon S3 avec Amazon SQS comme type de source de flux.

Configurer AWS CloudTrail et S3

Dans cette procédure, vous configurez les journaux AWS CloudTrail pour qu'ils soient écrits dans un bucket S3.

  1. Dans la console AWS, recherchez CloudTrail.
  2. Cliquez sur Create trail (Créer un canal).
  3. Indiquez un Trail name (Nom du canal).
  4. Sélectionnez Create new S3 bucket (Créer un bucket S3). Vous pouvez également choisir d'utiliser un bucket S3 existant.
  5. Indiquez un nom pour AWS KMS alias (Alias AWS KMS) ou choisissez une AWS KMS Key (Clé AWS KMS) existante.
  6. Vous pouvez laisser les autres paramètres par défaut, puis cliquer sur Next (Suivant).
  7. Choisissez un Event type (Type d'événement), ajoutez des Data events (Événements de données) si nécessaire, puis cliquez sur Next (Suivant).
  8. Vérifiez les paramètres dans Review and create (Vérifier et créer), puis cliquez sur Create trail (Créer un canal).
  9. Dans la console AWS, recherchez Amazon S3 Buckets (Buckets Amazon S3).
  10. Cliquez sur le bucket de journaux que vous venez de créer, puis sélectionnez le dossier AWSLogs. Cliquez ensuite sur Copy S3 URI (Copier l'URI S3) et enregistrez-le pour l'utiliser lors des étapes suivantes.

Configurer une file d'attente SQS standard et SNS

Si vous utilisez une file d'attente SQS, il doit s'agir d'une file d'attente standard, et non d'une file d'attente FIFO.

  1. Activez AWS CloudTrail et configurez-le pour qu'il envoie des journaux à un bucket S3 à l'aide d'un canal nouveau ou existant.
  2. Ouvrez la console AWS SNS et créez un sujet standard. Nommez-le, par exemple, CloudTrail-Notification-Topic.
  3. Créez une file d'attente SQS à l'aide de la console AWS SQS, par exemple CloudTrail-Notification-Queue, et mettez à jour sa stratégie d'accès pour autoriser l'ARN du sujet SNS à envoyer des messages. Pour en savoir plus sur la création de files d'attente SQS, consultez Premiers pas avec Amazon SQS.

    Exemple d'extrait de stratégie SQS :

    {
       "Version": "2012-10-17",
       "Id": `PolicyForSNS`,
       "Statement": [
          {
             "Sid": "AllowSNS",
             "Effect": "Allow",
             "Principal": { "Service": "sns.amazonaws.com" },
             "Action": "SQS:SendMessage",
             "Resource": "arn:aws:sqs:REGION:ACCOUNT_ID:CloudTrail-Notification-Queue",
             "Condition": {
             "ArnEquals": { "aws:SourceArn": "arn:aws:sns:REGION:ACCOUNT_ID:CloudTrail-Notification-Topic"}
             }
          }
       ]
    }
    
  4. Accédez à SNS topic (Sujet SNS) → Subscriptions (Abonnements) → Create subscription (Créer un abonnement), définissez le protocole sur SQS et le point de terminaison sur l'ARN de la file d'attente SQS.

  5. CloudTrail n'envoie pas de nouveaux journaux à SNS de manière native. Pour activer les notifications, vous pouvez utiliser un sélecteur d'événements CloudTrail pour les événements de gestion ou l'intégration de CloudTrail à CloudWatch Logs, puis créer une règle d'événement CloudWatch qui déclenche des notifications en définissant un sujet SNS comme cible. Pour en savoir plus, consultez Configurer les notifications sur votre bucket S3.

    Exemple de modèle d'événement :

    {
       "source": ["aws.s3"],
       "detail-type": ["AWS API Call via CloudTrail"],
       "detail": {
          "eventName": ["PutObject"],
          "requestParameters": {
             "bucketName": [`CloudTrail-Notification-Topic`]
          }
       }
    }
    
  6. Assurez-vous que les rôles ou stratégies IAM autorisent CloudWatch Events à publier sur SNS et que SNS est autorisé à envoyer des messages à SQS.

Configurer un utilisateur AWS IAM

Configurez un utilisateur AWS IAM que Google SecOps utilisera pour accéder à la fois à la file d'attente SQS (le cas échéant) et au bucket S3.

  1. Dans la console AWS, recherchez IAM.
  2. Cliquez sur Users (Utilisateurs), puis sur l'écran suivant, cliquez sur Create Users (Créer des utilisateurs).
  3. Indiquez un nom pour l'utilisateur, par exemple chronicle-feed-user, puis sélectionnez Provide user access to the AWS Management Console (Fournir un accès utilisateur à AWS Management Console).
  4. Sélectionnez Attach existing policies directly (Joindre directement des règles existantes), puis sélectionnez AmazonS3ReadOnlyAccess ou AmazonS3FullAccess, selon vos besoins. AmazonS3FullAccess est utilisé si Google SecOps doit effacer les buckets S3 après avoir lu les journaux, afin d'optimiser les coûts de stockage AWS S3.
  5. Comme alternative recommandée à l'étape précédente, vous pouvez limiter davantage l'accès au bucket S3 spécifié uniquement en créant une stratégie personnalisée. Cliquez sur Create policy (Créer une stratégie), puis suivez la documentation AWS pour créer une stratégie personnalisée.
  6. Lorsque vous appliquez une stratégie, assurez-vous d'avoir inclus sqs:DeleteMessage. Google SecOps ne peut pas supprimer les messages si l'autorisation sqs:DeleteMessage n'est pas associée à la file d'attente SQS. Tous les messages sont accumulés côté AWS, ce qui entraîne un délai, car Google SecOps tente à plusieurs reprises de transférer les mêmes fichiers.
  7. Cliquez sur Next:Tags (Suivant : Tags).
  8. Ajoutez des tags si nécessaire, puis cliquez sur Next:Review (Suivant : Vérification).
  9. Vérifiez la configuration, puis cliquez sur Create user (Créer un utilisateur).
  10. Une fois l'utilisateur créé, accédez à l'onglet Security Credentials (Identifiants de sécurité), puis cliquez sur Create Access Key (Créer une clé d'accès).
  11. Choisissez CLI , puis cliquez sur Next:Tags (Suivant : Tags).
  12. Ajoutez des tags si nécessaire, puis cliquez sur Create Access Key: Review (Créer une clé d'accès : Vérification).
  13. Copiez l'ID de clé d'accès et la clé d'accès secrète de l'utilisateur créé pour les utiliser à l'étape suivante.

    Pour trouver le SubjectID, procédez comme suit :

    1. Commencez le processus de configuration du flux AWS CloudTrail dans Google SecOps.
    2. Accédez au bucket Amazon S3 désigné et examinez vos journaux AWS CloudTrail pour trouver les entrées liées à la tentative de configuration du flux.
    3. Ouvrez l'entrée de journal pertinente et recherchez la section userIdentity dans les données JSON brutes.
    4. Dans cette section, recherchez le champ principalId ou userName. La valeur numérique indiquée ici est votre SubjectID unique.
    5. Copiez ce SubjectID et ajoutez-le à la stratégie d'approbation de votre rôle AWS IAM pour accorder les autorisations d'accès nécessaires.

Configurer les autorisations de clé KMS

Une clé KMS est requise pour déchiffrer les journaux CloudTrail, qui sont chiffrés côté serveur. AWS KMS offre un chiffrement et une sécurité améliorés pour les données sensibles stockées dans Amazon S3.

  1. Dans la console AWS, recherchez Key Management Service (KMS) (Service de gestion des clés).
  2. Cliquez sur Create Key:Next (Créer une clé : Suivant).
  3. Ajoutez un Alias pour la clé. Si nécessaire, ajoutez éventuellement une Description et des Tags. Cliquez sur Next: Review (Suivant : Vérification).
  4. Après avoir vérifié la configuration, cliquez sur Next (Suivant).
  5. Sélectionnez les Key Users (Utilisateurs de la clé) qui doivent avoir accès à cette clé, puis cliquez sur Finish (Terminer).

Configurer des flux

Il existe deux points d'entrée différents pour configurer des flux dans la plate-forme Google SecOps :

  • SIEM Settings > Feeds > Add New (Paramètres SIEM > Flux > Ajouter)
  • Content Hub > Content Packs > Get Started (Hub de contenu > Packs de contenu > Premiers pas)

Configurer le flux AWS CloudTrail

  1. Cliquez sur le pack Amazon Cloud Platform.
  2. Dans le type de journal AWS CloudTrail, spécifiez les valeurs suivantes :
  3. Indiquez les valeurs des champs suivants :

    • Source Type (Type de source) : Amazon SQS V2
    • Queue Name (Nom de la file d'attente) : nom de la file d'attente SQS à partir de laquelle lire
    • S3 URI (URI S3) : URI du bucket.
      • s3://your-log-bucket-name/
        • Remplacez your-log-bucket-name par le nom réel de votre bucket S3.
    • Source deletion options (Options de suppression de la source) : sélectionnez l'option de suppression en fonction de vos préférences d'ingestion.

    • Maximum File Age (Âge maximal des fichiers) : incluez les fichiers modifiés au cours des derniers jours. La valeur par défaut est de 180 jours.

    • SQS Queue Access Key ID (ID de clé d'accès à la file d'attente SQS) : clé d'accès au compte qui est une chaîne alphanumérique de 20 caractères.

    • SQS Queue Secret Access Key (Clé d'accès secrète à la file d'attente SQS) : clé d'accès au compte qui est une chaîne alphanumérique de 40 caractères.

    Options avancées

    • Feed Name (Nom du flux) : valeur préremplie qui identifie le flux.
    • Asset Namespace (Espace de noms de l'actif) : espace de noms associé au flux.
    • Ingestion Labels (Libellés d'ingestion) : libellés appliqués à tous les événements de ce flux.
  4. Cliquez sur Create feed (Créer un flux).

Pour en savoir plus sur la configuration de plusieurs flux pour différents types de journaux au sein de cette famille de produits, consultez Configurer des flux par produit.

Types de journaux AWS CloudTrail compatibles

L'analyseur AWS CloudTrail est compatible avec les services suivants :

  • apigateway.amazonaws.com
  • appconfig.amazonaws.com
  • autoscaling.amazonaws.com
  • cloud9.amazonaws.com
  • cloudsearch.amazonaws.com
  • cloudshell.amazonaws.com
  • cloudtrail.amazonaws.com
  • config.amazonaws.com
  • devicefarm.amazonaws.com
  • ds.amazonaws.com
  • dynamodb.amazonaws.com
  • ec2-instance-connect.amazonaws.com
  • ec2.amazonaws.com
  • ecr-public.amazonaws.com
  • ecr.amazonaws.com
  • ecs.amazonaws.com
  • eks.amazonaws.com
  • elasticache.amazonaws.com
  • elasticloadbalancing.amazonaws.com
  • firehose.amazonaws.com
  • guardduty.amazonaws.com
  • health.amazonaws.com
  • iam.amazonaws.com
  • imagebuilder.amazonaws.com
  • kinesis.amazonaws.com
  • kinesisanalytics.amazonaws.com
  • kinesisvideo.amazonaws.com
  • kms.amazonaws.com
  • lambda.amazonaws.com
  • logs.amazonaws.com
  • macie2.amazonaws.com
  • monitoring.amazonaws.com
  • network-firewall.amazonaws.com
  • organizations.amazonaws.com
  • quicksight.amazonaws.com
  • ram.amazonaws.com
  • rds.amazonaws.com
  • resource-explorer-2.amazonaws.com
  • resource-groups.amazonaws.com
  • route53-recovery-readiness.amazonaws.com
  • route53.amazonaws.com
  • route53domains.amazonaws.com
  • route53resolver.amazonaws.com
  • s3-outposts.amazonaws.com
  • s3.amazonaws.com
  • s3express.amazonaws.com
  • secretsmanager.amazonaws.com
  • securityhub.amazonaws.com
  • ses.amazonaws.com
  • signin.amazonaws.com
  • ssm.amazonaws.com
  • sts.amazonaws.com
  • waf-regional.amazonaws.com
  • waf.amazonaws.com
  • wafv2.amazonaws.com

Formats de journaux AWS CloudTrail compatibles

L'analyseur AWS CloudTrail est compatible avec les journaux au format JSON.

Exemples de journaux AWS CloudTrail compatibles

  • JSON:

    {
      "Records": [{
          "eventVersion": "1.08",
          "userIdentity": {
              "type": "AssumedRole",
              "principalId": "AROAXELJRGZMPHEYTK4Q4:redlock",
              "arn": "arn:aws:sts::111111111111:assumed-role/PrismaCloudReadOnlyRole/redlock",
              "accountId": "111111111111",
              "accessKeyId": "ASIAXELJRGZMNUCV3DC4",
              "sessionContext": {
                  "sessionIssuer": {
                      "type": "Role",
                      "principalId": "AROAXELJRGZMPHEYTK4Q4",
                      "arn": "arn:aws:iam::111111111111:role/PrismaCloudReadOnlyRole",
                      "accountId": "111111111111",
                      "userName": "PrismaCloudReadOnlyRole"
                  },
                  "webIdFederationData": {},
                  "attributes": {
                      "creationDate": "2021-07-01T03:20:01Z",
                      "mfaAuthenticated": "false"
                  }
              }
          },
          "eventTime": "2021-07-01T03:35:42Z",
          "eventSource": "kms.amazonaws.com",
          "eventName": "DescribeKey",
          "awsRegion": "eu-west-1",
          "sourceIPAddress": "198.51.100.0",
          "userAgent": "aws-sdk-java/1.11.1025Linux/4.14.232-176.381.amzn2.x86_64OpenJDK_64-Bit_Server_VM/11.0.10+9java/11.0.10groovy/2.5.12vendor/AdoptOpenJDKcfg/retry-mode/legacy",
          "requestParameters": {
              "keyId": "11a011a1-1010-11a1-a0aa-c4e1a9367642"
          },
          "responseElements": null,
          "requestID": "11a011a1-1010-11a1-a0aa-604ac86fc50e",
          "eventID": "11a011a1-1010-11a1-a0aa-17ef2bdeb889",
          "readOnly": true,
          "resources": [{
              "accountId": "111111111111",
              "type": "AWS::KMS::Key",
              "ARN": "arn:aws:kms:eu-west-1:111111111111:key/11a011a1-1010-11a1-a0aa-c4e1a9367642"
          }],
          "eventType": "AwsApiCall",
          "managementEvent": true,
          "recipientAccountId": "111111111111",
          "eventCategory": "Management"
      }]
    }
    

Pour en savoir plus sur le mappage de champ et le mappage UDM, consultez Mappage de champ AWS CloudTrail.

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