Collecter les journaux Amazon CloudFront

Compatible avec:

Ce document explique comment collecter les journaux Amazon CloudFront en configurant un flux Google Security Operations.

Pour en savoir plus, consultez la section Présentation de l'ingestion de données dans Google Security Operations.

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_CLOUDFRONT.

Avant de commencer

Assurez-vous que le bucket Amazon S3 est créé. Pour en savoir plus, consultez Créer votre premier bucket S3.

Configurer Amazon CloudFront

  1. Connectez-vous à la console AWS Management.
  2. Accédez à la console Amazon S3 et créez le bucket Amazon S3.
  3. Pour activer la journalisation, sélectionnez Activé.
  4. Dans le champ Bucket for logs (Bucket pour les journaux), spécifiez le nom du bucket Amazon S3.
  5. Dans le champ Préfixe de journal, spécifiez un préfixe facultatif.
  6. Une fois les fichiers de journaux stockés dans le bucket Amazon S3, créez une file d'attente SQS et associez-la au bucket Amazon S3.

Identifier les points de terminaison pour la connectivité

Vérifiez les stratégies de clé IAM et de clé KMS requises pour S3, SQS et KMS.

En fonction du service et de la région, identifiez les points de terminaison de connectivité en vous reportant à la documentation AWS suivante:

Configurer un flux dans Google Security Operations pour ingérer les journaux Amazon CloudFront

  1. Sélectionnez Paramètres du SIEM > Flux.
  2. Cliquez sur Ajouter.
  3. Saisissez un nom unique pour le nom du flux.
  4. Sélectionnez Amazon S3 ou Amazon SQS comme Type de source.
  5. Sélectionnez AWS CloudFront comme Type de journal.
  6. Cliquez sur Suivant.
  7. Google Security Operations prend en charge la collecte de journaux à l'aide de l'ID de clé d'accès et de la méthode secrète. Pour créer un ID de clé d'accès et un secret, consultez Configurer l'authentification de l'outil avec AWS.
  8. En fonction de la configuration Amazon CloudFront que vous avez créée, spécifiez des valeurs pour les champs suivants.
    • Si vous utilisez Amazon S3, spécifiez les valeurs des champs suivants :
      • Région
      • URI S3
      • Un URI est un
      • Option de suppression de la source
    • Si vous utilisez Amazon SQS, spécifiez les valeurs des champs suivants :
      • Région
      • Nom de la file d'attente
      • Numéro de compte
      • ID de clé d'accès de la file d'attente
      • Clé d'accès secrète mise en file d'attente
      • Option de suppression de la source
  9. Cliquez sur Suivant, puis sur Envoyer.

