Passer des journaux d'activité aux journaux d'audit


Si vous utilisez des journaux d'activité pour afficher les activités d'administration et les événements système Compute Engine, consultez ce guide pour savoir comment trouver des entrées de journal similaires à l'aide des journaux d'audit.

Les journaux d'activité Compute Engine sont obsolètes. Vous pouvez identifier les entrées de journal d'activité en fonction de leur nom de journal :

logName: "projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"

Les journaux d'audit Compute Engine contiennent les mêmes informations que celles disponibles via les journaux d'activité, entre autres. Toutefois, les informations sont présentées différemment dans les journaux d'audit par rapport aux journaux d'activité. Vous devez donc ajuster vos requêtes.

Passer des journaux d'activité aux journaux d'audit

Pour utiliser des journaux d'audit plutôt que des journaux d'activité, ajustez vos requêtes. Procédez comme suit.

  1. Recherchez vos anciennes requêtes. Par exemple, vous pouvez les avoir sauvegardées dans une recherche enregistrée dans l'explorateur de journaux, ou avoir créé un script à l'aide de l'API ou du SDK. Pour en savoir plus sur la surveillance de vos ressources, consultez la documentation concernant la Logging.

  2. Remplacez les champs du journal d'activité par les champs appropriés du journal d'audit. Reportez-vous au tableau pour voir comment les champs sont mappés les uns aux autres.

    Par exemple, si votre ancienne requête de journal d'activité recherchait un champ nommé jsonPayload.resource.name, votre nouvelle requête de journal d'audit doit rechercher protoPayload.resourceName.

  3. Enregistrez et utilisez votre nouvelle requête de journal d'audit. Par exemple, créez une recherche enregistrée dans Cloud Logging ou mettez à jour vos scripts.

Exemples

Voici quelques exemples de requêtes converties :

Interroger une activité liée à une ressource spécifique

Exemple de requête
Anciens journaux d'activitégcloud logging read jsonPayload.resource.name="VM_NAME"
Journal d'audit

Utilisez l'une des options suivantes.

  1. gcloud logging read protoPayload.resourceName:"VM_NAME"
  2. gcloud logging read protoPayload.resourceName="projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

Avec l'option 1, l'opérateur "has" (:) correspond à toutes les ressources de votre projet dont le nom inclut VM_NAME. Avec l'option 2, l'opérateur "equals" (=) ne correspond qu'à une ressource spécifique complète portant ce nom.

Interroger les entrées récentes du journal des activités d'administration

Exemple de requête
Anciens journaux d'activitégcloud logging read logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
Journal d'auditgcloud logging read logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"

Interroger les entrées de journal récentes relatives à la création d'instances

Exemple de requête
Anciens journaux d'activitégcloud logging read 'logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log" AND jsonPayload.event_subtype="compute.instances.insert"'
Journal d'auditgcloud logging read 'logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND protoPayload.methodName:"compute.instances.insert"'

Interroger le début de toutes les opérations de création d'instance

Exemple de requête
Anciens journaux d'activitégcloud logging read 'jsonPayload.event_type="GCE_API_CALL" AND jsonPayload.event_subtype="compute.instances.insert"'
Journal d'auditgcloud logging read 'operation.first="true" AND protoPayload.methodName:"compute.instances.insert"'

Interroger l'achèvement d'une opération

Exemple de requête
Anciens journaux d'activitégcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE"
Journal d'auditgcloud logging read operation.last="true"

Différences entre les journaux d'activité et les journaux d'audit

Lisez cette section pour découvrir comment les journaux d'audit sont structurés différemment des journaux d'activité. Gardez ces différences à l'esprit lorsque vous convertissez les anciennes requêtes de journal d'activité en requêtes de journal d'audit. Par exemple, dans vos requêtes, remplacez tous les anciens noms de champs du journal d'activité par les noms de champs du journal d'audit correspondants.

Bien que les journaux d'audit et les journaux d'activité renvoient tous deux des objets d'entrée de journal, ils présentent les différences suivantes :

  • Noms de champs différents. Pour en savoir plus, consultez le tableau lié au mappage des noms de champs.
  • Des valeurs de champs différentes, y compris :
    • Noms de journaux différents : les journaux d'audit ont des noms contenant cloudaudit.googleapis.com.
    • Charges utiles différentes : les journaux d'audit renvoient un champ protoPayload au lieu d'un champ jsonPayload.
    • Noms de ressources complets : les journaux d'audit renvoient des noms de ressources incluant leur chemin d'accès, par exemple : projects/my-project/zones/us-east1-b/instances/my-instance-name.
    • Noms de méthodes versionnés : les journaux d'audit renvoient des noms de méthodes incluant leur version, par exemple v1.

Voici un exemple illustrant les différences entre les noms de journaux et les charges utiles :

Exemple d'entrées de journal
Anciens journaux d'activité
{
  insertId:  "1x3bbhjg2wwvz1x"
  jsonPayload: {
    event_subtype: "compute.instances.stop"
    ...
    resource: {
      id: "12345678900123456789"
      name: "my-instance-name"
      type: "instance"
      zone: "us-east1-b"
    }
    ...
  }
  labels: {…}
  logName:  "projects/my-project/logs/compute.googleapis.com%2Factivity_log"
  receiveTimestamp:  "2019-08-26T12:22:44.602794616Z"
  ...
}
Journal d'audit
{
  insertId:  "-w6o499e22fwk"
  logName:  "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity"
  protoPayload: {
    ...
    methodName: "beta.compute.instances.stop"
    ...
    resourceName: "projects/my-project/zones/us-east1-b/instances/my-instance-name"
  }
  receiveTimestamp:  "2019-08-26T12:22:46.881198276Z"
  ...
}

