Comprendre les journaux d'audit

Cette page décrit en détail les entrées d'un journal d'audit : leur structure, leur lecture et leur interprétation.

Cloud Audit Logging gère trois journaux d'audit pour chaque projet, dossier et organisation GCP :

  • Journaux d'audit d'événements système
  • Journaux d'audit pour les activités d'administration
  • Journaux d'audit pour l'accès aux données

Pour découvrir Cloud Audit Logging, consultez la page Cloud Audit Logging.

Afficher les journaux d'audit

Vous avez plusieurs options pour afficher les entrées de votre journal d'audit :

Interface de base de la visionneuse

Vous pouvez utiliser l'interface de base de la visionneuse de journaux de la console GCP pour récupérer les entrées de votre journal d'audit. Procédez comme suit :

  1. Accédez à la page Stackdriver Logging > Journaux (Visionneuse de journaux) dans la console GCP :

    Accéder à la page de la visionneuse de journaux

  2. Sélectionnez un projet GCP existant en haut de la page, ou créez un projet.

  3. Dans le premier menu déroulant, sélectionnez le type de ressource dont vous souhaitez afficher les journaux d'audit. Vous pouvez sélectionner une ressource spécifique ou l'option Global pour toutes les ressources.

  4. Dans le deuxième menu déroulant, sélectionnez le type de journal à afficher : activity pour les journaux d'audit concernant les activités d'administration, data_access pour les journaux d'audit relatifs à l'accès aux données et system_events pour les journaux d'événements système.

    Si vous ne voyez aucune de ces options, aucun journal d'audit de ce type n'est disponible dans le projet.

Visionneuse avancée

Vous pouvez utiliser l'interface avancée de la visionneuse de journaux de la console GCP pour récupérer les entrées de votre journal d'audit. Procédez comme suit :

  1. Accédez à la page Stackdriver Logging > Journaux (Visionneuse de journaux) dans la console GCP :

    Accéder à la page de la visionneuse de journaux

  2. Sélectionnez un projet GCP existant en haut de la page, ou créez un projet.

  3. Dans le premier menu déroulant, sélectionnez le type de ressource dont vous souhaitez afficher les journaux d'audit. Vous pouvez sélectionner une ressource spécifique ou l'option Global pour toutes les ressources.

  4. Cliquez sur la flèche du menu déroulant (▾) tout à droite de la zone de recherche de filtre, puis sélectionnez Convertir en filtre avancé.

  5. Créez un filtre qui spécifie davantage les entrées de journal que vous voulez afficher. Pour récupérer tous les journaux d'audit de votre projet, ajoutez le filtre suivant. Fournissez un [PROJECT_ID] valide pour chacun des noms de journaux.

      logName = ("projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"
          OR "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events"
          OR "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access")
    

    Pour en savoir plus sur les filtres, consultez la page Filtres de journaux avancés.

API

Pour examiner les entrées de votre journal d'audit à l'aide de l'API Stackdriver Logging :

  1. Accédez à la section Essayer cette API dans la documentation de la méthode entries.list.

  2. Insérez les éléments suivants dans la partie Corps de la requête du formulaire Essayer cette API. En cliquant sur ce formulaire prérempli, vous remplissez automatiquement le corps de la requête, mais vous devez fournir un ID de projet [PROJECT_ID] valide pour chacun des noms de journaux.

      {
        "resourceNames": [
          "projects/[PROJECT_ID]"
        ],
        "pageSize": 5,
        "filter": "logName=(projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access)"
      }
    
  3. Cliquez sur Exécuter.

Pour en savoir plus sur les filtres, consultez la page Filtres de journaux avancés.

SDK

Pour lire vos entrées de journal à l'aide du SDK Cloud, exécutez la commande suivante. Fournissez un [PROJECT_ID] valide pour chacun des noms de journaux.

gcloud logging read "logName=(projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access)

Consultez la page Lire les entrées de journaux pour en savoir plus sur l'utilisation du SDK Cloud.

Format des entrées du journal d'audit

Une entrée de journal d'audit est un type d'entrée de journal de Stackdriver Logging. Comme toutes les entrées du journal Logging, une entrée du journal d'audit est stockée dans un objet LogEntry. Ce qui distingue une entrée de journal d'audit des autres entrées de journal est le champ protoPayload. Dans les entrées du journal d'audit, le champ protoPayload de l'entrée de journal contient un objet AuditLog qui stocke les données de journalisation d'audit.

Le type AuditLog définit un ensemble de champs spécifiques aux journaux d'audit, tels que serviceName et authenticationInfo. Il comporte également un champ facultatif, serviceData, que certains services de Google Cloud Platform utilisent pour répertorier les informations spécifiques au service dans l'entrée du journal d'audit. Consultez la section Données d'audit spécifiques au service pour obtenir une liste des services GCP qui utilisent ce champ.

Exemple d'entrée de journal d'audit

Cette section utilise un exemple d'entrée de journal d'audit pour expliquer comment y trouver les informations les plus importantes.

