Collecter les journaux d'accès au serveur AWS S3

Compatible avec:

Ce document explique comment collecter les journaux d'accès au serveur AWS S3 en configurant un flux Google Security Operations. L'analyseur extrait des champs à l'aide de modèles grok, gère les entrées JSON potentielles et mappe les champs extraits sur l'UDM. Il effectue des transformations de données, des conversions de type et une logique conditionnelle en fonction de la présence et des valeurs de champs spécifiques pour garantir une représentation précise de l'UDM.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer d'un accès privilégié à AWS.

Configurer la journalisation des accès au serveur AWS S3

Google SecOps prend en charge la collecte de journaux à l'aide d'Amazon S3 via Amazon SQS.

  1. Connectez-vous à la console AWS Management.
  2. Accédez à la console Amazon S3.
  3. Accédez à Amazon S3 > Buckets (Amazon S3 > Buckets).
  4. Sélectionnez un bucket existant ou créez-en un.
  5. Cliquez sur Propriétés.
  6. Dans la section Journalisation des accès au serveur, cliquez sur Modifier.
  7. Sélectionnez Activer.
  8. Dans le champ Bucket de destination, saisissez un nom pour le nouveau bucket dans lequel envoyer les objets d'enregistrement de journal, ou sélectionnez un bucket existant comme cible.
  1. Cliquez sur Enregistrer les modifications.
  2. Pour créer la file d'attente SQS du bucket S3, configurez une instance Amazon SQS avec le stockage S3. Pour en savoir plus, consultez Configurer un bucket pour les notifications (thème SNS ou file d'attente SQS).

En fonction du service et de la région, identifiez les points de terminaison de connectivité en vous reportant à la documentation AWS suivante : * Pour en savoir plus sur les sources de journalisation, consultez la page Points de terminaison et quotas AWS Identity and Access Management. * Pour en savoir plus sur les sources de journalisation S3, consultez Points de terminaison et quotas Amazon Simple Storage Service. * Pour en savoir plus sur les sources de journalisation SQS, consultez Points de terminaison et quotas Amazon Simple Queue Service.

Configurer un flux dans Google SecOps pour ingérer les journaux d'accès au serveur AWS S3

  1. Dans le menu Google SecOps, accédez à Paramètres > Flux > Ajouter.
  2. Dans la liste Source type (Type de source), sélectionnez Amazon S3 ou Amazon SQS.
  3. Dans la liste Type de journal, sélectionnez Accès au serveur AWS S3.
  4. Cliquez sur Suivant.
  5. Google SecOps prend en charge la collecte des journaux à l'aide d'un ID de clé d'accès et d'une méthode secrète. Pour créer l'ID de clé d'accès et le secret, consultez Configurer l'authentification de l'outil avec AWS.
  6. En fonction de la configuration d'accès au serveur AWS S3 que vous avez créée, spécifiez des valeurs pour les paramètres d'entrée :
    • 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
      • ID de clé d'accès
      • Clé d'accès secrète
    • 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
  7. Cliquez sur Suivant, puis sur Envoyer.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
