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.
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.
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 cercareprotoPayload.resourceName
in alternativa.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"' |
Esecuzione di query per l'avvio di tutte le operazioni di creazione dell'istanza
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"' |
Esecuzione di 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 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
.
- Nomi di log diversi: gli audit log hanno nomi di log che contengono
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:
|
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 log | Contenuti dei log | |
---|---|---|
Log delle attività legacy | projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log | Amministratore attività 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 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
.
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 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
- Leggi la guida rapida sull'utilizzo degli strumenti di logging.
- Scopri di più sulla visualizzazione delle voci di log.
- Scopri di più sulla visualizzazione dei log con filtri avanzati di logging.
- Scopri di più su Compute Engine Audit log di Cloud.