L'exemple suivant est une entrée du journal d'audit des activités d'administration écrite par Resource Manager pour enregistrer une modification apportée à une stratégie Cloud Identity and Access Management dans un projet Google Cloud Platform nommé my-gcp-project-id. Par souci de concision, certaines parties de l'entrée de journal sont omises et certains champs sont mis en évidence :

    {
      protoPayload: {
        @type: "type.googleapis.com/google.cloud.audit.AuditLog",
        status: {},
        authenticationInfo: {
          principalEmail: "user@example.com"
        },
        serviceName: "cloudresourcemanager.googleapis.com",
        methodName: "SetIamPolicy",
        authorizationInfo: [...],
        serviceData: {
          @type: "type.googleapis.com/google.iam.v1.logging.AuditData",
          policyDelta: { bindingDeltas: [
              action: "ADD",
              role: "roles/logging.privateLogViewer",
              member: "user:user@example.com"
          ], }
        },
        request: {
          resource: "my-gcp-project-id",
          policy: { bindings: [...], }
        },
        response: {
          bindings: [
            {
              role: "roles/logging.privateLogViewer",
              members: [ "user:user@example.com" ]
            }
          ],
        }
      },
      insertId: "53179D9A9B559.AD6ACC7.B40604EF",
      resource: {
        type: "project",
        labels: { project_id: "my-gcp-project-id" }
      },
      timestamp: "2016-04-27T16:24:56.135Z",
      severity: "NOTICE",
      logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity",
    }

Voici le filtre utilisé pour sélectionner l'exemple d'entrée du journal d'audit ci-dessus. Il peut être utilisé dans la visionneuse avancée, dans l'API Stackdriver Logging ou dans le SDK Cloud. L'identifiant du projet est compris dans le nom du journal et le filtre est rapide, car le champ logName est indexé :

resource.type = "project"
logName = "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity"

Si vous recherchez des journaux d'audit à partir d'une instance unique avec un type de ressource tel que gce_instance, ajoutez un qualificatif d'instance.

resource.type = "gce_instance"
resource.instance_id = "12345678901234567890"
logName = "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity"

Interpréter l'exemple d'entrée de journal d'audit

Dans l'exemple d'entrée de journal d'audit ci-dessus, les champs protoPayload, insertId, resource, timestamp, severity et logName présents font partie de l'objet LogEntry. La valeur du champ protoPayload est un objet AuditLog. Il encapsule les données de journalisation d'audit.

En examinant l'exemple d'entrée du journal d'audit ci-dessus, vous pouvez avoir quelques questions :

  • S'agit-il d'une entrée de journal d'audit ? Oui, pour deux raisons :

    • Le champ protoPayload.@type a la valeur type.googleapis.com/google.cloud.audit.AuditLog.

    • Le champ logName inclut le domaine cloudaudit.googleapis.com .

  • Quel service a écrit le journal d'audit ? Le journal a été écrit par le Resource Manager. Ces informations sont répertoriées dans le champ protoPayload.serviceName de l'entrée du journal d'audit.

  • Quelle opération est en cours d'audit ? SetIamPolicy, comme spécifié dans le champ protoPayload.methodName, est en cours d'audit. Vous trouverez davantage d'informations sur l'opération auditée dans l'objet AuditData du champ protoPayload.serviceData.

  • Quelle ressource est en cours d'audit ? Un projet Google Cloud Platform, my-gcp-project-id, est en cours d'audit. Le champ resource spécifie le type de ressource project et l'identifiant de projet my-gcp-project-id. Recherchez project dans la liste des types de ressources surveillées. Il s'agit d'un "projet Google".

Pour en savoir plus, consultez les pages LogEntry, AuditLog et AuditData IAM.

Entrées de journal d'audit de grande taille ou de longue durée

Une seule opération auditée est divisée en plusieurs entrées de journal si l'opération s'exécute de manière asynchrone ou si elle génère un enregistrement AuditLog volumineux. Lorsqu'il existe plusieurs entrées de journal pour la même opération, l'objet LogEntry contient un champ operation, et les entrées correspondant à la même opération affichent la même valeur pour LogEntry.operation.id et pour LogEntry.operation.producer.

Dans l'exemple précédent d'entrée de journal d'audit, le champ operation n'est pas présent, ce qui signifie que toutes les informations d'audit sont contenues dans une seule entrée de journal.

Données d'audit spécifiques au service

Certains services étendent les informations stockées dans leur journal d'audit AuditLog en plaçant une structure de données supplémentaire dans le champ serviceData du journal d'audit. Le tableau suivant répertorie les services qui utilisent le champ serviceData et fournit un lien vers leur type AuditData.

Service Type de données de service
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine (ancien) type.googleapis.com/google.appengine.legacy.AuditData
BigQuery type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData
Cloud Identity and Access Management type.googleapis.com/google.iam.v1.logging.AuditData
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Stackdriver Logging
Besoin d'aide ? Consultez notre page d'assistance.