aclRequired target.resource.attribute.labels.key: "aclRequired"
target.resource.attribute.labels.value: valeur de aclRequired
Mappé directement à partir du champ de journal brut aclRequired.
authenticationtype extensions.auth.auth_details Mappé directement à partir du champ de journal brut authenticationtype.
bucket target.resource.name Mappé directement à partir du champ de journal brut bucket.
bucket target.resource.resource_type: "STORAGE_BUCKET" L'analyseur définit resource_type sur "STORAGE_BUCKET" si le champ bucket est présent.
bucketowner target.resource.product_object_id Mappé directement à partir du champ de journal brut bucketowner.
bytes_sent network.sent_bytes Mappé directement à partir du champ de journal brut bytes_sent après l'avoir converti en entier non signé et remplacé "-" par "0".
ciphersuite network.application_protocol: "HTTPS" L'analyseur définit application_protocol sur "HTTPS" si le champ ciphersuite est présent.
ciphersuite network.tls.cipher Mappé directement à partir du champ de journal brut ciphersuite.
errorcode security_result.action_details Mappé directement à partir du champ de journal brut errorcode.
errorcode security_result.action: "BLOCK" L'analyseur définit action sur "BLOCK" si le champ errorcode contient "AccessDenied" (non sensible à la casse).
hostheader target.hostname Extrait du champ de journal brut hostheader, ce qui peut entraîner la suppression du numéro de port.
hostheader target.port Extrait du champ de journal brut hostheader si un numéro de port est présent.
hostid target.resource.attribute.labels.key: "ID de requête étendu S3"
target.resource.attribute.labels.value: valeur de hostid
Mappé directement à partir du champ de journal brut hostid.
http_capture network.http.method La méthode HTTP est extraite du champ http_capture.
http_capture network.http.version La version HTTP est extraite du champ http_capture.
http_capture target.url L'URL cible est créée à l'aide de hostheader et http_request_uri (extraits de http_capture), avec le préfixe "http://" ou "https://" en fonction de la présence de ciphersuite.
httpstatus network.http.response_code Mappé directement à partir du champ de journal brut httpstatus après sa conversion en entier.
object_version_id target.resource.product_object_id Mappé directement à partir du champ de journal brut object_version_id.
objectsize target.file.size Mappé directement à partir du champ de journal brut objectsize après l'avoir converti en entier non signé et remplacé "-" par "0".
operation metadata.product_event_type Mappé directement à partir du champ de journal brut operation.
referrer network.http.referral_url Mappé directement à partir du champ de journal brut referrer après suppression des guillemets.
remoteip metadata.event_type: "USER_RESOURCE_ACCESS" L'analyseur définit event_type sur "USER_RESOURCE_ACCESS" si le champ remoteip est vide.
remoteip principal.ip Mappé directement à partir du champ de journal brut remoteip.
requester target.resource.attribute.labels.key: "ARN du point d'accès"
target.resource.attribute.labels.value: valeur de requester
Mappé directement à partir du champ de journal brut requester.
requester_user principal.user.userid Mappé directement à partir du champ de journal brut requester_user.
requestid network.session_id Mappé directement à partir du champ de journal brut requestid.
request_time_ms network.session_duration.nanos Mappé directement à partir du champ de journal brut request_time_ms après sa conversion en entier, en remplaçant "-" par "0" et en ajoutant des zéros pour représenter les nanoseconds.
signatureversion target.resource.attribute.labels.key: "Version de signature"
target.resource.attribute.labels.value: valeur de signatureversion
Mappé directement à partir du champ de journal brut signatureversion.
time metadata.event_timestamp Extrait du champ de journal brut time et converti en code temporel.
tlsVersion network.tls.version Mappé directement à partir du champ de journal brut tlsVersion.
useragent network.http.user_agent Mappé directement à partir du champ de journal brut useragent après suppression des guillemets.
(Logique de l'analyseur) metadata.event_type: "NETWORK_HTTP" L'analyseur définit la valeur par défaut de event_type sur "NETWORK_HTTP".
(Logique de l'analyseur) metadata.log_type: "AWS_S3_SERVER_ACCESS" L'analyseur définit log_type sur "AWS_S3_SERVER_ACCESS".
(Logique de l'analyseur) metadata.product_name: "AWS S3 Server Access" (Accès au serveur AWS S3) L'analyseur définit product_name sur "AWS S3 Server Access" (Accès au serveur AWS S3).
(Logique de l'analyseur) metadata.product_version: "HTTP/http_version" L'analyseur définit product_version à l'aide de http_version extrait.
(Logique de l'analyseur) metadata.vendor_name: "AMAZON" L'analyseur définit vendor_name sur "AMAZON".
(Logique de l'analyseur) network.application_protocol: "HTTP" L'analyseur définit application_protocol sur "HTTP" si le champ ciphersuite n'est pas présent.
(Logique de l'analyseur) timestamp L'analyseur définit l'événement timestamp sur l'heure actuelle lors du traitement de l'événement.

Modifications

2023-07-19

  • Correction de bug :
  • Modèle Grok modifié pour gérer un trait d'union (-) lorsque les données ne sont pas présentes.
  • Mappage de "aclRequired" sur "target.resource.attribute.labels".

2023-05-04

  • Amélioration :
  • Prise en charge des journaux au format JSON.

2022-07-21

  • Analyseur créé

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