Cette page décrit en détail les entrées des journaux d'audit Cloud : leur structure, leur lecture et leur interprétation.
Cloud Audit Logs gère les journaux d'audit suivants pour chaque projet, dossier et organisation Google Cloud:
- Journaux d'audit pour les activités d'administration
- Journaux d'audit des accès aux données
- Journaux d'audit des événements système
- Journaux d'audit des refus de règles
Pour découvrir Cloud Audit Logging, consultez la page Cloud Audit Logging.
Format des entrées du journal d'audit
Une entrée de journal d'audit est un type d'entrée de journal de Cloud 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.
En résumé, chaque entrée de journal d'audit est caractérisée par les informations suivantes :
- Le projet, le dossier ou l'organisation propriétaire de l'entrée de journal.
- La ressource à laquelle l'entrée de journal s'applique. Ces informations sont constituées d'un type de ressource issu de la liste de ressources surveillées et de valeurs supplémentaires indiquant une instance spécifique. Par exemple, vous pouvez afficher les entrées des journaux d'audit provenant d'une seule instance de VM Compute Engine ou de toutes les instances de VM.
- Un horodatage
Un service : les services sont des produits Google Cloud individuels, tels que Compute Engine, Cloud SQL ou Pub/Sub. Chaque service est identifié par son nom :
compute.googleapis.com
correspond à Compute Engine,cloudsql.googleapis.com
à Cloud SQL, et ainsi de suite. Ces informations sont répertoriées dans le champprotoPayload.serviceName
de l'entrée du journal d'audit.Les types de ressources appartiennent à un seul service, mais un service peut avoir plusieurs types de ressources. Pour obtenir une liste des services et des ressources, consultez la section Mapper des services sur des ressources.
Charge utile, de type
protoPayload
. La charge utile de chaque entrée de journal d'audit est un objet de typeAuditLog
, qui définit un ensemble de champs spécifiques aux journaux d'audit Cloud, tels queserviceName
etauthenticationInfo
. Il comporte également un champ facultatif,metadata
, que les services Google Cloud utilisent pour répertorier les informations spécifiques au service dans l'entrée de journal'audit. Certains services Google Cloud utilisent toujours l'ancien champserviceData
pour lister des informations spécifiques au service. Pour obtenir la liste des services qui utilisent le champserviceData
, consultez la section Données d'audit spécifiques au service.Un nom de journal: les entrées des journaux d'audit sont associées aux journaux des comptes de facturation, des projets, des dossiers et des organisations. Le tableau suivant répertorie les noms de journaux:
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy
Dans un compte de facturation, un projet, un dossier ou une organisation, ces noms de journaux sont généralement abrégés en activity, data_access, system_event et policy.
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 de journal d'audit des activités d'administration écrite par App Engine pour enregistrer une modification apportée à une stratégie Identity and Access Management (IAM) dans un projet PROJECT_ID 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: "appengine.googleapis.com", methodName: "SetIamPolicy", authorizationInfo: [...], serviceData: { @type: "type.googleapis.com/google.appengine.legacy.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: "gae_app", labels: { project_id: "my-gcp-project-id" } }, timestamp: "2019-05-27T16:24:56.135Z", severity: "NOTICE", logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity", }
Voici la requête utilisée pour sélectionner l'exemple d'entrée de journal d'audit précédent. Vous pouvez utiliser la requête dans l'explorateur de journaux, l'API Logging ou la Google Cloud CLI. L'identifiant du projet est compris dans le nom du journal:
resource.type = "gae_app" logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
Si vous recherchez des journaux d'audit à partir d'une seule instance d'un type de ressource, tel que gce_instance
, ajoutez un qualificateur d'instance :
resource.type = "gce_instance" resource.instance_id = "INSTANCE_ID" logName = "projects/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 précédent, les champs protoPayload
, insertId
, resource
, timestamp
, severity
et logName
présentés font partie de l'objet LogEntry
. La valeur du champ protoPayload
est un objet AuditLog
. Il encapsule les données des journaux d'audit.
En examinant l'exemple d'entrée de journal d'audit, vous pouvez avoir quelques questions:
S'agit-il d'une entrée de journal d'audit ? Oui, pour deux raisons :
Le champ
protoPayload.@type
correspond àtype.googleapis.com/google.cloud.audit.AuditLog
.Le champ
logName
inclut le domainecloudaudit.googleapis.com
.
Quel service a écrit le journal d'audit ? Le journal a été écrit par App Engine. 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 indiqué dans le champprotoPayload.methodName
, est en cours d'audit. Vous trouverez plus d'informations sur l'opération auditée dans l'objetAuditData
dansprotoPayload.serviceData
.Quelle ressource est en cours d'audit ? Une application exécutée dans App Engine, associée à un projet Google Cloud
my-gcp-project-id
, est en cours d'audit. Vous pouvez la déterminer à partir du champresource
, qui spécifie le type de ressourcegae_app
et l'identifiant du projetmy-gcp-project-id
. Dans cet exemple, vous trouverez des détails sur le type de ressource dans la liste des types de ressources surveillées.
Pour plus d'informations, consultez le type LogEntry
, le type AuditLog
et le type IAM AuditData
.
Journaux d'audit pour les opérations de longue durée
Les API qui sont des opérations de longue durée émettent deux journaux d'audit : un lorsque l'API est appelée et que l'opération commence, et un autre lorsque l'opération se termine.
Dans ce cas, l'objet LogEntry
contient un champ operation
.
Les entrées de journal pour la même opération ont la même valeur pour LogEntry.operation.id
et LogEntry.operation.producer
.
La première entrée de journal écrite contient LogEntry.operation.first=true
, et l'entrée de journal de fin contient LogEntry.operation.last=true
.
Lorsque l'opération se termine immédiatement, il n'y a qu'une seule entrée de journal contenant à la fois LogEntry.operation.first=true
et LogEntry.operation.last=true
.
Ces API implémentent le service Operations (Opérations).
Ce service émet généralement des entrées de journal d'audit lorsqu'il est appelé. Selon les API appelées, protoPayload.methodName
est l'un des éléments suivants:
google.longrunning.Operations.ListOperations
google.longrunning.Operations.GetOperation
google.longrunning.Operations.CancelOperation
google.longrunning.Operations.WaitOperation
google.longrunning.Operations.DeleteOperation
LogEntry.operation
n'est pas spécifié dans ce cas, car cette API renvoie des métadonnées sur les opérations de longue durée, mais n'est pas elle-même une opération de longue durée.
Pour en savoir plus sur les API auditées, consultez la section Services Google Cloud avec journaux d'audit, car cela peut varier selon le service.
Journaux d'audit pour les API de streaming
Comme pour les opérations de longue durée, les API de streaming émettent deux entrées de journal d'audit : une lors du premier appel de l'API et une lorsque la connexion de streaming est terminée.
Dans ce cas, l'objet LogEntry
contient un champ operation
et les entrées de journal pour la même opération affichent la même valeur pour LogEntry.operation.id
et LogEntry.operation.producer
.
Le premier journal écrit contient LogEntry.operation.first=true
, et le journal de finalisation contient LogEntry.operation.last=true
.
Cette API peut également émettre des entrées de journal de continuation sans LogEntry.operation.first
ni LogEntry.operation.last
défini pour indiquer que le flux reste ouvert.
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
de l'entrée de journal d'audit. Le tableau suivant répertorie les services qui utilisent le champ serviceData
et fournit un lien vers leur type AuditData
.
Afficher les journaux d'audit
Vous pouvez interroger tous les journaux d'audit ou interroger les journaux selon leur nom. Le nom du journal d'audit inclut l'identifiant de ressource du projet, du dossier, du compte de facturation ou de l'organisation Google Cloud dont vous souhaitez afficher les informations de journalisation d'audit.
Vos requêtes peuvent spécifier des champs LogEntry
indexés.
Pour en savoir plus sur l'interrogation de vos journaux, consultez la page Créer des requêtes dans l'explorateur de journaux.
L'explorateur de journaux vous permet d'afficher et de filtrer des entrées de journal individuelles. Si vous souhaitez utiliser SQL pour analyser des groupes d'entrées de journal, utilisez la page Analyse de journaux. Pour en savoir plus, consultez les pages suivantes :
- Interroger et afficher des journaux dans l'Analyse de journaux
- Exemples de requêtes pour des insights sur la sécurité.
- Graphique des résultats de la requête
La plupart des journaux d'audit peuvent être consultés dans Cloud Logging à l'aide de la console Google Cloud, de Google Cloud CLI ou de l'API Logging. Toutefois, pour les journaux d'audit liés à la facturation, vous ne pouvez utiliser que la Google Cloud CLI ou l'API Logging.
Console
Vous pouvez utiliser l'explorateur de journaux de la console Google Cloud pour récupérer les entrées du journal d'audit de votre projet, dossier ou organisation Google Cloud :
-
Dans la console Google Cloud, accédez à la page Explorateur de journaux.
Accéder à l'explorateur de journaux
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.
Sélectionnez un projet, une organisation ou un dossier Google Cloud existant.
Pour afficher tous les journaux d'audit, saisissez l'une des requêtes suivantes dans le champ de l'éditeur de requête, puis cliquez sur Exécuter la requête :
logName:"cloudaudit.googleapis.com"
protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
Pour afficher les journaux d'audit d'une ressource et d'un type de journal d'audit spécifiques, accédez au volet Générateur de requêtes et procédez comme suit :
Dans Type de ressource, sélectionnez la ressource Google Cloud dont vous souhaitez afficher les journaux d'audit.
Dans Nom du journal, sélectionnez le type de journal d'audit que vous souhaitez afficher :
- Pour les journaux d'audit pour les activités d'administration, sélectionnez activity.
- Pour les journaux d'audit des accès aux données, sélectionnez data_access.
- Pour les journaux d'audit des événements système, sélectionnez system_event.
- Pour les journaux d'audit des refus de règles, sélectionnez policy.
Cliquez sur Exécuter la requête.
Si ces options ne sont pas visibles, cela signifie qu'aucun journal d'audit de ce type n'est disponible dans le projet, le dossier ou l'organisation Google Cloud.
Si vous rencontrez des problèmes lors de la tentative d'affichage de journaux dans l'explorateur de journaux, consultez les informations de dépannage.
Pour en savoir plus sur l'utilisation de l'explorateur de journaux pour effectuer des requêtes, consultez la page Créer des requêtes dans l'explorateur de journaux.
gcloud
Google Cloud CLI fournit une interface de ligne de commande à l'API Logging. Fournissez un identifiant de ressource valide dans chacun des noms de journaux. Par exemple, si votre requête inclut un PROJECT_ID, l'identifiant de projet que vous fournissez doit faire référence au projet Google Cloud actuellement sélectionné.
Pour lire les entrées de journal d'audit au niveau du projet Google Cloud, exécutez la commande suivante :
gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \ --project=PROJECT_ID
Pour lire les entrées de journal d'audit au niveau d'un dossier, exécutez la commande suivante :
gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \ --folder=FOLDER_ID
Pour lire les entrées de journal d'audit au niveau de l'organisation, exécutez la commande suivante :
gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \ --organization=ORGANIZATION_ID
Pour lire les entrées de journal d'audit au niveau de votre compte de facturation Cloud, exécutez la commande suivante :
gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \ --billing-account=BILLING_ACCOUNT_ID
Ajoutez l'option --freshness
à votre commande pour lire les journaux datant de plus d'une journée.
Pour en savoir plus sur l'utilisation de gcloud CLI, consultez la page gcloud logging read
.
REST
Lors de la création de vos requêtes, fournissez un identifiant de ressource valide dans chacun des noms de journaux. Par exemple, si votre requête inclut un PROJECT_ID, l'identifiant de projet que vous fournissez doit faire référence au projet Google Cloud actuellement sélectionné.
Par exemple, pour utiliser l'API Logging afin d'afficher les entrées de journal d'audit au niveau d'un projet, procédez comme suit :
Accédez à la section Essayer cette API dans la documentation de la méthode
entries.list
.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 chaque nom de journal.
{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
Cliquez sur Exécuter.