In questa pagina vengono descritte 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 dei criteri negati
Per una panoramica generale di Cloud Audit Logs, consulta Cloud Audit Logs.
Formato delle voci di log di controllo
Una voce di log di controllo è un tipo di voce di log di Cloud Logging. Come tutte le voci dei log di logging, una voce di log di controllo viene archiviata in un oggetto LogEntry
. Il campo protoPayload
distingue la voce di un log di controllo da altre voci di log. Nelle voci dell'audit log, il campo protoPayload
della voce di log contiene un oggetto AuditLog
in cui sono archiviati i dati di audit logging.
In breve, ogni voce di log di controllo è caratterizzata dalle seguenti informazioni:
- Il progetto, la cartella o l'organizzazione a cui appartiene la 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 di valori aggiuntivi che indicano un'istanza specifica. Ad esempio, puoi visualizzare le voci del log di controllo da una singola istanza 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 dal nome: Compute Engine è
compute.googleapis.com
, Cloud SQL ècloudsql.googleapis.com
e così via. Queste informazioni sono elencate nel campoprotoPayload.serviceName
della voce di 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, consulta la pagina Mappatura dei servizi a risorse.
Un payload, che è il tipo
protoPayload
. Il payload di ogni voce dell'audit log è un oggetto di tipoAuditLog
, che definisce un insieme di campi specifici per Cloud Audit Logs, comeserviceName
eauthenticationInfo
. Ha anche un campo facoltativo,metadata
, che i servizi Google Cloud utilizzano per elencare le informazioni specifiche del servizio nella voce dell'audit log. Alcuni servizi Google Cloud utilizzano ancora il vecchio camposerviceData
per elencare informazioni specifiche del servizio. Per un elenco dei servizi che utilizzano il camposerviceData
, consulta Dati di controllo specifici del servizio.Un nome di log: le voci dell'audit log appartengono ai log all'interno di progetti, cartelle e organizzazioni. Di seguito sono elencati 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 progetto, una cartella o un'organizzazione, questi nomi di log sono in genere abbreviati di activity, data_access, system_event e policy.
Esempio di voce di log di controllo
Questa sezione utilizza una voce dell'audit log di esempio per spiegare come trovare le informazioni più importanti nelle voci dell'audit log.
L'esempio seguente è una voce di log di controllo dell'attività di amministrazione scritta da App Engine per registrare una modifica a un criterio IAM (Identity and Access Management) con PROJECT_ID my-gcp-project-id
. Per maggiore chiarezza, alcune parti della voce di log vengono omesse e alcuni campi vengono 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 l'esempio di voce di log di controllo riportato sopra.
Può essere utilizzato in Esplora log, nell'API Logging o in Google Cloud CLI.
L'identificatore del progetto è 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"
Interpretare la voce di log di controllo di esempio
Nell'esempio di voce del log di controllo riportato sopra, i campi protoPayload
, insertId
,
resource
, timestamp
, severity
e logName
mostrati fanno parte dell'oggetto
LogEntry
. Il valore del campo protoPayload
è un oggetto AuditLog
. Incapsula i dati di audit logging.
Osservando l'esempio di voce di log di controllo riportato sopra, potresti avere bisogno di chiarimenti:
È una voce di log di controllo? Puoi riconoscerlo 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 da App Engine. Queste informazioni sono elencate nel campo
protoPayload.serviceName
della voce del log di controllo.Quale operazione viene controllata? È in corso l'audit di
SetIamPolicy
, come specificato nel campoprotoPayload.methodName
. Scopri di più sull'operazione sottoposta a controllo nell'oggettoAuditData
inprotoPayload.serviceData
.Quale risorsa è in fase di controllo? È in corso l'audit di un'applicazione in esecuzione in App Engine, associata a un progetto Google Cloud
my-gcp-project-id
. Puoi trovarlo nel 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 ulteriori informazioni, consulta il tipo LogEntry
, il tipo AuditLog
e il tipo AuditData
IAM.
Voci di log di controllo di grandi dimensioni o di lunga durata
Una singola operazione controllata si suddivide in più voci di log se l'operazione viene eseguita in modo asincrono o se genera un record AuditLog
di grandi dimensioni. Se esistono più voci di log per la stessa operazione, l'oggetto LogEntry
conterrà un campo operation
e le voci della stessa operazione avranno lo stesso valore per LogEntry.operation.id
e LogEntry.operation.producer
.
Nell'esempio di voce di log di controllo precedente, il campo operation
non è presente, il che significa che tutte le informazioni di controllo sono contenute in una singola voce di log.
Dati di controllo specifici del servizio
Alcuni servizi estendono le informazioni archiviate in AuditLog
inserendo una struttura di dati supplementari nel campo serviceData
dell'audit log. La tabella seguente elenca i servizi che utilizzano il campo serviceData
e fornisce un link al tipo AuditData
.
Visualizzazione degli audit log
Per eseguire una query sugli audit log, devi conoscere il nome dell'audit log, che include l'identificatore di risorsa
del progetto, della cartella, dell'account di fatturazione o dell'organizzazione di Google Cloud di cui vuoi visualizzare le informazioni di audit logging. Nella query, puoi specificare ulteriormente altri campi LogEntry
indicizzati, come resource.type
. Per ulteriori informazioni sull'esecuzione di query, consulta Creazione di query in Esplora log.
Console
Nella console Google Cloud, puoi utilizzare Esplora log per recuperare le voci degli audit log per il progetto, la cartella o l'organizzazione Google Cloud:
Nella console Google Cloud, vai alla pagina Logging> Esplora log.
Seleziona un progetto, una cartella o un'organizzazione Google Cloud esistente.
Nel riquadro Query Builder, procedi nel seguente modo:
In Tipo di risorsa, seleziona la risorsa Google Cloud di cui vuoi visualizzare gli audit log.
In Nome log, seleziona il tipo di audit log che vuoi visualizzare:
- Per i log di controllo dell'attività di amministrazione, seleziona attività.
- Per gli audit log di accesso ai dati, seleziona data_access (dati).
- Per gli audit log degli eventi di sistema, seleziona system_event.
- Per gli audit log rifiutati nelle norme, seleziona criterio.
Se non vedi queste opzioni, non sono disponibili audit log di quel tipo nel progetto, nella cartella o nell'organizzazione di Google Cloud.
Se riscontri problemi durante il tentativo di visualizzare i log in Esplora log, consulta le informazioni sulla risoluzione dei problemi.
Per ulteriori informazioni sull'esecuzione di query utilizzando Esplora log, consulta Creazione di 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 di log. Ad esempio, se la query include un PROJECT_ID, l'identificatore del progetto fornito deve fare riferimento al progetto Google Cloud attualmente selezionato.
Per leggere le voci degli audit log a livello di progetto Google Cloud, esegui il comando seguente:
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 del log di controllo 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 il comando seguente:
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 che risalgono a più di un giorno prima.
Per ulteriori informazioni sull'utilizzo dell'interfaccia a riga di comando gcloud, vedi
gcloud logging read
.
API
Quando crei le query, fornisci un identificatore della risorsa valido in ciascuno dei nomi di log. Ad esempio, se la query include un PROJECT_ID, l'identificatore del progetto fornito deve fare riferimento al progetto Google Cloud attualmente selezionato.
Ad esempio, per utilizzare l'API Logging per visualizzare le voci del log di controllo a livello di progetto, procedi come segue:
Vai alla sezione Prova questa API nella documentazione per il metodo
entries.list
.Inserisci quanto segue nella parte Request body del modulo Prova questa API. Se fai clic su questo modulo precompilato, viene compilato automaticamente il corpo della richiesta, ma devi fornire un valore PROJECT_ID valido in ciascuno dei nomi di log.
{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
Fai clic su Execute (Esegui).