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 ogni progetto, cartella e organizzazione: Google Cloud
- Audit log delle attività di amministrazione
- Audit log degli accessi ai dati
- Audit log degli eventi di sistema
- Audit log negati da criteri
Per una panoramica generale di Cloud Audit Logs, vedi Cloud Audit Logs.
Formato delle voci di audit log
Una voce di audit log è un tipo di voce di log di Cloud Logging. Come tutte le voci di log di Logging, una voce di log di controllo viene archiviata in un oggetto LogEntry
. Ciò che distingue una voce di log di controllo dalle altre voci di log è il campo protoPayload
. Nelle voci
dell'audit log, il campo protoPayload
della voce di log contiene un
oggetto AuditLog
che archivia i dati
dell'audit log.
In breve, ogni voce di log di controllo è 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 sono costituite da un tipo di risorsa dell' elenco delle risorse monitorate e da valori aggiuntivi che indicano un'istanza specifica. Ad esempio, puoi visualizzare le voci di audit log di una singola istanza VM di Compute Engine o di tutte le istanze VM.
- Un timestamp.
Un servizio: i servizi sono singoli prodotti, come Compute Engine, Cloud SQL o Pub/Sub. Google Cloud Ogni servizio è identificato per nome: Compute Engine è
compute.googleapis.com
, Cloud SQL ècloudsql.googleapis.com
e così via. Queste informazioni sono elencate nel campoprotoPayload.serviceName
della voce del log di controllo.I tipi di risorse appartengono a un singolo servizio, ma un servizio può avere diversi tipi di risorse. Per un elenco di servizi e risorse, vai a Mappatura dei servizi alle risorse.
Un payload, ovvero il tipo
protoPayload
. Il payload di ogni voce di log di controllo è un oggetto di tipoAuditLog
, che definisce un insieme di campi specifici di Cloud Audit Logs, comeserviceName
eauthenticationInfo
. Dispone anche di un campo facoltativo,metadata
, che i servizi Google Cloud utilizzano per elencare informazioni specifiche del servizio nella voce di log di controllo. Alcuni Google Cloud servizi utilizzano ancora il camposerviceData
precedente per elencare informazioni specifiche del servizio. Per un elenco dei servizi che utilizzano il camposerviceData
, consulta Dati di audit specifici del servizio.Un nome di log: le voci di log di controllo appartengono ai log all'interno di account di fatturazione, progetti, cartelle e organizzazioni. La tabella seguente elenca i nomi dei log:
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 account di fatturazione, un progetto, una cartella o un'organizzazione, questi nomi dei log vengono in genere abbreviati in activity, data_access, system_event e policy.
Voce di audit voce di log
Questa sezione utilizza una voce di audit log di esempio per spiegare come trovare le informazioni più importanti nelle voci di audit log.
Il seguente esempio è una voce di 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 sono
evidenziati:
{ 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", }
Di seguito è riportata la query utilizzata per selezionare il campione precedente di voci di audit log. La query può essere utilizzata in Esplora log, nell'API Logging o in Google Cloud CLI. L'identificatore del progetto si trova nel nome del log:
resource.type = "gae_app" logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
Se cerchi audit log di 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 audit log di esempio
Nell'esempio di voce di log di controllo precedente, i campi protoPayload
,
insertId
,
resource
, timestamp
, severity
e logName
mostrati fanno parte dell'oggetto
LogEntry
. Il valore del campo protoPayload
è un oggetto
AuditLog
. Contiene i dati di audit log.
Se esamini l'esempio di voce di log di controllo, potresti avere alcune domande:
Si tratta di una voce di log di controllo? Sì, e puoi capirlo 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 l'audit log? Il log è stato scritto da App Engine. Queste informazioni sono elencate nel campo
protoPayload.serviceName
della voce del log di controllo.Quale operazione viene sottoposta ad audit?
SetIamPolicy
, come specificato nel campoprotoPayload.methodName
, è in fase di verifica. Maggiori informazioni sull'operazione sottoposta ad audit sono disponibili nell'oggettoAuditData
inprotoPayload.serviceData
.Quale risorsa viene sottoposta ad audit? Un'applicazione in esecuzione in App Engine, associata a un Google Cloud progetto
my-gcp-project-id
, è in fase di controllo. Puoi determinarlo dal camporesource
, che specifica il tipo di risorsagae_app
e l'identificatore del progettomy-gcp-project-id
. In questo esempio, troverai i dettagli sul tipo di risorsa nell' elenco dei tipi di risorse monitorate.
Per saperne di più, consulta il tipo LogEntry
, il tipo
AuditLog
e
il tipo AuditData
di IAM.
Audit log per le operazioni a lunga esecuzione
Le API che sono operazioni a lunga esecuzione emettono due log di controllo: uno quando viene chiamata l'API e l'operazione inizia e uno al termine dell'operazione.
In questo caso, l'oggetto LogEntry
contiene un campo operation
.
Le voci di log per la stessa operazione hanno lo stesso valore sia per LogEntry.operation.id
che per LogEntry.operation.producer
.
La prima voce di log scritta ha LogEntry.operation.first=true
,
mentre la voce di log di completamento ha LogEntry.operation.last=true
.
Nei casi in cui l'operazione viene completata immediatamente o non riesce, è presente una sola voce di log
contenente sia LogEntry.operation.first=true
sia LogEntry.operation.last=true
.
Alcuni servizi non compilano il campo LogEntry.operation
quando l'operazione non va a buon fine. Tuttavia, puoi determinare quali operazioni sono operazioni di lunga durata
consultando la documentazione relativa alla registrazione degli audit del servizio.
Queste API implementano il servizio Operations.
Questo servizio in genere emette voci di audit log quando viene chiamato. A seconda delle API chiamate, protoPayload.methodName
può essere uno dei seguenti valori:
google.longrunning.Operations.ListOperations
google.longrunning.Operations.GetOperation
google.longrunning.Operations.CancelOperation
google.longrunning.Operations.WaitOperation
google.longrunning.Operations.DeleteOperation
LogEntry.operation
non è specificato in questo caso, in quanto questa API restituisce metadati
sulle operazioni a lunga esecuzione, ma non è un'operazione a lunga esecuzione.
Per informazioni dettagliate sulle API sottoposte ad audit, consulta Google Cloud Servizi con audit log, in quanto possono variare in base al servizio.
Audit log per le API di streaming
Analogamente alle operazioni a lunga esecuzione, le API di streaming emettono due voci di audit log; una quando l'API viene chiamata per la prima volta e una quando la connessione di streaming è terminata.
In questo caso, l'oggetto LogEntry
contiene un campo operation
e le voci di log per la stessa operazione hanno lo stesso valore sia per LogEntry.operation.id
che per 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 voci di log di continuazione senza che LogEntry.operation.first
o LogEntry.operation.last
siano impostati per indicare che lo stream rimane aperto.
Dati di audit specifici del servizio
Alcuni servizi estendono le informazioni memorizzate nel
AuditLog
inserendo una struttura di dati supplementare
nel campo serviceData
della voce del log di controllo. La seguente tabella elenca i servizi che utilizzano il campo serviceData
e fornisce un link al tipo AuditData
.
Visualizzazione degli audit log
Puoi eseguire query su tutti i log di controllo o su log specifici in base al nome. Il nome dell'audit log include l'identificatore della risorsa del progetto, della cartella, dell'account di fatturazione o dell' Google Cloud organizzazione per cui vuoi visualizzare le informazioni di audit logging.
Le query possono specificare campi LogEntry
indicizzati.
Per ulteriori informazioni su come eseguire query sui log, consulta
Creare query in Esplora log
Esplora log consente di visualizzare e filtrare le singole voci di log. Se vuoi utilizzare SQL per analizzare gruppi di voci di log, utilizza la pagina Analisi dei log. Per ulteriori informazioni, vedi:
- Eseguire query e visualizzare i log in Analisi dei log.
- Query di esempio per gli approfondimenti sulla sicurezza.
- Risultati della query del grafico.
La maggior parte degli audit log può essere visualizzata in Cloud Logging utilizzando la consoleGoogle Cloud , Google Cloud CLI o l'API Logging. Tuttavia, per gli audit log relativi alla fatturazione, puoi utilizzare solo Google Cloud CLI o l'API Logging.
Console
Nella console Google Cloud , puoi utilizzare Esplora log per recuperare le voci di audit log per il tuo progetto, la tua cartella o la tua organizzazione Google Cloud :
-
Nella Google Cloud console, 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, quindi fai clic su Esegui query:
logName:"cloudaudit.googleapis.com"
protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
Per visualizzare i log di controllo per un tipo di risorsa e di log di controllo specifici, nel riquadro Generatore di query:
In Tipo di risorsa, seleziona la risorsa di cui vuoi visualizzare gli audit log. Google Cloud
In Nome log, seleziona il tipo di audit log che vuoi visualizzare:
- Per gli audit log delle attività di amministrazione, seleziona activity.
- 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 negati da criteri, seleziona policy.
Fai clic su Esegui query.
Se non vedi queste opzioni, significa 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 per la risoluzione dei problemi.
Per ulteriori informazioni sull'esecuzione di query utilizzando Esplora log, vedi Creare query in Esplora log.
gcloud
Google Cloud CLI fornisce un'interfaccia a riga di comando per l'API Logging. Fornisci un identificatore di risorsa valido in ciascuno dei nomi dei log. Ad esempio, se la query include PROJECT_ID, l'identificatore del progetto che fornisci deve fare riferimento al progettoGoogle Cloud attualmente selezionato.
Per leggere le voci del 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 del log di controllo a livello di cartella, esegui il comando seguente:
gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \ --folder=FOLDER_ID
Per leggere le voci di audit log a livello di organizzazione, esegui questo comando:
gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \ --organization=ORGANIZATION_ID
Per leggere le voci del log di controllo a livello di account di fatturazione Cloud, esegui questo comando:
gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \ --billing-account=BILLING_ACCOUNT_ID
Aggiungi il flag --freshness
al comando per leggere i log più vecchi di un giorno.
Per saperne di più sull'utilizzo di gcloud CLI, consulta
gcloud logging read
.
REST
Quando crei le query, fornisci un identificatore di risorsa valido in ciascuno dei nomi dei log. Ad esempio, se la query include PROJECT_ID, l'identificatore di progetto che fornisci deve fare riferimento al progetto Google Cloud attualmente selezionato.
Ad esempio, per utilizzare l'API Logging per visualizzare le voci di audit log a livello di progetto, procedi nel seguente modo:
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. Se fai clic su questo modulo precompilato, il corpo della richiesta viene compilato automaticamente, ma devi fornire un PROJECT_ID valido in ciascuno dei nomi dei log.
{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
Fai clic su Esegui.