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 ciascun Cloud de Confiance progetto, cartella e organizzazione:
- Audit log delle attività di amministrazione
- Audit log degli accessi ai dati
- Audit log degli eventi di sistema
- Audit log di policy negata
Per una panoramica generale di Cloud Audit Logs, consulta Cloud Audit Logs.
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
Logging, una voce di audit log viene archiviata in un oggetto
LogEntry. Ciò che distingue una voce di audit log dalle altre voci di log è il campo protoPayload. Nelle voci di audit log, il campo protoPayload della voce di log contiene un
AuditLog oggetto che memorizza i dati di audit logging.
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 Risorse monitorate e da valori aggiuntivi che indicano un'istanza specifica. Ad esempio, puoi visualizzare le voci di audit log da una singola istanza VM di Compute Engine o da tutte le istanze VM.
- Un timestamp.
Un servizio: i servizi sono singoli Cloud de Confiance prodotti, come Compute Engine, Cloud SQL o Pub/Sub. Ogni servizio è identificato dal nome: Compute Engine è
compute.googleapis.com, Cloud SQL ècloudsql.googleapis.come così via. Queste informazioni sono elencate nel campoprotoPayload.serviceNamedella 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, vai a Mappatura dei servizi alle risorse.
Un payload, che è 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, comeserviceNameeauthenticationInfo. Ha anche un campo facoltativo,metadata, che Cloud de Confiance by S3NS i servizi utilizzano per elencare le informazioni specifiche del servizio nella voce di log di controllo. Alcuni Cloud de Confiance by S3NS servizi utilizzano ancora il camposerviceDataprecedente per elencare le informazioni specifiche del servizio. Per un elenco dei servizi che utilizzano il camposerviceData, consulta Dati di audit specifici del servizio.Un nome log: le voci di audit log 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 di log vengono in genere abbreviati come activity, data_access, system_event e policy.
Voce di audit voce di log
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.
L'esempio seguente è una voce di log di controllo delle attività di amministrazione che registra una modifica a una policy Identity and Access Management (IAM) con PROJECT_ID my-gcp-project-id.
Il campo serviceName identifica il servizio che ha scritto l'audit log.
Per brevità, alcune parti della voce di log sono state 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 l'esempio precedente di voce di audit log. La query può essere utilizzata in Esplora log, nell'API Logging o in Google Cloud CLI. L'identificatore del progetto è nel nome del log:
resource.type = "gae_app" logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
Se stai cercando 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 audit log di esempio
Nell'esempio precedente di voce di log di controllo, i campi protoPayload,
insertId,
resource, timestamp, severity e logName mostrati fanno parte dell'
oggetto LogEntry. Il valore del campo protoPayload è un
AuditLog oggetto. Incapsula i dati di audit logging.
Esaminando l'esempio di voce di log di controllo, potresti avere alcune domande:
Si tratta di una voce di log di controllo? Sì, puoi verificarlo in due modi:
Il campo
protoPayload.@typeètype.googleapis.com/google.cloud.audit.AuditLog.Il campo
logNameinclude 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.serviceNamedella voce di log di controllo.Quale operazione viene sottoposta ad audit? Viene sottoposta ad audit
SetIamPolicy, come specificato nel campoprotoPayload.methodName. Ulteriori informazioni sull'operazione sottoposta ad audit sono disponibili nell'oggettoAuditDatainprotoPayload.serviceData.Quale risorsa viene sottoposta ad audit? Viene sottoposta ad audit un'applicazione in esecuzione in App Engine, associata a un Cloud de Confiance progetto
my-gcp-project-id. Puoi determinarlo dal camporesource, che specifica il tipo di risorsagae_appe 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 LogEntry tipo, il
AuditLog tipo e
il tipo AuditData di IAM.
Audit log per le operazioni a lunga esecuzione
Le API che sono operazioni a lunga esecuzione emettono due audit log: uno quando viene chiamata l'API e l'operazione inizia e uno quando l'operazione viene completata.
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 e 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 che LogEntry.operation.last=true.
Alcuni servizi non compilano il campo LogEntry.operation quando l'operazione non riesce. Tuttavia, puoi determinare quali operazioni sono a lunga esecuzione
facendo riferimento alla documentazione di audit logging 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 è uno dei seguenti:
google.longrunning.Operations.ListOperationsgoogle.longrunning.Operations.GetOperationgoogle.longrunning.Operations.CancelOperationgoogle.longrunning.Operations.WaitOperationgoogle.longrunning.Operations.DeleteOperation
LogEntry.operation non è specificato in questo caso, poiché questa API restituisce metadati sulle operazioni a lunga esecuzione, ma non è un'operazione a lunga esecuzione.
Per i dettagli sulle API sottoposte ad audit, consulta Cloud de Confiance by S3NS Servizi con audit log, poiché può variare a seconda del 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 viene chiamata l'API 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.
La prima voce di log scritta ha LogEntry.operation.first=true e la voce di log di completamento ha LogEntry.operation.last=true.
Questa API può anche emettere voci di log di continuazione senza che LogEntry.operation.first né LogEntry.operation.last siano impostati per indicare che lo stream rimane aperto.
Dati di audit specifici del servizio
Alcuni servizi estendono le informazioni archiviate in loro
AuditLog inserendo una struttura di dati supplementare nel campo serviceData della voce di audit log. La tabella seguente elenca i servizi che utilizzano il campo serviceData e fornisce un link al relativo tipo AuditData.
| Servizio | Tipo di dati del servizio |
|---|---|
| BigQuery | type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData |
| IAM | type.googleapis.com/google.iam.v1.logging.AuditData |
Visualizzazione degli audit log
Puoi eseguire query su tutti gli audit log o su audit log specifici in base al nome. Il nome dell'audit log include
l'identificatore della risorsa
della cartella, dell'account di fatturazione, dell'organizzazione o
del progetto Cloud de Confiance per cui vuoi visualizzare le informazioni di audit logging.
Le query possono specificare campi LogEntry indicizzati.
Per saperne di più su come eseguire query sui log, consulta
Crea query in Esplora log
La maggior parte degli audit log può essere visualizzata in Cloud Logging utilizzando la consoleCloud de Confiance , Google Cloud CLI o l'API Logging. Per gli audit log relativi alla fatturazione, invece, puoi utilizzare solo Google Cloud CLI o l'API Logging.
Console
Nella console Cloud de Confiance puoi utilizzare Esplora log per recuperare le voci di audit log per il progetto, la cartella o l'organizzazione Cloud de Confiance :
-
Nella Cloud de Confiance 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 Cloud de Confiance esistente.
Per visualizzare tutti gli audit log, inserisci una delle seguenti query nel campo dell'editor query, quindi fai clic su Esegui query:
logName:"cloudaudit.googleapis.com"
protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
Per visualizzare gli audit log per un tipo di risorsa e un tipo di audit log specifici, nel riquadro Query Builder esegui queste operazioni:
In Tipo di risorsa seleziona la risorsa Cloud de Confiance di cui vuoi visualizzare gli audit log.
In Nome log seleziona il tipo di audit log che vuoi visualizzare:
- Per gli audit log Attività di amministrazione, seleziona activity.
- Per gli audit log Accesso ai dati, seleziona data_access.
- Per gli audit log Evento di sistema, seleziona system_event.
- Per gli audit log Policy negata, 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 Cloud de Confiance .
Se riscontri problemi quando provi a visualizzare i log in Esplora log, consulta le informazioni per la risoluzione dei problemi.
Per saperne di più sull'esecuzione di query utilizzando Esplora log, consulta Crea query in Esplora log.
gcloud
Google Cloud CLI fornisce un'interfaccia a riga di comando per l'API Logging. Specifica un identificatore di risorsa valido in ciascuno dei nomi di log. Ad esempio, se la query include un PROJECT_ID, l'identificatore del progetto specificato deve fare riferimento al progettoCloud de Confiance attualmente selezionato.
Per leggere le voci di audit log a livello di progetto Cloud de Confiance , esegui il comando seguente:
gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \
--project=PROJECT_ID
Per leggere le voci di audit log 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 il comando seguente:
gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \
--organization=ORGANIZATION_ID
Per leggere le voci di audit log 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 hanno più di un giorno.
Per saperne di più sull'utilizzo di gcloud CLI, consulta
gcloud logging read.
REST
Per eseguire query sui dati di log tramite l'API Cloud Logging, utilizza il
entries.list
metodo.