Migrazione dai log delle attività agli audit log


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

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

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. ma gli audit log presentano le informazioni in modo diverso rispetto a 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. Utilizza quanto segue passaggi.

  1. Trovare le query precedenti. Ad esempio, potresti averli salvati in un ricerca salvata in Esplora log o creata uno script utilizzando l'API o l'SDK. Per ulteriori informazioni su come puoi per monitorare le risorse, consulta Logging documentazione.

  2. Sostituisci i campi del log delle attività con quelli appropriati dell'audit log. Consulta la tabella per vedere come i campi vengono mappati a ogni e l'altro.

    Ad esempio, se la query del log delle attività legacy ha cercato un campo denominato jsonPayload.resource.name, la nuova query del log di controllo deve cercare protoPayload.resourceName in alternativa.

  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:

Esecuzione di query per attività relative a una risorsa specifica

Esempio di query
Log delle attività legacygcloud 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, "ha" L'operatore (:) corrisponde a tutti a risorse del tuo progetto che hanno un nome che include VM_NAME. Con l'opzione 2, "uguale a" operatore (=) trova corrispondenze solo in una specifica qualificata con quel nome.

Esecuzione di query sulle voci di log delle attività recenti dell'amministratore

Esempio di query
Log delle attività legacygcloud 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"

Esecuzione di query sulle voci di log di creazione dell'istanza recenti

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"'
Log di controllogcloud 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"'
Log di controllogcloud 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"
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 gli audit log sono strutturati in modo diverso rispetto log delle attività. Tieni presenti queste differenze quando converti il log delle attività precedente all'interno delle query dell'audit log. Ad esempio, nelle query, sostituisci tutti i pod nomi dei campi del log delle attività con i nomi dei campi corrispondenti dell'audit log.

Mentre l'audit logging e il logging delle attività tornano voce di log presentano le seguenti differenze:

  • Nomi di campi diversi. Consulta la tabella mappatura dei nomi dei campi per i dettagli.
  • Diversi valori dei campi, tra cui:
    • Nomi di log diversi: gli audit log hanno nomi di log che contengono cloudaudit.googleapis.com.
    • Payload diversi: gli audit log restituiscono un campo protoPayload. anziché jsonPayload.
    • Nomi delle risorse completi: vengono restituiti gli audit log nomi delle risorse che includono il loro percorso, ad esempio: projects/my-project/zones/us-east1-b/instances/my-instance-name.
    • Nomi dei metodi con più versioni: gli audit log restituiscono i 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"
  ...
}
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 dei log delle attività agli audit log corrispondenti campi nelle tue query.

Campi

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

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

Campo 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 all'audit log valori dei campi. Rispetto ai log delle attività, gli audit log hanno i valori di nome log e diversi valori di payload. Le voci degli audit log restituiscono inoltre nomi completi delle risorse e controlli delle versioni nomi dei metodi.

Nomi log

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

Nome logContenuti dei log
Log delle attività legacyprojects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_logAmministratore attività 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 dell'audit log, 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"
    }
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 questi payload sono correlati tra loro e come mappare campi del log delle attività legacy ai campi del log di controllo, mappature dei campi delle voci di log.

Nomi delle risorse

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

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

Puoi comunque usare nomi parziali, ma devi correggere la query per utilizzare il carattere "ha" all'operatore (:) al posto di "uguale a" operatore.

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) sono con prefisso della versione, ad esempio: v1.compute.instances.delete.

CampoValoreEsempio di query
Log delle attività legacyjsonPayload.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 continuare a utilizzare i nomi dei metodi senza versione nelle query del log di controllo, ma devi correggere la query per utilizzare il comando all'operatore (:) al posto di "uguale a" dell'operatore (=). Ad esempio: protoPayload.methodName:compute.instances.delete restituisce tutte le chiamate API di eliminazione delle istanze, indipendentemente dalla versione. Per ulteriori informazioni informazioni sugli operatori, vedi confronti.

Passaggi successivi