Migrazione dai log delle attività agli audit log


Se utilizzi i log delle attività per visualizzare le attività di amministrazione e gli eventi di sistema di Compute Engine, 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 del log attività in base al nome del log:

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

I log di controllo di Compute Engine contengono le stesse informazioni disponibili tramite i log delle attività e altro ancora. Tuttavia, i log di controllo presentano le informazioni in modo diverso rispetto ai log delle attività. Dovrai quindi 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 i seguenti passaggi.

  1. Trovare le query precedenti. Ad esempio, potresti averli salvati in una sulla ricerca salvata in Logs Explorer o creato uno script utilizzando l'API o l'SDK. Per scoprire di più su come monitorare le risorse, consulta la documentazione relativa alla registrazione.

  2. Sostituisci i campi del log delle attività con i campi degli audit log appropriati. Consulta la tabella per vedere come i campi si mappano tra loro.

    Ad esempio, se la query del log delle attività precedente cercava un campo denominato jsonPayload.resource.name, la nuova query del log di controllo deve cercare invece protoPayload.resourceName.

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

Esempi

Ecco alcuni esempi di query convertite:

Eseguire query per attività relative a una risorsa specifica

Esempio di query
Log delle attività precedentegcloud logging read jsonPayload.resource.name="VM_NAME"
Log di controllo

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 "ha" (:) corrisponde a tutte le risorse del progetto il cui nome include VM_NAME. Con l'opzione 2, l'operatore "è uguale a" (=) corrisponde solo a una risorsa completa specifica con quel nome.

Eseguire query sulle voci dei log delle attività di amministrazione recenti

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

Eseguire query sulle voci dei log di creazione delle istanze recenti

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

Eseguire una query per l'inizio di tutte le operazioni di creazione di istanze

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

Eseguire query per il completamento di qualsiasi operazione

Esempio di query
Log delle attività precedentegcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE"
Log di controllogcloud logging read operation.last="true"

Differenze tra i log delle attività e gli audit log

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

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

  • Nomi di campi diversi. Per maggiori dettagli, consulta la tabella Mappatura dei nomi dei campi.
  • Valori di campo diversi, tra cui:
    • Nomi dei log diversi: i log di controllo hanno nomi che contengonocloudaudit.googleapis.com.
    • Payload diversi: i log di controllo restituiscono un campo protoPayload instead of a jsonPayload.
    • Nomi risorse completi: i log di controllo restituiscono nomi delle risorse che includono il relativo percorso, ad esempio: projects/my-project/zones/us-east1-b/instances/my-instance-name.
    • Nomi dei metodi con versione: i log di controllo restituiscono i nomi dei metodi che includono la relativa versione, ad esempio v1.

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

Esempio di voce di log
Log delle attività precedente
{
  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"
  ...
}
Log di controllo
{
  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 del log di controllo corrispondenti nelle query.

Campi

Utilizza la tabella seguente per sostituire i campi del log delle attività precedenti con i campi del log di controllo nelle query aggiornate.

Ad esempio, se la query del log delle attività precedente conteneva un filtro basato su jsonPayload.resource.type, la nuova query del log di controllo deve filtrare su resource.type.

Campo del log delle attività precedente Campo del log di controllo
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à precedenti ai valori dei campi dei log di controllo. Rispetto ai log delle attività, i log di controllo hanno più valori di nome del log e valori di payload diversi. Le voci del log di controllo restituiscono anche nomi di risorse completi e nomi di metodi con versione.

Nomi dei log

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

Nome logContenuti del log
Log delle attività precedenteprojects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_logAttività di amministrazione ed eventi di sistema
Log di controlloprojects/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 protoPayload anziché jsonPayload.

Tipo di payloadEsempio di payload
Log delle attività precedentejsonPayload
    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"
    }
Log di controlloprotoPayload
    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 come sono correlati tra loro questi payload e come mappare i campi dei log delle attività precedenti ai campi degli audit log, consulta le mappature dei campi delle voci di log.

Nomi delle risorse

Nei log di controllo, 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 in modo da utilizzare l'operatore "ha" (:) anziché l'operatore "è uguale a".

Utilizza una delle seguenti opzioni nelle query dei log di controllo 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 dell'API (nel campo protoPayload.methodName) sono preceduti dalla relativa versione, ad esempio: v1.compute.instances.delete.

CampoValoreEsempio di query
Log delle attività precedentejsonPayload.event_subtypeRESOURCE.METHODjsonPayload.event_subtype=compute.instances.delete
Log di controlloprotoPayload.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 dei log di controllo, ma devi correggere la query in modo da utilizzare l'operatore "ha" (:) 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 ulteriori informazioni sugli operatori, consulta i confronti.

Passaggi successivi