Registrazione di controllo del database Firebase Realtime

Questa pagina descrive i log di controllo creati da Firebase come parte degli audit log di Cloud .

Panoramica

I servizi Firebase scrivono log di controllo per aiutarti a rispondere alle domande "Chi ha fatto cosa, dove e quando?". Si tratta di log di controllo di Cloud, forniti come parte del progetto Google Cloud connesso al tuo progetto Firebase .

Ciascuno dei tuoi progetti Firebase contiene solo i log di controllo per le risorse che si trovano direttamente all'interno del progetto.

Per una panoramica generale degli audit log di Cloud, consulta Panoramica degli audit log di Cloud . Per una comprensione più approfondita del formato del registro di controllo, vedere Comprendere i registri di controllo .

Log di controllo disponibili

Per Firebase Realtime Database sono disponibili i seguenti tipi di log di controllo:

  • Registri di controllo delle attività di amministrazione

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

    Non è possibile disabilitare i log di controllo delle attività di amministrazione.

  • Registri di controllo dell'accesso ai dati

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

    Per ricevere i log di controllo dell'accesso ai dati, è necessario abilitarli esplicitamente.

Per descrizioni più complete dei tipi di log di controllo, vedere Tipi di log di controllo .

Operazioni controllate

Di seguito vengono riepilogate le operazioni API che corrispondono a ciascun tipo di registro di controllo nel Firebase Realtime Database:

Categoria dei registri di controllo Operazioni del database Firebase Realtime
Registri di controllo delle attività di amministrazione (ADMIN_WRITE)
  • Creaistanzadatabase
  • EliminaDatabaseInstance
  • DisabilitaDatabaseInstance
  • RiabilitaDatabaseInstance
Registri di controllo dell'accesso ai dati (ADMIN_READ)
  • Ottieniistanzadatabase
  • ElencoDatabaseInstances
Registri di controllo dell'accesso ai dati (DATA_READ o DATA_WRITE)
Registri di controllo dell'accesso ai dati (DATA_READ)
Registri di controllo dell'accesso ai dati (DATA_WRITE)
  • Scrivere
  • Aggiornamento. Vedere WriteMetadata associato.
  • OnDisconnectPut
  • OnDisconnectUpdate. Vedere WriteMetadata associato.
  • OnDisconnectCancel

Controlla le informazioni di autenticazione

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

  • Stabilire connessioni in tempo reale. Le operazioni di Realtime Database Connect non registrano i dati di autenticazione poiché Realtime Database esegue l'autenticazione dopo aver stabilito una connessione. Pertanto, Connect non dispone di informazioni di autenticazione. L'oggetto AuthenticationInfo contiene un segnaposto principalEmail di audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com .

  • Autenticazione di Google. Le operazioni di Realtime Database che utilizzano l'autenticazione Google standard, come il traffico proveniente dall'SDK Admin Firebase o le richieste REST autenticate con un token OAuth standard , hanno un oggetto AuthenticationInfo che contiene l'e-mail delle credenziali effettive.

  • Autenticazione Firebase. Le operazioni del database in tempo reale che utilizzano l'autenticazione Firebase hanno un oggetto AuthenticationInfo che contiene un valore principalEmail di audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com . Lo stesso vale se implementi la tua soluzione di autenticazione creando JWT personalizzati.

    • Se è stato utilizzato un JSON Web Token (JWT) per l'autenticazione di terze parti, il campo thirdPartyPrincipal include l'intestazione e il payload del token. Ad esempio, i log di controllo per le richieste autenticate con Firebase Authentication includono il token di autenticazione Firebase di quella richiesta.
  • Nessuna autenticazione. Le operazioni di Realtime Database che non utilizzano alcuna autenticazione hanno un oggetto AuthenticationInfo che contiene un valore principalEmail di audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com Un'istanza di Realtime Database con regole di sicurezza aperte può garantire tali richieste . Consigliamo a tutti gli utenti di proteggere adeguatamente i propri database.

  • Token segreti legacy. Le operazioni del database in tempo reale che utilizzano token legacy hanno un oggetto AuthenticationInfo che contiene un segnaposto principalEmail di audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com . Per JWT firmato da segreti, thirdPartyPrincipal contiene le intestazioni JWT e il payload.

