Informazioni sull'audit logging di Firestore

Questo documento descrive gli audit log creati da Firestore come parte degli audit log di Cloud.

Panoramica

I servizi Google Cloud compilano audit log per aiutarti a rispondere alle domande e capire chi ha fatto cosa, dove e quando, all'interno delle tue risorse Google Cloud.

I progetti Google Cloud contengono solo gli audit log per le risorse che si trovano direttamente all'interno del progetto Cloud. Altre risorse Google Cloud, come cartelle, organizzazioni e account di fatturazione, contengono gli audit log per l'entità stessa.

Per una panoramica generale di Cloud Audit Logs, consulta Panoramica di Cloud Audit Logs. Per una comprensione più approfondita del formato degli audit log, consulta Informazioni sugli audit log.

Log di controllo disponibili

Per Firestore sono disponibili i seguenti tipi di audit log:

  • Audit log delle attività di amministrazione

    Include "operazioni di scrittura "admin", che scrivono metadati o informazioni di configurazione.

    Non puoi disattivare gli audit log per le attività di amministrazione.

  • Audit log degli accessi ai dati

    Include operazioni di "lettura amministratore" che leggono i metadati o le informazioni di configurazione. Include anche le operazioni di "lettura" e "scrittura dati" che leggono o scrivono i dati forniti dall'utente.

    Per ricevere gli audit log di accesso ai dati, devi abilitarli esplicitamente.

Per una descrizione più completa dei tipi di log di controllo, vedi Tipi di log di controllo.

Operazioni con audit

Il seguente riepilogo riepiloga le operazioni API corrispondenti a ogni tipo di log di controllo in Firestore:

Categoria di audit log Operazioni Firestore
Log delle attività di amministrazione (ADMIN_WRITE)
Audit log degli accessi ai dati (ADMIN_READ)
Audit log degli accessi ai dati (DATA_READ)
  • GetDocument
  • ListDocuments
  • BatchGetDocuments
  • BeginTransaction
  • Commit senza scritture
  • Rollback
  • RunQuery (streaming)

    RunQuery è una RPC di flusso di breve durata ed emette una voce di log quando viene inviato l'ultimo messaggio (documento).

  • PartitionQuery
  • ListCollectionIds
  • Listen (streaming)

    Listen è una RPC di lunga durata che combina più destinazioni di flusso. Ogni destinazione è una query o un set di chiavi di documenti. Il flusso per ogni destinazione include un set di risultati iniziale e una sequenza di aggiornamenti, aggiunte e rimozioni al set di risultati. I target sono l'unità di controllo pertinente. Firestore verifica ogni destinazione come segue:

    • Quando il target viene aggiunto, emetti una voce di log con la query o il set di chiavi del documento del target. In queste voci, operation.first è true. Questo log di controllo viene omesso quando lo stream riprende la riproduzione di uno stream di destinazione Ascolta precedente.
    • Emetti aggiornamenti periodici che segnalano il conteggio degli aggiornamenti dall'ultimo log di controllo per questa destinazione.
    • Emetti una voce di log quando la destinazione viene rimossa dal flusso, in modo esplicito o dovuto alla chiusura dell'RPC Listen. Questa voce di log riporta il conteggio degli aggiornamenti dall'ultimo log di controllo per questa destinazione. operation.last in queste voci è true.
    • Le voci dei log emessi utilizzano la stessa operation.id.
Audit log degli accessi ai dati (DATA_WRITE)

Identifica chiamanti della richiesta

Le voci del log di controllo includono informazioni sull'identità che ha eseguito l'operazione registrata. Per identificare un chiamante della richiesta, consulta i campi seguenti all'interno di un oggetto AuditLog:

  • L'identità del chiamante è conservata nel campo AuthenticationInfo. Questo può includere il principalEmail dell'utente. Queste informazioni vengono a volte oscurate.

    Se è stato utilizzato un token JWT (JSON Web Token) per l'autenticazione di terze parti, il campo thirdPartyPrincipal include l'intestazione e il payload del token. Ad esempio, gli audit log per le richieste autenticate con Firebase Authentication includono il token di autenticazione della richiesta.

  • Il campo callerIp all'interno dell'oggetto requestMetadata di una voce AuditLog include l'indirizzo IP del chiamante.

Durata elaborazione

Per visualizzare il tempo impiegato per elaborare una richiesta DATA_READ o DATA_WRITE, vedi il campo processing_duration all'interno dell'oggetto metadata di una AuditLog.

processing_duration descrive il tempo impiegato dal database per elaborare effettivamente una richiesta. Questo valore è inferiore alla latenza dell'utente finale. In particolare, non include l'overhead di rete.

Per le richieste Listen, processing_duration è presente nell'audit log solo per il set di risultati iniziale restituito. È assente dai log di controllo successivi per lo stesso target di Listen.

Formato degli audit log

Le voci del log di controllo includono i seguenti oggetti:

  • La voce di log stessa, che è un oggetto di tipo LogEntry. Di seguito vengono riportati alcuni campi utili:

    • logName contiene l'ID risorsa e il tipo di log di controllo.
    • resource contiene il target dell'operazione controllata.
    • Il valore timeStamp contiene l'ora dell'operazione sottoposta ad audit.
    • Il protoPayload contiene le informazioni controllate.
  • I dati di audit logging, che sono un oggetto AuditLog conservato nel campo protoPayload della voce di log.

  • Informazioni di controllo facoltative specifiche del servizio, che sono un oggetto specifico del servizio. Per le integrazioni precedenti, questo oggetto viene conservato nel campo serviceData dell'oggetto AuditLog; le integrazioni successive utilizzano il campo metadata.

Per altri campi in questi oggetti e per come interpretarli, consulta Informazioni sugli audit log.

