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 di policy negata

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 dell'audit log viene archiviata in un oggetto LogEntry. Ciò che distingue una voce dell'audit log 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 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 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 campo protoPayload.serviceName della voce di audit log.

    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 Mappare i servizi alle risorse.

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

  • Un nome di 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 dei log sono 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",
    }

Ecco la query utilizzata per selezionare il campione precedente di voce di log di controllo. 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.

Esaminando l'esempio di voce dell'audit log, 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 dominio cloudaudit.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 di audit log.

  • Quale operazione viene sottoposta ad audit? SetIamPolicy, come specificato nel campo protoPayload.methodName, è in fase di verifica. Maggiori informazioni sull'operazione sottoposta a audit sono disponibili nell'oggetto AuditData in protoPayload.serviceData.

  • Quale risorsa viene controllata? Un'applicazione in esecuzione in App Engine, associata a un progetto my-gcp-project-id, è in fase di controllo. Google Cloud 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, 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 audit log: 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. 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 che 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 log 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 la sezione 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 dell'audit log; una quando viene chiamata per la prima volta 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. 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 tabella seguente elenca i servizi che utilizzano il campo serviceData e fornisce un link al tipo AuditData.

ServizioTipo di dati del 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 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 Google Cloud 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

Esplora log consente di visualizzare e filtrare singole voci di log. Se vuoi utilizzare SQL per analizzare gruppi di voci di log, usa la pagina Analisi dei log. Per saperne di più, consulta:

La maggior parte degli audit log può essere visualizzata in Cloud Logging utilizzando la consoleGoogle Cloud , 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 Google Cloud puoi utilizzare Esplora log per recuperare le voci di audit log per il progetto, la cartella o l'organizzazione Google Cloud :

  1. Nella console Google Cloud , vai alla pagina Esplora log:

    Vai a Esplora log

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

  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 dell'editor query, 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 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 Google Cloud 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 Google Cloud .

    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 progettoGoogle Cloud attualmente selezionato.

Per leggere le voci di 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 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

Quando crei le query, 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 progettoGoogle Cloud attualmente selezionato.

Ad esempio, per utilizzare l'API Logging per visualizzare le voci di audit log a livello di progetto, procedi in questo modo:

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

  2. Inserisci il codice seguente nella sezione Corpo della richiesta del modulo Prova questa API. Facendo clic su questo modulo precompilato, il corpo della richiesta viene compilato automaticamente, ma devi fornire un PROJECT_ID valido in ciascuno dei nomi di log.

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