Migrazione dai log delle attività agli audit log

Se utilizzi i log delle attività per visualizzare l'attività di amministrazione di Compute Engine e gli eventi di sistema, leggi questa guida per capire come trovare voci di log simili utilizzando gli audit log.

I log delle attività di Compute Engine sono deprecati. Puoi identificare le voci di log delle attività in base al loro nome di log:

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

Gli audit log di Compute Engine contengono le stesse informazioni disponibili tramite i log delle attività e altro ancora. Tuttavia, gli audit log presentano le informazioni in modo diverso rispetto ai log delle attività. Quindi, dovrai modificare le query.

Come eseguire la migrazione dai log delle attività agli audit log

Per utilizzare gli audit log anziché i log delle attività, modifica le query. Segui questi passaggi.

  1. Trova le query precedenti. Ad esempio, potresti averli salvati in una ricerca salvata in Esplora log o aver creato uno script utilizzando l'API o l'SDK. Per ulteriori informazioni su come monitorare le risorse, consulta la documentazione di Logging.

  2. Sostituisci i campi del log delle attività con quelli appropriati per l'audit log. Consulta la tabella per vedere come i campi vengono mappati tra loro.

    Ad esempio, se la query del log di controllo legacy ha cercato un campo denominato jsonPayload.resource.name, la nuova query dell'audit log dovrebbe invece cercare protoPayload.resourceName.

  3. Salva e utilizza la nuova query dell'audit log. Ad esempio, crea una ricerca salvata in Cloud Logging o aggiorna i tuoi script.

Esempi

Ecco alcuni esempi di query convertite:

Esecuzione di query per le attività relative a una risorsa specifica

Esempio di query
Log delle attività legacygcloud logging read jsonPayload.resource.name="VM_NAME"
Audit log

Utilizza una delle seguenti opzioni

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

Con l'opzione 1, l'operatore "has" (:) corrisponde a tutte le risorse nel progetto che hanno un nome che include VM_NAME. Con l'opzione 2, l'operatore "uguale a" (=) trova corrispondenze solo su una specifica risorsa completa con quel nome.

Esecuzione di query per le voci di log delle attività di amministrazione recenti

Esempio di query
Log delle attività legacygcloud logging read logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
Audit loggcloud logging read logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"

Esecuzione di query per le voci di log della creazione recente delle istanze

Esempio di query
Log delle attività legacygcloud logging read 'logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log" AND jsonPayload.event_subtype="compute.instances.insert"'
Audit loggcloud logging read 'logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND protoPayload.methodName:"compute.instances.insert"'

Esecuzione di query per l'avvio di tutte le operazioni di creazione dell'istanza

Esempio di query
Log delle attività legacygcloud logging read 'jsonPayload.event_type="GCE_API_CALL" AND jsonPayload.event_subtype="compute.instances.insert"'
Audit loggcloud logging read 'operation.first="true" AND protoPayload.methodName:"compute.instances.insert"'

Esecuzione di query per il completamento di qualsiasi operazione

Esempio di query
Log delle attività legacygcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE"
Audit loggcloud logging read operation.last="true"

Differenze tra log delle attività e log di controllo

Leggi questa sezione per scoprire come gli audit log sono strutturati in modo diverso rispetto ai log delle attività. Tieni presenti queste differenze quando converti le query dei log delle attività legacy in query degli audit log. Ad esempio, nelle query, sostituisci tutti i nomi dei campi dei log delle attività legacy con i nomi dei campi degli audit log corrispondenti.

Sebbene l'audit logging e il logging delle attività restituiscano entrambi oggetti voce di log, presentano le seguenti differenze:

  • Nomi di campi diversi. Per i dettagli, consulta la tabella di mappatura dei nomi dei campi.
  • Diversi valori dei campi, tra cui:
    • Nomi di log diversi: gli audit log hanno nomi di log che contengono cloudaudit.googleapis.com.
    • payloads diversi: gli audit log restituiscono un campo protoPayload anziché un jsonPayload.
    • Nomi di risorse completi: gli audit log restituiscono nomi di risorse che includono il relativo percorso, ad esempio: projects/my-project/zones/us-east1-b/instances/my-instance-name.
    • Nomi dei metodi con più versioni: i log di controllo restituiscono nomi dei metodi che includono la relativa versione, ad esempio v1.