Nome log

I nomi degli audit log di Cloud includono gli identificatori delle risorse che indicano il progetto Cloud o un'altra entità Google Cloud proprietaria degli audit log e se il log contiene dati di audit log relativi ad attività di amministrazione, accesso ai dati, criteri rifiutati o eventi di sistema.

Di seguito sono riportati i nomi degli audit log, incluse le variabili per gli identificatori delle risorse:

   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

Nome servizio

Gli audit log di Firestore utilizzano il nome del servizio firestore.googleapis.com.

Per un elenco di tutti i nomi dei servizi dell'API Cloud Logging e del tipo di risorsa monitorata corrispondente, vedi Mappare i servizi alle risorse.

Tipi di risorse

Gli audit log di Firestore utilizzano i tipi di risorse datastore_database e datastore_index.

Per un elenco di tutti i tipi di risorse monitorate in Cloud Logging e le informazioni descrittive, vedi Tipi di risorse monitorate.

Abilitazione degli audit log

Gli audit log per le attività di amministrazione sono sempre abilitati; non puoi disattivarli.

Gli audit log di accesso ai dati sono disabilitati per impostazione predefinita e non vengono scritti, a meno che non siano esplicitamente abilitati (l'eccezione sono gli audit log di accesso ai dati per BigQuery, che non possono essere disabilitati).

Per informazioni sull'abilitazione di alcuni o di tutti gli audit log di accesso ai dati, vedi Configurare gli audit log di accesso ai dati.

Autorizzazioni e ruoli

Le autorizzazioni e i ruoli IAM determinano la tua capacità di accedere ai dati degli audit log nelle risorse Google Cloud.

Per decidere quali autorizzazioni e ruoli specifici di logging si applicano al tuo caso d'uso, considera quanto segue:

  • Il ruolo Visualizzatore log (roles/logging.viewer) consente l'accesso in sola lettura agli audit log per attività di amministrazione, criteri rifiutati e eventi di sistema. Se hai solo questo ruolo, non puoi visualizzare gli audit log di accesso ai dati nei bucket _Required e _Default.

  • Il ruolo Visualizzatore log privati(roles/logging.privateLogViewer) include le autorizzazioni contenute in roles/logging.viewer, oltre alla possibilità di leggere gli audit log di accesso ai dati nei bucket _Required e _Default.

    Tieni presente che se questi log privati sono archiviati in bucket definiti dall'utente, qualsiasi utente con autorizzazioni di lettura dei log in tali bucket può leggere i log privati. Per ulteriori informazioni sui bucket di log, consulta la pagina Panoramica del routing e dell'archiviazione.

Per ulteriori informazioni sulle autorizzazioni IAM e sui ruoli che si applicano ai dati degli audit log, vedi Controllo dell'accesso con IAM.

Visualizza i log

Per eseguire una query sugli audit log, devi conoscere il nome del log di controllo, che include l'identificatore di risorsa del progetto, della cartella, dell'account di fatturazione o dell'organizzazione Cloud per cui vuoi visualizzare le informazioni sull'audit logging. Nella query, puoi specificare ulteriormente altri campi LogEntry indicizzati, ad esempio resource.type. Per ulteriori informazioni sulle query, consulta Creazione di query in Esplora log.

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

console

Nella console, puoi utilizzare Esplora log per recuperare le voci dei log di controllo per il progetto, la cartella o l'organizzazione Cloud:

  1. Nella console, vai alla pagina Logging> Esplora log.

    Vai a Esplora log

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

  3. Nel riquadro Generatore di query, 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 log di controllo 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.
      • Per i log di controllo degli eventi di sistema, seleziona system_event.
      • Per i log di controllo rifiutati criteri, seleziona criterio.

    Se non vedi queste opzioni, significa che non sono disponibili audit log di quel tipo nel progetto, nella cartella o nell'organizzazione 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 risorsa valido in ciascuno dei nomi di log. Ad esempio, se la query include un PROJECT_ID, l'identificatore di progetto da te fornito deve fare riferimento al progetto Cloud attualmente selezionato.

Per leggere le voci dell'audit log a livello di progetto 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 il comando seguente:

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 risalenti a più di 1 giorno prima.

Per ulteriori informazioni sull'utilizzo dell'interfaccia a riga di comando gcloud, consulta gcloud logging read.

Server

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 di progetto da te fornito deve fare riferimento al progetto Cloud attualmente selezionato.

Ad esempio, per utilizzare l'API Logging per visualizzare le voci del log di controllo a livello di progetto:

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

  2. 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 di log.

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

Audit log instradamento

Puoi indirizzare gli audit log alle destinazioni supportate allo stesso modo in cui puoi indirizzare gli altri tipi di log. Ecco alcuni motivi per cui è consigliabile eseguire il routing dei log di controllo:

  • Per conservare gli audit log per un periodo di tempo più lungo o per utilizzare funzionalità di ricerca più potenti, puoi instradare copie degli audit log a Cloud Storage, BigQuery o Pub/Sub. Utilizzando Pub/Sub, puoi eseguire il routing ad altre applicazioni, altri repository e a terze parti.

  • Per gestire i tuoi audit log in un'intera organizzazione, puoi creare sink aggregati che possono instradare log da uno o tutti i progetti Cloud nell'organizzazione.

  • Se gli audit log di accesso ai dati abilitati eseguono il push dei tuoi progetti Cloud sulle allocazioni del log, puoi creare sink che escludono gli audit log di accesso ai dati da Logging.

Per istruzioni sui log di routing, vedi Configurare e gestire i sink.

Prezzi

Per informazioni sui prezzi di Cloud Logging, consulta Prezzi della suite operativa di Google Cloud: Cloud Logging.