Mapper des champs des journaux d'activité aux journaux d'audit

Utilisez les tableaux suivants pour mapper les champs du journal d'activité aux champs du journal d'audit correspondants dans vos requêtes.

Champs

Utilisez le tableau suivant pour remplacer les anciens champs du journal d'activité par les champs des journaux d'audit dans vos requêtes mises à jour.

Par exemple, si l'une de vos requêtes sur un ancien journal d'activité contient un filtre basé sur jsonPayload.resource.type, votre nouvelle requête de journal d'audit doit filtrer suivant resource.type.

Ancien champ de journal d'activité Champ du journal d'audit
insertId insertId
jsonPayload.actor.user protoPayload.authenticationInfo.principalEmail
jsonPayload.event_subtype protoPayload.methodName
jsonPayload.event_timestamp_us timestamp
jsonPayload.event_type="GCE_API_CALL" operation.first="true"
jsonPayload.event_type="GCE_OPERATION_DONE" operation.last="true"
jsonPayload.request protoPayload.request
jsonPayload.operation operation
jsonPayload.resource.id resource.labels.instance_id
jsonPayload.resource.name protoPayload.resourceName
jsonPayload.resource.type resource.type
jsonPayload.resource.zone resource.labels.zone
jsonPayload.trace_id operation.id
jsonPayload.user_agent protoPayload.requestMetadata.callerSuppliedUserAgent
labels.compute.googleapis.com/resource_id resource.labels.[RESOURCE_TYPE]_id
labels.compute.googleapis.com/resource_name protoPayload.resourceName
labels.compute.googleapis.com/resource_type resource.type
labels.compute.googleapis.com/resource_zone Au choix :
  • resource.labels.zone
  • resource.labels.region
  • resource.labels.location
logName logName
receiveTimestamp receiveTimestamp
resource.labels resource.labels
severity severity
timestamp timestamp

Valeurs des champs

Utilisez les tableaux suivants pour mapper les anciennes valeurs des champs du journal d'activité aux valeurs des champs du journal d'audit. Par rapport aux journaux d'activité, les journaux d'audit ont plusieurs valeurs de nom de journal et différentes valeurs de charge utile. Les entrées du journal d'audit renvoient également des noms de ressources complets et des noms de méthodes versionnés.

Noms des journaux

Pour rechercher une entrée de journal d'audit, recherchez un logName qui inclut l'élément cloudaudit.googleapis.com.

Nom du journalContenu du journal
Anciens journaux d'activitéprojects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_logActivités d'administration et événements système
Journal d'auditprojects/PROJECT_ID/logs/cloudaudit.googleapis.com%2FactivityActivité d'administration
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_eventÉvénements système
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_accessAccès aux données

Charges utiles

Dans chaque entrée du journal d'audit, recherchez une charge utile protoPayload plutôt que jsonPayload.

Type de charge utileExemple de charge utile
Anciens journaux d'activitéjsonPayload
    jsonPayload: {
      actor: {…}
      event_subtype:  "compute.instances.start"
      event_timestamp_us:  "1566404493487248"
      event_type:  "GCE_API_CALL"
      ip_address:  ""
      operation: {…}
      request: {…}
      resource: {…}
      trace_id:  "operation-1566404491560-590a2f74b4705-a1ae0686-d896d772"
      user_agent:  "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
      version:  "1.2"
    }
Journal d'auditprotoPayload
    protoPayload: {
      @type:  "type.googleapis.com/google.cloud.audit.AuditLog"
      authenticationInfo: {…}
      methodName:  "v1.compute.instances.start"
      request: {…}
      requestMetadata: {…}
      resourceName:  "projects/my-project/zones/us-central1-a/instances/alert"
      serviceName:  "compute.googleapis.com"
    }

Consultez la section Mapper les champs des entrées de journal pour découvrir les relations entre ces types de charges utiles et apprendre comment mettre en correspondance les champs des anciens journaux d'activité et ceux des journaux d'audit.

Noms de ressources

Dans les journaux d'audit, les noms de ressources d'API (dans le champ protoPayload.resourceName) sont complets, par exemple :

resourceName: "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

Vous pouvez toujours utiliser des noms partiels, mais vous devez corriger votre requête pour utiliser l'opérateur "has" (:) au lieu de l'opérateur "equals".

Utilisez l'une des options suivantes dans vos requêtes de journal d'audit pour filtrer sur une ressource spécifique :

  • gcloud logging read protoPayload.resourceName:"VM_NAME"
  • gcloud logging read protoPayload.resourceName="projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

Noms de méthode

Dans les journaux d'audit, les noms des méthodes API (figurant dans le champ protoPayload.methodName) sont préfixés par leur version, par exemple : v1.compute.instances.delete.

ChampValeurExemple de requête
Anciens journaux d'activitéjsonPayload.event_subtypeRESOURCE.METHODjsonPayload.event_subtype=compute.instances.delete
Journal d'auditprotoPayload.methodNameAPI_VERSION.RESOURCE.METHODprotoPayload.methodName=v1.compute.instances.delete
ou
protoPayload.methodName=beta.compute.instances.delete
ou
protoPayload.methodName:compute.instances.delete

Vous pouvez toujours utiliser des noms de méthode non versionnés dans vos requêtes de journal d'audit, mais vous devez corriger votre requête pour utiliser l'opérateur "has" (:) au lieu de l'opérateur "equals" (=). Par exemple : protoPayload.methodName:compute.instances.delete renvoie tous les appels d'API de suppression d'instance, quelle que soit la version. Pour plus d'informations sur les opérateurs, consultez la section Comparaisons.

Étape suivante