Se utilizzi i log delle attività per visualizzare le attività di amministrazione e gli eventi di sistema di Compute Engine, leggi questa guida per scoprire 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. 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. Segui i seguenti passaggi.
Trovare le query precedenti. Ad esempio, potresti averli salvati in una ricerca salvata in Logs Explorer o creato uno script utilizzando l'API o l'SDK. Per ulteriori informazioni su come puoi per monitorare le risorse, consulta Logging documentazione.
Sostituisci i campi del log delle attività con i campi degli audit log appropriati. Consulta la tabella per vedere come i campi vengono mappati a ogni e l'altro.
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 inveceprotoPayload.resourceName
.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à legacy | gcloud logging read jsonPayload.resource.name="VM_NAME"
|
Log di controllo | Utilizza una delle seguenti opzioni
Con l'opzione 1, "ha" L'operatore ( |
Esecuzione di query sulle voci di log delle attività recenti dell'amministratore
Esempio di query | |
---|---|
Log delle attività legacy | gcloud logging read logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
|
Log di controllo | gcloud 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à legacy | gcloud logging read 'logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log" AND jsonPayload.event_subtype="compute.instances.insert"' |
Log di controllo | gcloud 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à legacy | gcloud logging read 'jsonPayload.event_type="GCE_API_CALL" AND jsonPayload.event_subtype="compute.instances.insert"' |
Log di controllo | gcloud 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à legacy | gcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE" |
Log di controllo | gcloud 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 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.
Mentre l'audit logging e il logging delle attività tornano voce di log presentano le seguenti differenze:
- Nomi di campi diversi. Per maggiori dettagli, consulta la tabella Mappatura dei nomi dei campi.
- Diversi valori dei campi, tra cui:
- Nomi dei log diversi: i log di controllo hanno nomi che contengono
cloudaudit.googleapis.com
. - Payload diversi: i log di controllo restituiscono un campo
protoPayload
instead of ajsonPayload
. - 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 versione: i log di controllo restituiscono i nomi dei metodi
che includono la relativa versione, ad esempio
v1
.
- Nomi dei log diversi: i log di controllo hanno nomi che contengono
Ecco un esempio che mostra le differenze nei nomi dei log e nei payload:
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 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 del log delle attività precedente | 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:
|
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 log
Per trovare una voce del log di controllo, cerca un logName
che includa
cloudaudit.googleapis.com
.
Nome log | Contenuti dei log | |
---|---|---|
Log delle attività precedente | projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log | Attività di amministrazione ed eventi di sistema |
Log di controllo | projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity | Attività di amministrazione |
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event | Eventi di sistema | |
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access | Accesso ai dati |
Payload
In ogni voce dell'audit log, cerca un protoPayload
anziché un jsonPayload
.
Tipo di payload | Esempio di payload | |
---|---|---|
Log delle attività legacy | 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" } |
Log di controllo | protoPayload | 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
.
Campo | Valore | Esempio di query | |
---|---|---|---|
Log delle attività legacy | jsonPayload.event_subtype | RESOURCE.METHOD | jsonPayload.event_subtype=compute.instances.delete |
Log di controllo | protoPayload.methodName | API_VERSION.RESOURCE.METHOD | protoPayload.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 maggiori informazioni
informazioni sugli operatori, vedi
confronti.
Passaggi successivi
- Leggi la guida rapida sull'utilizzo degli strumenti di logging.
- Scopri di più sulla visualizzazione delle voci di log.
- Scopri come visualizzare i log con filtri di logging avanzati.
- Scopri di più su Cloud Audit Logs di Compute Engine.