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 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 journaux brutes au format UDM structuré. Les informations de ce document s'appliquent au parseur avec le libellé d'ingestion AWS_CLOUDFRONT.

Avant de commencer

Assurez-vous que le bucket Amazon S3 a été 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. Cliquez sur Activé pour activer la journalisation.
  4. Dans le champ Bucket pour les journaux, spécifiez le nom du bucket Amazon S3.
  5. Dans le champ Préfixe du journal, spécifiez un préfixe facultatif.
  6. Une fois les fichiers 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 IAM (Identity and Access Management) et de clé KMS requises pour S3, SQS et KMS.

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

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 > Ajouter
  • Plate-forme de contenu> Packs de contenu> Premiers pas

Configurer le flux AWS CloudFront

  1. Cliquez sur le pack Amazon Cloud Platform.
  2. Recherchez le type de journal AWS CloudFront.
  3. Spécifiez les valeurs des champs suivants.

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

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

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

    • 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

    • Nom du flux : valeur préremplie qui identifie le flux.
    • 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.
  4. Cliquez sur Créer un flux.

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

Référence du mappage de champs

Ce parseur extrait les 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 et les renommages), et enrichit les données avec un contexte supplémentaire, comme l'analyse de l'agent utilisateur et l'identification du protocole d'application.

Table de mappage UDM

Champ de journal Mappage UDM Logique
c-ip principal.ip Mappé directement. Également mappé sur principal.asset.ip.
c-port principal.port Mappé directement.
cs(Cookie) additional.fields[].key : "cookie"
additional.fields[].value.string_value : mappé directement.
Mappé de manière conditionnelle si cs(Cookie) est présent et que agent ne contient pas "://".
cs(Host) principal.hostname Mappé directement. Également mappé sur principal.asset.hostname. Utilisé pour construire le target.url si d'autres champs d'URL ne sont pas disponibles.
cs(Referer) network.http.referral_url Mappé directement.
cs(User-Agent) network.http.user_agent Mappé directement. Également mappé sur network.http.parsed_user_agent et analysé dans ses composants s'il ne contient pas "://".
cs-bytes network.sent_bytes Mappé directement. Converti en entier non signé.
cs-method network.http.method Mappé directement.
cs-protocol network.application_protocol Mappé après conversion en majuscules. Si la valeur n'est pas reconnue comme protocole d'application standard et que cs-protocol-version contient "HTTP", network.application_protocol est défini sur "HTTP".
dport target.port Mappé directement. Converti en entier.
edge_location principal.location.name Mappé directement.
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 Mappé directement.
id principal.asset_id Mappé directement avec le préfixe "id: ".
ip target.ip, target.asset.ip Mappé directement.
log_id metadata.product_log_id Mappé directement.
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 Mappé directement. Converti en entier non signé.
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 Mappé directement. Converti en entier.
ssl-cipher network.tls.cipher Mappé directement.
ssl-protocol network.tls.version Mappé directement.
timestamp metadata.event_timestamp Analysé et mis en correspondance, si disponible. Différents formats sont acceptés.
ts metadata.event_timestamp Analysé et mis en correspondance, si disponible. Le format ISO8601 est attendu.
url target.url Mappé directement.
url_back_to_product metadata.url_back_to_product Mappé directement.
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 Mappé directement. 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 Mappé directement. Définissez sur "NETWORK_HTTP" si ip ou x-forwarded-for et http_verb sont présents. Sinon, définissez-le sur "GENERIC_EVENT". Codé en dur sur "AWS_CLOUDFRONT". Codé en dur sur "AWS CloudFront". Codé en dur sur "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.