Controlla le valutazioni delle regole di sicurezza Firebase

I log di controllo Cloud possono essere utilizzati per identificare le richieste che saranno potenzialmente interessate dalle modifiche alle regole.

Nell'oggetto AuthorizationInfo , authorization.permission può essere uno tra:

  • firebasedatabase.data.get : accesso in lettura concesso al percorso specificato in resource .
  • firebasedatabase.data.update : accesso in scrittura concesso al percorso specificato in resource .
  • firebasedatabase.data.connect : segnaposto per Connect e Disconnect . Non è richiesta alcuna autorizzazione per connettersi a un'istanza di Realtime Database.
  • firebasedatabase.data.cancel : utilizzato per Unlisten e OnDisconnectCancel . La revoca o l'annullamento di un'operazione precedentemente autorizzata non richiede alcuna autorizzazione aggiuntiva.

Correla i log di controllo del cloud con i risultati del profiler di Realtime Database

È possibile eseguire un'analisi approfondita delle prestazioni su Realtime Database utilizzando il profiler di Realtime Database in combinazione con la registrazione di controllo di Realtime Database. Ogni strumento ha i suoi punti di forza.

Registrazione di controllo del cloud Profilatore di database in tempo reale
  • Controlla l'accesso ai database
  • Cattura continuamente tutte le richieste
  • Consente interrogazioni retrospettive
  • Contiene informazioni dettagliate sul token di autenticazione
  • Comporta un costo di utilizzo
  • Utilizzato per l'analisi delle prestazioni
  • Fornisce strumenti utili per l'identificazione degli hotspot e quindi l'ottimizzazione delle prestazioni
  • Può misurare la trasmissione degli ascoltatori , che non è disponibile nei log di controllo a causa del potenziale volume di dati
  • Leggero e in tempo reale, lo rende ideale per i test di carico in tempo reale. La visualizzazione delle voci del registro di controllo potrebbe richiedere alcuni minuti.

I contenuti del log di controllo corrispondono alle metriche del profiler come mostrato di seguito.

Nome dell'operazione di registrazione del controllo Valori speciali in
RealtimeDatabaseAuditMetadata
Nome dell'operazione del profiler
Collegare RequestType è REALTIME connessione simultanea
Disconnetti RequestType è REALTIME disconnessione simultanea
Leggere RequestType è REALTIME lettura in tempo reale
Leggere RequestType è REST resto-leggi
Scrivere RequestType è REALTIME scrittura in tempo reale
Scrivere RequestType è REST resto-scrivi
Aggiornamento RequestType è REALTIME .
Controlla PreconditionType .
aggiornamento in tempo reale
transazione in tempo reale
Aggiornamento RequestType è REST .
Controlla PreconditionType .
resto-aggiornamento
transazione di resto
AscoltatoreAscolta RequestType è REALTIME ascoltatore-ascolta
AscoltatoreNon ascoltare RequestType è REALTIME ascoltatore-nonascoltare
OnDisconnectPut RequestType è REALTIME on-disconnect-put
OnDisconnectUpdate RequestType è REALTIME aggiornamento alla disconnessione
OnDisconnectCancel RequestType è REALTIME alla disconnessione-annulla
EseguiOnDisconnect RequestType è REALTIME esecuzione alla disconnessione

Formato del registro di controllo

Le voci del registro di controllo includono i seguenti oggetti:

  • La voce di log stessa, che è un oggetto di tipo LogEntry . I campi utili includono quanto segue:

    • Il logName contiene l'ID della risorsa e il tipo di log di controllo.
    • La resource contiene la destinazione dell'operazione controllata.
    • Il timestamp contiene l'ora dell'operazione controllata.
    • Il protoPayload contiene le informazioni controllate.
  • I dati di registrazione di controllo, che sono un oggetto AuditLog contenuto nel campo protoPayload della voce di registro.

  • Informazioni di controllo facoltative specifiche del servizio, che sono un oggetto specifico del servizio. Per le integrazioni precedenti, questo oggetto è contenuto nel campo serviceData dell'oggetto AuditLog ; le integrazioni più recenti utilizzano il campo metadata .

