Informazioni sugli audit log

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 dei criteri negati

Per una panoramica generale di Cloud Audit Logs, consulta 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 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 degli audit log, il campo protoPayload della voce di log contiene un oggetto AuditLog in cui sono archiviati i dati dell'audit logging.

In breve, ogni voce dell'audit log è 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 composte da un tipo di risorsa dell'elenco di risorse monitorate e da valori aggiuntivi che indicano un'istanza specifica. Ad esempio, puoi visualizzare le voci degli audit log 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 per nome: Compute Engine è compute.googleapis.com, Cloud SQL è cloudsql.googleapis.com e così via. Queste informazioni sono elencate nel campo protoPayload.serviceName della voce dell'audit log.

    I tipi di risorse appartengono a un solo servizio, ma un servizio può avere diversi tipi di risorse. Per un elenco di servizi e risorse, vedi Mappatura dei servizi alle risorse.

  • Un payload, che è il tipo protoPayload. Il payload di ogni voce di audit log è un oggetto di tipo AuditLog, che definisce un insieme di campi specifici di Cloud Audit Logs, come serviceName e authenticationInfo. Contiene 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 campo serviceData precedente per elencare le informazioni specifiche del servizio. Per un elenco dei servizi che utilizzano il campo serviceData, consulta Dati di controllo specifici del servizio.

  • Un nome di log: le voci di audit log 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 abbreviati come activity, data_access, system_event e policy.

Esempio di voce di log di controllo

Questa sezione utilizza una voce di audit log di esempio per spiegare come trovare le informazioni più importanti nelle voci di audit log.

L'esempio seguente è una voce dell'audit voce di log 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 migliorare la gravità, 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",
    }

Ecco la query che è stata 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 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 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 log di controllo di esempio

Nell'esempio di voce di 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 dell'audit logging.

Osservando l'esempio di voce di log di controllo riportato sopra, potresti avere alcune domande:

  • Si tratta di una voce di log di controllo? Lo è, che puoi capire in due modi:

    • Il campo protoPayload.@type è type.googleapis.com/google.cloud.audit.AuditLog.

    • Il campo logName include il dominio cloudaudit.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 dell'audit log.

  • Quale operazione viene sottoposta a revisione? È in corso il controllo di SetIamPolicy, come specificato nel campo protoPayload.methodName. Ulteriori informazioni sull'operazione sottoposta ad audit sono disponibili nell'oggetto AuditData in protoPayload.serviceData.

  • Quale risorsa viene controllata? Un'applicazione in esecuzione in App Engine, associata a un progetto Google Cloud my-gcp-project-id, è in fase di controllo. Puoi determinarlo dal campo resource, che specifica il tipo di risorsa gae_app e l'identificatore del progetto my-gcp-project-id. In questo esempio, puoi trovare i dettagli sul tipo di risorsa nell'elenco dei tipi di risorsa monitorati.

Per saperne di più, consulta il tipo LogEntry, il tipo AuditLog e il tipo AuditData IAM.

Voci di audit log di grandi dimensioni o a lunga esecuzione

Una singola operazione controllata viene suddivisa 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 relative alla stessa operazione avranno lo stesso valore per LogEntry.operation.id e LogEntry.operation.producer.

Nel precedente esempio di voci di log di controllo, il campo operation non è presente, il che significa che tutte le informazioni di controllo sono contenute in un'unica voce di log.

Dati di controllo specifici del servizio

Alcuni servizi estendono le informazioni archiviate nel loro AuditLog inserendo una struttura di dati supplementare nel campo serviceData dell'audit log. La seguente tabella elenca i servizi che utilizzano il campo serviceData e fornisce un link al relativo tipo AuditData.

Servizio Tipo di dati di servizio
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine (legacy) type.googleapis.com/google.appengine.legacy.AuditData
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 per tutti gli audit log o in base al nome degli audit log. Il nome dell'audit log include l'identificatore della risorsa del progetto, della cartella, dell'account di fatturazione o dell'organizzazione Google Cloud di cui vuoi visualizzare le informazioni di audit logging. Le query possono specificare i campi indicizzati LogEntry 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 sull'esecuzione di query sui log, consulta le seguenti pagine:

Puoi visualizzare gli audit log in Cloud Logging utilizzando la console Google Cloud, Google Cloud CLI o l'API Logging.

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:

  1. Nel pannello di navigazione della console Google Cloud, seleziona Logging, quindi Esplora log:

    Vai a Esplora log

  2. Seleziona un progetto, una cartella o un'organizzazione Google Cloud esistente.

  3. Per visualizzare tutti gli audit log, inserisci una delle seguenti query nel campo query-editor, quindi fai clic su Esegui query:

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. Per visualizzare gli audit log per una risorsa specifica e un tipo di audit log, nel riquadro Query Builder, segui questi passaggi:

    • In Tipo di risorsa, seleziona la risorsa Google Cloud di cui vuoi visualizzare gli audit log.

    • In Nome log, seleziona il tipo di log di controllo che vuoi visualizzare:

      • Per gli audit log di controllo delle 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 i log di controllo dei criteri negati, seleziona criterio.
    • Fai clic su Esegui query.

    Se non vedi queste opzioni, significa che 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 maggiori informazioni sull'esecuzione di query utilizzando Esplora log, consulta Creare query in Esplora log. Per informazioni sul riepilogo delle voci di log in Esplora log utilizzando Gemini, consulta Riepilogare le voci di log con l'assistenza Gemini.

gcloud

Google Cloud CLI fornisce un'interfaccia a riga di comando per l'API Logging. Fornisci un identificatore di risorsa valido in ognuno dei nomi dei log. Ad esempio, se la query include un valore PROJECT_ID, l'identificatore del progetto fornito deve fare riferimento al progetto Google Cloud attualmente selezionato.

Per leggere le voci dell'audit log a livello di progetto Google Cloud, esegui questo comando:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \
    --project=PROJECT_ID

Per leggere le voci dell'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 degli 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 dell'audit log 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 che risalgono a più di un giorno fa.

Per ulteriori informazioni sull'utilizzo di gcloud CLI, consulta gcloud logging read.

API

Quando crei le query, fornisci un identificatore di risorsa valido in ciascuno dei nomi dei log. Ad esempio, se la query include un valore 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 degli audit log a livello di progetto:

  1. Vai alla sezione Prova questa API nella documentazione per il metodo entries.list.

  2. Inserisci quanto segue nella parte 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 valore PROJECT_ID valido in ogni nome di log.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. Fai clic su Execute (Esegui).