Collecter les journaux d'activité des alertes de surveillance Google Cloud

Compatible avec :

Ce document explique comment ingérer des journaux Cloud Logging liés à l'activité d'alerte Cloud Monitoring dans Google Security Operations à l'aide de Google Cloud Storage V2.

Cloud Monitoring fournit des fonctionnalités d'alerte pour les ressources Google Cloud. Les règles d'alerte basées sur les journaux vous avertissent lorsqu'un message particulier apparaît dans vos journaux. Lorsqu'une entrée de journal remplit la condition de la règle d'alerte, un incident est ouvert dans Cloud Monitoring et vous recevez une notification pour cet incident. Cette intégration vous permet d'exporter des entrées Cloud Logging vers Google Security Operations pour l'analyse et la corrélation de la sécurité.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes :

  • Une instance Google SecOps
  • ProjetGoogle Cloud avec l'API Cloud Storage activée
  • Autorisations pour créer et gérer des buckets GCS
  • Autorisations permettant de gérer les stratégies IAM sur les buckets GCS
  • Autorisations permettant de configurer des récepteurs Cloud Logging

Créer un bucket Google Cloud Storage

Utiliser la console Google Cloud

  1. Accédez à Google Cloud Console.
  2. Sélectionnez votre projet ou créez-en un.
  3. Dans le menu de navigation, accédez à Cloud Storage> Buckets.
  4. Cliquez sur Créer un bucket.
  5. Fournissez les informations de configuration suivantes :

    Paramètre Valeur
    Nommer votre bucket Saisissez un nom unique (par exemple, monitoring-logs-export).
    Type d'emplacement Choisissez en fonction de vos besoins (région, birégion ou multirégion).
    Emplacement Sélectionnez l'emplacement (par exemple, us-central1).
    Classe de stockage Standard (recommandé pour les journaux auxquels vous accédez fréquemment)
    Access control (Contrôle des accès) Uniforme (recommandé)
    Outils de protection Facultatif : Activer la gestion des versions des objets ou la règle de conservation
  6. Cliquez sur Créer.

Utiliser l'outil de ligne de commande gcloud

  • Vous pouvez également créer un bucket à l'aide de la commande gcloud :

    gcloud storage buckets create gs://monitoring-logs-export \
        --location=us-central1 \
        --default-storage-class=STANDARD
    
    • Remplacez :
      • monitoring-logs-export : nom de bucket requis (unique au niveau mondial).
      • us-central1 : région de votre choix.

Configurer Cloud Logging pour exporter des journaux vers GCS

Les entrées de journaux sont stockées sous forme de fichiers JSON lorsqu'elles sont acheminées vers Cloud Storage. Vous pouvez exporter les journaux liés à l'activité d'alerte Cloud Monitoring, tels que les journaux d'audit pour la gestion des règles d'alerte.

Créer un récepteur de journaux

  1. Dans la console Google Cloud, accédez à Journalisation > Routeur de journaux.
  2. Cliquez sur Créer un récepteur.
  3. Fournissez les informations de configuration suivantes :
    • Nom du récepteur : saisissez un nom descriptif (par exemple, monitoring-alerts-to-gcs).
    • Description du récepteur : description facultative.
  4. Cliquez sur Suivant.
  5. Dans la section Sélectionner le service de récepteur :
    • Service de récepteur : sélectionnez Bucket Cloud Storage.
    • Sélectionner un bucket Cloud Storage : sélectionnez le bucket (par exemple, monitoring-logs-export) dans la liste.
  6. Cliquez sur Suivant.
  7. Dans la section Choisir les journaux à inclure dans le récepteur, saisissez une requête de filtre pour sélectionner les journaux que vous souhaitez exporter.

    • Exemple de filtre pour les journaux d'audit Cloud Monitoring :

      protoPayload.serviceName="monitoring.googleapis.com"
      logName:"cloudaudit.googleapis.com/activity"
      
    • Exemple de filtre pour les déclencheurs de règles d'alerte basées sur les journaux :

      Si vous souhaitez exporter les journaux sous-jacents qui déclenchent vos règles d'alerte basées sur les journaux, utilisez un filtre correspondant à ces journaux spécifiques. Exemple :

      severity >= ERROR
      resource.type="gce_instance"
      
  8. Cliquez sur Suivant.

  9. (Facultatif) Configurez des filtres d'exclusion si nécessaire.

  10. Cliquez sur Créer un récepteur.

Le démarrage des nouveaux récepteurs qui acheminent les données de journaux vers des buckets Cloud Storage peut prendre plusieurs heures. Les entrées de journal acheminées sont enregistrées toutes les heures et sous forme de lots dans des buckets Cloud Storage. L'affichage des premières entrées peut prendre 2 à 3 heures.

Récupérer le compte de service Google SecOps

Google SecOps utilise un compte de service unique pour lire les données de votre bucket GCS. Vous devez accorder à ce compte de service l'accès à votre bucket.

