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 stati deprecati. Puoi identificare le voci dei log delle attività in base al nome del log:
logName: "projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
Le informazioni contenute negli audit log di Compute Engine sono le stesse disponibili nei log delle attività e non solo, ma vengono presentate in modo diverso. Devi quindi modificare le query.
Come eseguire la migrazione dai log delle attività agli audit log
Per utilizzare audit log al posto di log delle attività, devi modificare le query. Segui questa procedura:
Trova le query che avevi inserito precedentemente. Ad esempio, potresti averle conservate in una ricerca salvata in Esplora log o potresti aver creato uno script utilizzando l'API o l'SDK. Per scoprire di più su come monitorare le risorse, consulta la documentazione relativa al logging.
Sostituisci i campi dei log delle attività con quelli degli audit log appropriati. Consulta la tabella per visualizzare come i campi siano mappati tra loro.
Ad esempio, se la query precedente del log delle attività ricercava un campo denominato
jsonPayload.resource.name
, il campo della query dell'audit log deve essereprotoPayload.resourceName
.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:
Eseguire query per attività relative a una risorsa specifica
Esempio di query | |
---|---|
Log delle attività precedente | gcloud logging read jsonPayload.resource.name="VM_NAME"
|
Audit log | Utilizza una delle seguenti opzioni
Con l'opzione 1, l'operatore "ha" ( |
Eseguire query sulle voci di log delle attività di amministratore recenti
Esempio di query | |
---|---|
Log delle attività precedente | gcloud logging read logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
|
Audit log | gcloud logging read logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" |
Eseguire query sulle voci di log di creazione delle istanze recenti
Esempio di query | |
---|---|
Log delle attività precedente | gcloud logging read 'logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log" AND jsonPayload.event_subtype="compute.instances.insert"' |
Audit log | gcloud logging read 'logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND protoPayload.methodName:"compute.instances.insert"' |
Eseguire query per l'inizio di tutte le operazioni di creazione di istanze
Esempio di query | |
---|---|
Log delle attività precedente | gcloud logging read 'jsonPayload.event_type="GCE_API_CALL" AND jsonPayload.event_subtype="compute.instances.insert"' |
Audit log | 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à precedente | gcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE" |
Audit log | gcloud logging read operation.last="true" |
Differenze tra i log delle attività e gli audit log
Leggi questa sezione per scoprire quali sono le differenze strutturali tra gli audit log e i log delle attività. Tieni presente queste differenze quando converti le precedenti query dei log delle attività in query di audit log. Ad esempio, nelle query, sostituisci tutti i nomi dei precedenti campi dei log delle attività con i nomi dei corrispondenti campi degli audit log.
Sebbene restituiscano entrambi oggetti voce di log, l'audit logging e il logging delle attività presentano le seguenti differenze:
- Nomi dei campi diversi. Per maggiori dettagli, consulta la tabella Mappatura dei nomi dei campi.
- Valori dei campi diversi, tra cui:
- Nomi dei log diversi: gli audit log hanno nomi che contengono
cloudaudit.googleapis.com
. - Payload diversi: gli audit log restituiscono un campo
protoPayload
al posto di un campojsonPayload
. - Nomi delle risorse completi: gli audit log 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 controllo della versione: gli audit log restituiscono nomi dei metodi
che includono la relativa versione, ad esempio
v1
.
- Nomi dei log diversi: gli audit log hanno nomi che contengono
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" ... } |
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 nelle query i campi dei log delle attività ai campi degli audit log corrispondenti.
Campi
Utilizza la seguente tabella per sostituire nelle query aggiornate i precedenti campi dei log delle attività con i campi degli audit log.
Ad esempio, se la precedente query del log delle attività conteneva un
filtro basato su
jsonPayload.resource.type
, il filtro della query dell'audit log deve essere basato su
resource.type
.
Campo del log delle attività precedente | Campo dell'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 |
Un elemento tra:
|
logName |
logName |
receiveTimestamp |
receiveTimestamp |
resource.labels |
resource.labels |
severity |
severity |
timestamp |
timestamp |
Valori del campo
Utilizza le seguenti tabelle per mappare i valori dei precedenti campi dei log delle attività ai valori dei campi degli audit log. Rispetto ai log delle attività, gli audit log hanno più valori nome del log e valori payload differenti. Le voci degli audit log restituiscono anche nomi di risorse completi e nomi di metodi sottoposti al controllo della versione.
Nomi log
Per trovare una voce dell'audit log, cerca un logName
che includa
cloudaudit.googleapis.com
.
Nome log | Contenuti log | |
---|---|---|
Log delle attività precedente | projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log | Attività di amministrazione ed eventi di sistema |
Audit log | 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 protoPayload
anziché jsonPayload
.
Tipo payload | Esempio di payload | |
---|---|---|
Log delle attività precedente | 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" } |
Audit log | 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
Negli audit log, i nomi delle risorse API (nel campo protoPayload.resourceName
) risultano
completi, ad esempio:
resourceName: "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
Puoi comunque utilizzare nomi parziali, ma devi correggere la query in modo da avvalerti dell'operatore "ha"
(:
) anziché dell'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
) sono
preceduti dalla relativa versione, ad esempio: v1.compute.instances.delete
.
Campo | Valore | Esempio di query | |
---|---|---|---|
Log delle attività precedente | jsonPayload.event_subtype | RESOURCE.METHOD | jsonPayload.event_subtype=compute.instances.delete |
Audit log | 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 |
Nelle query dell'audit log puoi comunque utilizzare nomi di metodi non sottoposti al controllo della versione, ma devi correggere la query in modo da avvalerti dell'operatore "ha" (:
) anziché dell'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, fai riferimento
ai confronti.
Passaggi successivi
- Leggi l'avvio rapido per l'utilizzo degli strumenti di logging.
- Scopri di più sulla visualizzazione delle voci di log.
- Scopri come visualizzare i log con i filtri di logging avanzati.
- Scopri di più su Cloud Audit Logs di Compute Engine.