Per altri campi in questi oggetti e come interpretarli, consulta Comprendere i log di controllo .

Ulteriori informazioni sui campi in protoPayload.metadata per le operazioni DATA_READ e DATA_WRITE sono disponibili nella documentazione di riferimento .

Nome del registro

I nomi delle risorse di Cloud Audit Logs indicano il progetto Firebase o un'altra entità Google Cloud proprietaria dei log di controllo e se il log contiene dati di log di controllo su attività di amministrazione, accesso ai dati, criteri negati o eventi di sistema. Ad esempio, di seguito vengono mostrati i nomi dei log per i log di controllo delle attività di amministrazione a livello di progetto e i log di controllo dell'accesso ai dati di un'organizzazione. Le variabili indicano il progetto Firebase e gli identificatori dell'organizzazione.

projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

Nome di Servizio

I log di controllo del database Firebase Realtime utilizzano il nome del servizio firebasedatabase.googleapis.com .

Per un elenco completo di tutti i nomi dei servizi API Cloud Logging e del tipo di risorsa monitorata corrispondente, consulta Mappare i servizi sulle risorse .

Tipi di risorse

I log di controllo di Firebase Realtime Database utilizzano il tipo di risorsa audited_resource per tutti i log di controllo.

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

Abilita la registrazione di controllo

I log di controllo delle attività di amministrazione sono sempre abilitati; non puoi disabilitarli.

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

I log di controllo dell'accesso ai dati per Realtime Database vengono attivati ​​controllando DATA_READ e/o DATA_WRITE nella console GCP. C'è un ritardo massimo di un'ora tra il momento in cui i log vengono abilitati/disabilitati nella console GCP e il momento in cui inizia/arresta la consegna dei log.

Per istruzioni su come abilitare alcuni o tutti i log di controllo di accesso ai dati, vedere Configurare i log di accesso ai dati .

Autorizzazioni e ruoli

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

Quando decidi quali autorizzazioni e ruoli specifici di Logging si applicano al tuo caso d'uso, considera quanto segue:

  • Il ruolo Visualizzatore log ( roles/logging.viewer ) fornisce accesso di sola lettura ai log di controllo delle attività di amministrazione, dei criteri negati e degli eventi di sistema. Se disponi solo di questo ruolo, non puoi visualizzare i log di controllo di accesso ai dati presenti nel bucket _Default .

  • Il ruolo Visualizzatore log privati (roles/logging.privateLogViewer ) include le autorizzazioni contenute in roles/logging.viewer , oltre alla possibilità di leggere i log di controllo di accesso ai dati nel bucket _Default .

    Tieni presente che se questi log privati ​​vengono archiviati in bucket definiti dall'utente, qualsiasi utente dotato delle autorizzazioni per leggere i log in tali bucket potrà leggere i log privati. Per ulteriori informazioni sui bucket di log, consulta Panoramica di routing e archiviazione .

Per ulteriori informazioni sulle autorizzazioni e sui ruoli Cloud IAM applicabili ai dati dei log di controllo, consulta Controllo degli accessi .

Visualizza i registri

Per trovare e visualizzare i log di controllo, devi conoscere l'identificatore del progetto, della cartella o dell'organizzazione Firebase per cui desideri visualizzare le informazioni sul registro di controllo. Puoi specificare ulteriormente altri campi LogEntry indicizzati, come resource.type ; per maggiori dettagli, consulta Trovare rapidamente le voci di registro .

Di seguito sono riportati i nomi dei registri di controllo; includono variabili per gli identificatori del progetto, della cartella o dell'organizzazione Firebase:

   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

   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

Puoi visualizzare i log di controllo in Cloud Logging utilizzando la console GCP, lo strumento a riga di comando gcloud o l'API Logging.