Pour envoyer les journaux Amazon CloudFront au bucket Amazon S3, consultez Configurer et utiliser des journaux standards (journaux d'accès).

Pour en savoir plus sur les flux Google Security Operations, consultez la documentation sur les flux Google Security Operations. Pour en savoir plus sur les exigences de chaque type de flux, consultez la section Configuration des flux par type. Si vous rencontrez des problèmes lorsque vous créez des flux, contactez l'assistance Google Security Operations.

Référence de mappage de champ

Cet analyseur extrait des champs des journaux AWS CloudFront au format SYSLOG ou JSON, et les normalise dans l'UDM. Il utilise des modèles grok pour analyser les chaînes de messages, gère diverses transformations de données (par exemple, les conversions de type, le renommage) et enrichit les données avec un contexte supplémentaire, comme l'analyse de l'agent utilisateur et l'identification du protocole d'application.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
c-ip principal.ip Mappage direct. Également mappé sur principal.asset.ip.
c-port principal.port Mappage direct.
cs(Cookie) additional.fields[].key: "cookie"
additional.fields[].value.string_value: mappé directement.
Mappage conditionnel si cs(Cookie) est présent et que agent ne contient pas "://".
cs(Host) principal.hostname Mappage direct. Également mappé sur principal.asset.hostname. Utilisé pour créer target.url si d'autres champs d'URL ne sont pas disponibles.
cs(Referer) network.http.referral_url Mappage direct.
cs(User-Agent) network.http.user_agent Mappage direct. Également mappé sur network.http.parsed_user_agent et analysé en composants s'il ne contient pas "://".
cs-bytes network.sent_bytes Mappage direct. Converti en entier sans signature.
cs-method network.http.method Mappage direct.
cs-protocol network.application_protocol Mappé après conversion en majuscules. Si la valeur n'est pas reconnue comme un protocole d'application standard et que cs-protocol-version contient "HTTP", network.application_protocol est défini sur "HTTP".
dport target.port Mappage direct. Converti en entier.
edge_location principal.location.name Mappage direct.
fle-encrypted-fields additional.fields[].key: "fle-encrypted-fields"
additional.fields[].value.string_value: mappé directement.
Mappé de manière conditionnelle, le cas échéant.
fle-status additional.fields[].key: "fle-status"
additional.fields[].value.string_value: mappé directement.
Mappé de manière conditionnelle, le cas échéant.
host principal.hostname, principal.asset.hostname Mappage direct.
id principal.asset_id Mappé directement avec le préfixe "id: ".
ip target.ip, target.asset.ip Mappage direct.
log_id metadata.product_log_id Mappage direct.
resource additional.fields[].key: "resource"
additional.fields[].value.string_value: mappé directement.
Mappé de manière conditionnelle, le cas échéant.
result_type additional.fields[].key: "result_type"
additional.fields[].value.string_value: mappé directement.
Mappé de manière conditionnelle, le cas échéant.
sc-bytes network.received_bytes Mappage direct. Converti en entier sans signature.
sc-content-len additional.fields[].key: "sc-content-len"
additional.fields[].value.string_value: mappé directement.
Mappé de manière conditionnelle, le cas échéant.
sc-content-type additional.fields[].key: "sc-content-type"
additional.fields[].value.string_value: mappé directement.
Mappé de manière conditionnelle, le cas échéant.
sc-status network.http.response_code Mappage direct. Converti en entier.
ssl-cipher network.tls.cipher Mappage direct.
ssl-protocol network.tls.version Mappage direct.
timestamp metadata.event_timestamp Analysé et mappé, le cas échéant. Différents formats sont acceptés.
ts metadata.event_timestamp Analysé et mappé, le cas échéant. Le format ISO 8601 est attendu.
url target.url Mappage direct.
url_back_to_product metadata.url_back_to_product Mappage direct.
x-edge-detailed-result-type additional.fields[].key: "x-edge-detailed-result-type"
additional.fields[].value.string_value: mappé directement.
Mappé de manière conditionnelle, le cas échéant.
x-edge-location additional.fields[].key: "x-edge-location"
additional.fields[].value.string_value: mappé directement.
Mappé de manière conditionnelle, le cas échéant.
x-edge-request-id additional.fields[].key: "x-edge-request-id"
additional.fields[].value.string_value: mappé directement.
Mappé de manière conditionnelle, le cas échéant.
x-edge-response-result-type additional.fields[].key: "x-edge-response-result-type"
additional.fields[].value.string_value: mappé directement.
Mappé de manière conditionnelle, le cas échéant.
x-edge-result-type additional.fields[].key: "x-edge-result-type"
additional.fields[].value.string_value: mappé directement.
Mappé de manière conditionnelle, le cas échéant.
x-forwarded-for target.ip, target.asset.ip Mappage direct. Si plusieurs adresses IP sont présentes (séparées par une virgule), elles sont divisées et fusionnées dans les champs UDM respectifs.
x-host-header target.hostname, target.asset.hostname Mappage direct. Définissez cette valeur sur "NETWORK_HTTP" si ip ou x-forwarded-for et http_verb sont présents. Sinon, définissez-le sur "GENERIC_EVENT". Code codé en dur sur "AWS_CLOUDFRONT". Code dur "AWS CloudFront". Code dur "AMAZON". Heure d'ingestion de l'entrée de journal dans Google Security Operations.

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