Ecco un esempio che mostra le differenze nei nomi dei log e nei payload:

Esempio di voce di log
Log delle attività legacy

{
  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"
  ...
}
Audit log

{
  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"
  ...
}

Mappatura dei campi dai log delle attività agli audit log

Utilizza le seguenti tabelle per mappare i campi del log delle attività ai campi dell'audit log corrispondenti nelle tue query.

Campi

Utilizza la seguente tabella per sostituire i campi dei log delle attività legacy con campi di audit log nelle query aggiornate.

Ad esempio, se la query del log di controllo precedente conteneva un filtro basato su jsonPayload.resource.type, la nuova query del log di controllo dovrebbe filtrare in base a resource.type.

Campo del log delle attività legacy Campo audit log
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 Uno dei seguenti:
  • resource.labels.zone
  • resource.labels.region
  • resource.labels.location
logName logName
receiveTimestamp receiveTimestamp
resource.labels resource.labels
severity severity
timestamp timestamp

Valori dei campi

Utilizza le seguenti tabelle per mappare i valori dei campi dei log delle attività legacy ai valori dei campi dell'audit log. Rispetto ai log delle attività, gli audit log hanno più valori per nome di log e valori payload differenti. Le voci di audit log restituiscono anche nomi di risorse completi e nomi di metodi sottoposti al controllo delle versioni.

Nomi dei log

Per trovare una voce di log di controllo, cerca un logName che includa cloudaudit.googleapis.com.

Nome logContenuti dei log
Log delle attività legacyprojects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_logAttività di amministrazione ed eventi di sistema
Audit logprojects/PROJECT_ID/logs/cloudaudit.googleapis.com%2FactivityAttività di amministrazione
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_eventEventi di sistema
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_accessAccesso ai dati

Payload

In ogni voce di log di controllo, cerca un protoPayload anziché un jsonPayload.

Tipo di payloadEsempio di payload
Log delle attività legacyjsonPayload

    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"
    }
Audit logprotoPayload

    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"
    }

Per scoprire la correlazione tra questi payload e come mappare i campi del log delle attività legacy ai campi del log di controllo, leggi Mappature dei campi delle voci di log.

Nomi delle risorse

Negli audit log, i nomi delle risorse API (nel campo protoPayload.resourceName) sono completamente qualificati, ad esempio:

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

Puoi comunque utilizzare nomi parziali, ma devi correggere la query per utilizzare l'operatore "ha" (:) anziché l'operatore "uguale a".

Utilizza una delle seguenti opzioni nelle query degli audit log per filtrare in base a una risorsa specifica:

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

Nomi dei metodi

Negli audit log, i nomi dei metodi API (nel campo protoPayload.methodName) contengono il prefisso della relativa versione, ad esempio v1.compute.instances.delete.

CampoValoreEsempio di query
Log delle attività legacyjsonPayload.event_subtypeRESOURCE.METHODjsonPayload.event_subtype=compute.instances.delete
Audit logprotoPayload.methodNameAPI_VERSION.RESOURCE.METHODprotoPayload.methodName=v1.compute.instances.delete
o
protoPayload.methodName=beta.compute.instances.delete
o
protoPayload.methodName:compute.instances.delete

Puoi comunque utilizzare i nomi dei metodi senza versione nelle query degli audit log, ma devi correggere la query in modo che utilizzi l'operatore "has" (:) anziché l'operatore "uguale a" (=). Ad esempio: protoPayload.methodName:compute.instances.delete restituisce tutte le chiamate API di eliminazione delle istanze, indipendentemente dalla versione. Per scoprire di più sugli operatori, consulta i confronti.

Passaggi successivi