Consolle

Puoi utilizzare Esplora log nella console GCP per recuperare le voci del log di controllo per il tuo progetto, cartella o organizzazione Firebase:

  1. Nella console GCP, vai alla pagina Registrazione > Esplora log .

    Vai alla pagina Esplora log

  2. Nella pagina Esplora log , seleziona un progetto, una cartella o un'organizzazione Firebase esistente.

  3. Nel riquadro Generatore di query , procedi come segue:

    • In Tipo di risorsa seleziona la risorsa Google Cloud di cui vuoi visualizzare i log di controllo.

    • In Nome registro , seleziona il tipo di registro di controllo che desideri visualizzare:

      • Per i log di controllo delle attività di amministrazione, seleziona attività .
      • Per i log di controllo dell'accesso ai dati, selezionare data_access .
      • Per i registri di controllo degli eventi di sistema, selezionare system_event .
      • Per i log di controllo Policy Denied, selezionare policy .

    Se non vedi queste opzioni, non sono disponibili log di controllo di quel tipo nel progetto, nella cartella o nell'organizzazione Firebase.

    Per ulteriori dettagli sull'esecuzione di query utilizzando Logs Explorer, consulta Creare query di log .

gcloud

Lo strumento da riga di comando gcloud fornisce un'interfaccia da riga di comando all'API Cloud Logging. Fornire un PROJECT_ID , FOLDER_ID o ORGANIZATION_ID valido in ciascuno dei nomi di registro.

Per leggere le voci del log di controllo a livello di progetto Firebase, esegui il comando seguente:

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

Per leggere le voci del registro 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 registro 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 ulteriori informazioni sull'utilizzo dello strumento gcloud , consulta Lettura delle voci di log .

API

Quando crei le tue query, sostituisci le variabili con valori validi, sostituisci il nome o gli identificatori del log di controllo a livello di progetto, cartella o organizzazione appropriati come elencato nei nomi del log di controllo. Ad esempio, se la tua query include PROJECT_ID , l'identificatore di progetto che fornisci deve fare riferimento al progetto Firebase attualmente selezionato.

Per utilizzare l'API Logging per esaminare le voci del registro di controllo, procedi come segue:

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

  2. Inserisci quanto segue nella parte del corpo della richiesta del modulo Prova questa API . Facendo clic su questo modulo precompilato viene compilato automaticamente il corpo della richiesta, ma è necessario fornire un PROJECT_ID valido in ciascuno dei nomi di registro.

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

Per ulteriori dettagli sulle query, vedere Linguaggio delle query di registrazione .

Per un esempio di voce del registro di controllo e come trovare le informazioni più importanti al suo interno, vedere Voce di registro di controllo di esempio .

Log di controllo del percorso

Puoi instradare i log di controllo alle destinazioni supportate nello stesso modo in cui puoi instradare altri tipi di log. Ecco alcuni motivi per cui potresti voler instradare i log di controllo:

  • Per conservare i log di controllo per un periodo di tempo più lungo o per utilizzare funzionalità di ricerca più potenti, puoi instradare copie dei log di controllo a Google Cloud Storage, BigQuery o Google Cloud Pub/Sub. Utilizzando Cloud Pub/Sub, puoi instradare ad altre applicazioni, altri repository e a terze parti.

  • Per gestire i log di controllo in un'intera organizzazione, puoi creare sink aggregati in grado di instradare i log da uno o tutti i progetti Firebase nell'organizzazione.

  • Se i log di controllo di accesso ai dati abilitati stanno spingendo i tuoi progetti Firebase oltre le assegnazioni di log, puoi creare sink che escludono i log di controllo di accesso ai dati dalla registrazione.

Per istruzioni sul routing dei log, consulta Configurare i sink .

Prezzi

I registri di controllo delle attività di amministrazione e i registri di controllo degli eventi di sistema non hanno alcun costo.

I registri di controllo dell'accesso ai dati e i registri di controllo della politica negata sono a pagamento.

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