Questa pagina descrive in dettaglio le voci di log di Cloud Audit Logs: la loro struttura, come leggerle e come interpretarle.
Cloud Audit Logs fornisce i seguenti audit log per ciascun progetto Google Cloud: cartella e organizzazione:
- Audit log delle attività di amministrazione
- Audit log degli accessi ai dati
- Audit log degli eventi di sistema
- Audit log dei criteri negati
Per una panoramica generale di Cloud Audit Logs, consulta Audit log di Cloud.
Formato delle voci degli audit log
Una voce di audit log è un tipo di voce di log di Cloud Logging. Come tutte le voci di log di registrazione, una voce di log di controllo viene archiviata in un oggetto LogEntry
. Ciò che distingue una voce del log di controllo dalle altre voci del log è il campo protoPayload
. Nelle voci del log di controllo, il campo protoPayload
della voce del log contiene un oggetto AuditLog
che memorizza i dati dell'audit logging.
In breve, ogni voce dell'audit log è caratterizzata dalle seguenti informazioni:
- Il progetto, la cartella o l'organizzazione proprietaria della voce di log.
- La risorsa a cui si applica la voce di log. Queste informazioni includono di un tipo di risorsa Elenco delle risorse monitorate e e i valori aggiuntivi che indicano un'istanza specifica. Ad esempio, puoi visualizza le voci degli audit log da una singola VM di Compute Engine o da tutte le istanze VM.
- Un timestamp.
Un servizio: i servizi sono singoli prodotti Google Cloud, come Compute Engine, Cloud SQL o Pub/Sub. Ogni servizio è identificato per nome: Compute Engine è
compute.googleapis.com
, Cloud SQL ècloudsql.googleapis.com
e così via. Queste informazioni è elencato nel campoprotoPayload.serviceName
della voce dell'audit log.I tipi di risorsa appartengono a un singolo servizio, ma un servizio può avere diversi tipi di risorse. Per un elenco di servizi e risorse, vai a Mappare i servizi alle risorse.
Un payload, di tipo
protoPayload
. Il payload di ogni voce del log di controllo è un oggetto di tipoAuditLog
, che definisce un insieme di campi specifici per i log di controllo di Cloud, ad esempioserviceName
eauthenticationInfo
. Ha anche un campo facoltativo,metadata
, che i servizi Google Cloud utilizzano per elencare le specifiche del servizio le informazioni nella voce dell'audit log. Alcuni servizi Google Cloud utilizzano ancora il camposerviceData
precedente per elencare informazioni specifiche del servizio. Per una lista di servizi che usano il camposerviceData
, consulta Dati di controllo specifici del servizio.Un nome di log: le voci dei log di controllo appartengono ai log all'interno di progetti, cartelle e organizzazioni. I nomi dei log sono elencati di seguito:
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy
All'interno di un progetto, di una cartella o di un'organizzazione, questi nomi di log sono in genere le abbreviazioni activity, data_access, system_event e policy.
Esempio di voce di log di controllo
Questa sezione utilizza una voce di log di controllo di esempio per spiegare come trovare le informazioni più importanti nelle voci di log di controllo.
Il seguente esempio è una voce dell'audit log dell'attività di amministrazione scritta da
App Engine per registrare una modifica a un criterio Identity and Access Management (IAM) con PROJECT_ID my-gcp-project-id
. Per
brevità, alcune parti della voce di log sono omesse e alcuni campi
in evidenza:
{ protoPayload: { @type: "type.googleapis.com/google.cloud.audit.AuditLog", status: {}, authenticationInfo: { principalEmail: "user@example.com" }, serviceName: "appengine.googleapis.com", methodName: "SetIamPolicy", authorizationInfo: [...], serviceData: { @type: "type.googleapis.com/google.appengine.legacy.AuditData", policyDelta: { bindingDeltas: [ action: "ADD", role: "roles/logging.privateLogViewer", member: "user:user@example.com" ], } }, request: { resource: "my-gcp-project-id", policy: { bindings: [...], } }, response: { bindings: [ { role: "roles/logging.privateLogViewer", members: [ "user:user@example.com" ] } ], } }, insertId: "53179D9A9B559.AD6ACC7.B40604EF", resource: { type: "gae_app", labels: { project_id: "my-gcp-project-id" } }, timestamp: "2019-05-27T16:24:56.135Z", severity: "NOTICE", logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity", }
Ecco la query utilizzata per selezionare l'esempio di voce di audit log riportato sopra.
Può essere utilizzato in Esplora log, nell'API Logging o in Google Cloud CLI.
L'identificatore del progetto si trova nel nome del log e la query è veloce perché
Il campo logName
è indicizzato:
resource.type = "gae_app" logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
Se cerchi audit log da una singola istanza di un tipo di risorsa,
ad esempio gce_instance
, aggiungi un qualificatore di istanza:
resource.type = "gce_instance" resource.instance_id = "INSTANCE_ID" logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
Interpretazione della voce di log di controllo di esempio
Nell'esempio di voce del log di controllo riportato sopra, protoPayload
, insertId
,
I campi resource
, timestamp
, severity
e logName
mostrati fanno parte di
LogEntry
. Il valore del campo protoPayload
è un
AuditLog
. Incapsula i dati degli audit log.
Osservando l'esempio di voce di log di controllo riportato sopra, potresti avere alcune domande:
Si tratta di una voce di audit log? Si può dire in due modi:
Il campo
protoPayload.@type
ètype.googleapis.com/google.cloud.audit.AuditLog
.Il campo
logName
include il dominiocloudaudit.googleapis.com
.
Quale servizio ha scritto il log di controllo? Il log è stato scritto generati da App Engine. Queste informazioni sono elencate nel campo
protoPayload.serviceName
della voce dell'audit log.Quale operazione è sottoposta ad audit?
SetIamPolicy
, come specificato nel campoprotoPayload.methodName
, è in corso di revisione. Ulteriori informazioni sull'operazione sottoposta ad audit sono disponibili nell'oggettoAuditData
inprotoPayload.serviceData
.Quale risorsa è in corso di revisione? un'applicazione in esecuzione App Engine, associato a un progetto Google Cloud
my-gcp-project-id
è in fase di controllo. Puoi determinarloresource
, che specifica il tipo di risorsagae_app
e identificatore di progettomy-gcp-project-id
. In questo esempio, puoi trovare dettagli sul tipo di risorsa nell'elenco dei tipi di risorse monitorate.
Per ulteriori informazioni, consulta il tipo di LogEntry
,
AuditLog
type e
il tipo AuditData
IAM.
Audit log per operazioni a lunga esecuzione
Le API che sono operazioni a lunga esecuzione emettono due log di controllo: uno quando viene chiamata l'API e inizia l'operazione e uno al termine dell'operazione.
In questo caso, l'oggetto LogEntry
contiene un campo operation
. Voci di log
per la stessa operazione hanno lo stesso valore per LogEntry.operation.id
e LogEntry.operation.producer
. Il primo log scritto contiene LogEntry.operation.first=true
, mentre il log di completamento contiene LogEntry.operation.last=true
.
Nei casi in cui l'operazione viene completata immediatamente, esiste un solo log contenente sia LogEntry.operation.first=true
che LogEntry.operation.last=true
.
Queste API implementano il servizio Operations. In genere, questo servizio emette audit log quando viene chiamato. A seconda di quali API vengono chiamate,
protoPayload.methodName
corrisponde a uno dei seguenti:
google.longrunning.Operations.ListOperations
google.longrunning.Operations.GetOperation
google.longrunning.Operations.CancelOperation
google.longrunning.Operations.WaitOperation
google.longrunning.Operations.DeleteOperation
In questo caso LogEntry.operation
non è specificato, poiché questa API restituisce metadati sulle operazioni a lunga esecuzione, ma non è un'operazione a lunga esecuzione.
Per informazioni sulle API sottoposte a controllo, consulta Servizi Google con audit log, poiché possono variare in base al servizio.
Audit log per le API di streaming
Analogamente alle operazioni a lunga esecuzione, le API in streaming emettono due log di controllo: uno quando l'API viene chiamata per la prima volta e uno quando la connessione in streaming è terminata.
In questo caso, l'oggetto LogEntry
contiene un campo operation
e voci di log
per la stessa operazione hanno lo stesso valore per LogEntry.operation.id
e LogEntry.operation.producer
. Il primo log scritto ha LogEntry.operation.first=true
, mentre il log di completamento avrà LogEntry.operation.last=true
.
Questa API può anche emettere log di continuazione né LogEntry.operation.first
né
LogEntry.operation.last
impostato per indicare che lo stream rimane aperto.
Dati di controllo specifici del servizio
Alcuni servizi estendono le informazioni memorizzate nel loro
AuditLog
inserendo una struttura di dati supplementari nel campo serviceData
del log di controllo. Nella tabella seguente sono elencate le
servizi che utilizzano il campo serviceData
e fornisce un link al loro AuditData
di testo.
Visualizzazione degli audit log
Puoi eseguire query su tutti i log di controllo o su quelli in base al
nome del log di controllo. Il nome dell'audit log include l'identificatore della risorsa del progetto, della cartella, dell'account di fatturazione o dell'organizzazione Google Cloud per cui vuoi visualizzare le informazioni di audit logging.
Le query possono specificare campi LogEntry
indicizzati e, se utilizzi la pagina Analisi dei log, che supporta le query SQL, puoi visualizzare i risultati della query sotto forma di grafico.
Per ulteriori informazioni su come eseguire query sui log, consulta le pagine seguenti:
- Crea query in Esplora log.
- Query e visualizza i log in Analisi dei log.
- Query di esempio per gli approfondimenti sulla sicurezza.
Console
Nella console Google Cloud, puoi utilizzare Esplora log per recuperare le voci di audit log per il progetto, la cartella o organizzazione:
-
Nella console Google Cloud, vai alla pagina Esplora log:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.
Seleziona un progetto, una cartella o un'organizzazione Google Cloud esistente.
Per visualizzare tutti i log di controllo, inserisci una delle seguenti query nel campo dell'editor di query e poi fai clic su Esegui query:
logName:"cloudaudit.googleapis.com"
protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
Per visualizzare gli audit log per una risorsa e un tipo di audit log specifici, Nel riquadro Query Builder, procedi nel seguente modo:
In Tipo di risorsa, seleziona la risorsa Google Cloud la cui di controllo degli audit log che vuoi visualizzare.
In Nome log, seleziona il tipo di log di controllo da visualizzare:
- Per gli audit log per le attività di amministrazione, seleziona attività.
- Per gli audit log di accesso ai dati, seleziona data_access.
- Per gli audit log degli eventi di sistema, seleziona system_event.
- Per gli audit log relativi ai criteri negati, seleziona policy.
Fai clic su Esegui query.
Se non visualizzi queste opzioni, vuol dire che non sono disponibili audit log di questo tipo nel progetto, nella cartella o nell'organizzazione Google Cloud.
Se riscontri problemi quando provi a visualizzare i log in Esplora log, consulta le informazioni sulla risoluzione dei problemi.
Per ulteriori informazioni sull'esecuzione di query utilizzando Esplora log, consulta Crea query in Esplora log. Per informazioni su come riepilogare le voci di log in Esplora log utilizzando Gemini, consulta Riepilogare le voci di log con l'assistenza di Gemini.
gcloud
Google Cloud CLI fornisce un'interfaccia a riga di comando per l'API Logging. Fornisci un identificatore di risorsa valido in ciascun log i nomi degli utenti. Ad esempio, se la query include un valore PROJECT_ID, allora il valore l'identificatore del progetto che fornisci deve fare riferimento all'elemento attualmente selezionato progetto Google Cloud.
Per leggere le voci di log di controllo a livello di progetto Google Cloud, esegui il seguente comando:
gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \ --project=PROJECT_ID
Per leggere le voci dei log di controllo a livello di cartella, esegui il seguente comando:
gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \ --folder=FOLDER_ID
Per leggere le voci dei log di controllo a livello di organizzazione, esegui il seguente comando:
gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \ --organization=ORGANIZATION_ID
Per leggere le voci dei log di controllo a livello di account di fatturazione Cloud, esegui il seguente comando:
gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \ --billing-account=BILLING_ACCOUNT_ID
Aggiungi il flag --freshness
al tuo comando per leggere i log risalenti a più di un giorno fa.
Per ulteriori informazioni sull'utilizzo dell'interfaccia a riga di comando gcloud, consulta
gcloud logging read
.
API
Quando crei le query, fornisci un identificatore di risorsa valido in ogni i nomi dei log. Ad esempio, se la query include un valore PROJECT_ID, l'identificatore del progetto che fornisci deve fare riferimento progetto Google Cloud.
Ad esempio, per utilizzare l'API Logging per visualizzare a livello di progetto di audit log, segui questi passaggi:
Vai alla sezione Prova questa API nella documentazione del metodo
entries.list
.Inserisci quanto segue nella sezione Corpo della richiesta del modulo Prova questa API. Fai clic su questo modulo precompilato. compila automaticamente il corpo della richiesta, ma devi fornire un indirizzo PROJECT_ID in ciascuno dei nomi dei log.
{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
Fai clic su Execute (Esegui).