Configurer un flux dans Google SecOps pour ingérer les journaux Cloud Monitoring

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Cliquez sur Configurer un flux unique.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Google Cloud Monitoring Alerts Logs).
  5. Sélectionnez Google Cloud Storage V2 comme Type de source.
  6. Sélectionnez GCP_MONITORING_ALERTS comme type de journal.

  7. Cliquez sur Obtenir un compte de service. Une adresse e-mail unique pour le compte de service s'affiche, par exemple :

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copiez cette adresse e-mail pour l'utiliser à l'étape suivante.

  9. Cliquez sur Suivant.

  10. Spécifiez les valeurs des paramètres d'entrée suivants :

    • URL du bucket de stockage : saisissez l'URI du bucket GCS :

      gs://monitoring-logs-export/
      
      • Remplacez monitoring-logs-export par le nom de votre bucket GCS.
    • Option de suppression de la source : sélectionnez l'option de suppression de votre choix :

      • Jamais : ne supprime jamais aucun fichier après les transferts (recommandé pour les tests).
      • Supprimer les fichiers transférés : supprime les fichiers après un transfert réussi.
      • Supprimer les fichiers transférés et les répertoires vides : supprime les fichiers et les répertoires vides après un transfert réussi.

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

    • Espace de noms de l'élément : espace de noms de l'élément.

    • Libellés d'ingestion : libellé à appliquer aux événements de ce flux.

  11. Cliquez sur Suivant.

  12. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Accorder des autorisations IAM au compte de service Google SecOps

Le compte de service Google SecOps a besoin du rôle Lecteur des objets Storage sur votre bucket GCS.

Utiliser la console Google Cloud

  1. Accédez à Cloud Storage > Buckets.
  2. Cliquez sur le nom du bucket (par exemple, monitoring-logs-export).
  3. Accédez à l'onglet Autorisations.
  4. Cliquez sur Accorder l'accès.
  5. Fournissez les informations de configuration suivantes :
    • Ajouter des comptes principaux : collez l'adresse e-mail du compte de service Google SecOps.
    • Attribuez des rôles : sélectionnez Lecteur des objets de l'espace de stockage.
  6. Cliquez sur Enregistrer.

Utiliser l'outil de ligne de commande gcloud

  • Vous pouvez également accorder des autorisations à l'aide de la commande gcloud :

    gcloud storage buckets add-iam-policy-binding gs://monitoring-logs-export \
        --member="serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL" \
        --role="roles/storage.objectViewer"
    
    • Remplacez :
      • monitoring-logs-export : nom de votre bucket.
      • SECOPS_SERVICE_ACCOUNT_EMAIL : adresse e-mail du compte de service Google SecOps.

Utiliser l'outil de ligne de commande gsutil (ancienne version)

  • Accordez au compte de service SecOps les autorisations nécessaires pour lire les objets dans votre bucket de destination :

    gsutil iam ch serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL:objectViewer \
        gs://monitoring-logs-export
    

Vérifier les autorisations

  • Pour vérifier que les autorisations ont été accordées correctement :

    gcloud storage buckets get-iam-policy gs://monitoring-logs-export \
        --flatten="bindings[].members" \
        --filter="bindings.role:roles/storage.objectViewer"
    

    L'adresse e-mail du compte de service Google SecOps doit s'afficher dans le résultat.

Table de mappage UDM

Champ de journal Mappage UDM Logique
jsonPayload.type_1 additional.fields.jsonPayload_type_1 Valeur copiée directement
jsonPayload.debugInfo additional.fields.number Extrait de jsonPayload.debugInfo à l'aide du modèle Grok
jsonPayload.scheduledTime, receiveTimestamp, timestamp metadata.event_timestamp Valeur extraite de jsonPayload.scheduledTime si elle n'est pas vide, sinon receiveTimestamp si elle n'est pas vide, sinon timestamp si elle n'est pas vide, convertie à l'aide de la correspondance de date
event_type metadata.event_type Valeur de event_type si elle n'est pas vide, sinon définie sur "GENERIC_EVENT"
insertId metadata.product_log_id Valeur copiée directement
jsonPayload.targetType network.application_protocol Valeur copiée directement
httpRequest.status network.http.response_code Converti en entier
resource.labels.location principal.location.name Valeur copiée directement
jsonPayload.jobName principal.url Valeur copiée directement
jsonPayload.status security_result.action Définissez sur "BLOCK" si jsonPayload.status == "PERMISSION_DENIED"
de gravité, security_result.severity Définissez sur INFORMATIONAL si la gravité correspond à (?i)INFO, sur LOW si la gravité est "LOW", sur MEDIUM si la gravité est "MEDIUM", sur HIGH si la gravité est "HIGH" et sur CRITICAL si la gravité est "VERY-HIGH".
jsonPayload.debugInfo security_result.summary Extrait de jsonPayload.debugInfo à l'aide du modèle Grok
logName src.url Valeur copiée directement
resource.labels.project_id target.resource.attribute.labels.project_id Valeur copiée directement
resource.labels.job_id target.resource.attribute.labels.resource_labels_job_id Valeur copiée directement
resource.type target.resource.resource_subtype Valeur copiée directement
jsonPayload.url target.url Valeur copiée directement
metadata.product_name Défini sur "Gcp_monitoring_alerts"
metadata.vendor_name Définissez-le sur "GCP_MONITORING_ALERTS".

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