Collecter les journaux Amazon CloudFront

Version de l'analyseur : 10.0

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.

Une étiquette 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 nombre 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 s'il est présent.
fle-status additional.fields[].key : "fle-status"
additional.fields[].value.string_value : mappé directement.
Mappé de manière conditionnelle s'il est présent.
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 s'il est présent.
result_type additional.fields[].key : "result_type"
additional.fields[].value.string_value : mappé directement.
Mappé de manière conditionnelle s'il est présent.
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 s'il est présent.
sc-content-type additional.fields[].key : "sc-content-type"
additional.fields[].value.string_value : mappé directement.
Mappé de manière conditionnelle s'il est présent.
sc-status network.http.response_code Mappé directement. Converti en nombre 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 s'il est présent.
x-edge-location additional.fields[].key : "x-edge-location"
additional.fields[].value.string_value : mappé directement.
Mappé de manière conditionnelle s'il est présent.
x-edge-request-id additional.fields[].key : "x-edge-request-id"
additional.fields[].value.string_value : mappé directement.
Mappé de manière conditionnelle s'il est présent.
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 s'il est présent.
x-edge-result-type additional.fields[].key : "x-edge-result-type"
additional.fields[].value.string_value : mappé directement.
Mappé de manière conditionnelle s'il est présent.
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.
cs_cookie event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
time-taken event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
time-to-first-byte event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
cribl_pipe event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
cs-referer event.idm.read_only_udm.network.http.referer Mappé à partir du journal des modifications
cs-uri-query event.idm.read_only_udm.network.http.url_details.query Mappé à partir du journal des modifications
cs-user-agent event.idm.read_only_udm.network.http.user_agent Mappé à partir du journal des modifications
cs-uri-stem event.idm.read_only_udm.target.url Mappé à partir du journal des modifications
x-forwarded-for security_result.detection_fields Mappé à partir du journal des modifications
avgrequestTime event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
htmlType event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
responseTime event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
securityKey event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
bytes event.idm.read_only_udm.network.sent_bytes Mappé à partir du journal des modifications
srcport event.idm.read_only_udm.src.port Mappé à partir du journal des modifications
encryptionType event.idm.read_only_udm.security_result.about.resource.name Mappé à partir du journal des modifications
hostname event.idm.read_only_udm.principal.hostname Mappé à partir du journal des modifications
scrip event.idm.read_only_udm.src.ip Mappé à partir du journal des modifications
targetip event.idm.read_only_udm.target.ip Mappé à partir du journal des modifications
targetip event.idm.read_only_udm.target.asset.ip Mappé à partir du journal des modifications
tlsvVersion event.idm.read_only_udm.network.tls.version Mappé à partir du journal des modifications
CloudFront-Is-Desktop-Viewer event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
CloudFront-Is-Mobile-Viewer event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
CloudFront-Is-SmartTV-Viewer event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
CloudFront-Is-Tablet-Viewer event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
vDetails event.idm.read_only_udm.network.http.user_agent Mappé à partir du journal des modifications
x-envoy-expected-rq-timeout-ms event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
x-envoy-external-address event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
x-envoy-original-authority event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
x-f5-cdn-tls-ja3 event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
x-f5-cdn-tls-ja4 event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
x-forwarded-proto event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
xc-trusted-source event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
ipType event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
method event.idm.read_only_udm.network.http.method Mappé à partir du journal des modifications
x-request-id event.idm.read_only_udm.metadata.product_log_id Mappé à partir du journal des modifications
version event.idm.read_only_udm.metadata.product_log_id Mappé à partir du journal des modifications
requestCode event.idm.read_only_udm.network.http.response_code Mappé à partir du journal des modifications
ipAddress event.idm.read_only_udm.principal.ip Mappé à partir du journal des modifications
uri_query event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
Bucket target.resource.name Mappé à partir du journal des modifications
accountID principal.user.userid Mappé à partir du journal des modifications
file target.file.full_path Mappé à partir du journal des modifications
region principal.location.country_or_region Mappé à partir du journal des modifications
msg metadata.description Mappé à partir du journal des modifications
service", "aggregation", "func", "requestID", "lpcltype", "lpclagg", "level" and "LoggingEnabled additional.fields Mappé à partir du journal des modifications

Journal des modifications

Afficher le journal des modifications pour ce parseur

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