Questa pagina descrive gli audit log creati da Firebase come parte degli audit log di Cloud .
Panoramica
I servizi Firebase scrivono registri di controllo per aiutarti a rispondere alle domande "Chi ha fatto cosa, dove e quando?". Si tratta di audit log di Cloud, forniti come parte del progetto Google Cloud collegato 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, vedere Panoramica degli audit log di Cloud . Per una comprensione più approfondita del formato del registro di controllo, vedere Comprendere i registri di controllo .
Registri di controllo disponibili
I seguenti tipi di log di controllo sono disponibili per Firebase Realtime Database:
Registri di controllo delle attività di amministrazione
Include operazioni di "scrittura admin" che scrivono metadati o informazioni di configurazione.
Non puoi disabilitare i log di controllo delle attività di amministrazione.
Registri di controllo dell'accesso ai dati
Include operazioni di "lettura admin" che leggono metadati o informazioni di configurazione. Include anche 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 in modo esplicito.
Per descrizioni più complete dei tipi di log di controllo, vedere Tipi di log di controllo .
Operazioni controllate
Di seguito viene riepilogato quali operazioni API corrispondono a ciascun tipo di registro di controllo in Firebase Realtime Database:
Categoria dei log di controllo | Operazioni del database in tempo reale di Firebase |
---|---|
Registri di controllo delle attività amministrative (ADMIN_WRITE) |
|
Registri di controllo dell'accesso ai dati (ADMIN_READ) |
|
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) |
|
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 che è stata stabilita una connessione. Pertanto,Connect
non ha informazioni di autenticazione. L'oggettoAuthenticationInfo
contiene unprincipalEmail
segnaposto diaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
.Autenticazione Google. Le operazioni di Realtime Database che utilizzano l'autenticazione Google standard, come il traffico da Firebase Admin SDK o le richieste REST autenticate con un token OAuth standard , hanno un oggetto
AuthenticationInfo
che contiene l'email delle credenziali effettive.Autenticazione Firebase. Le operazioni di Realtime Database che utilizzano l'autenticazione Firebase hanno un oggetto
AuthenticationInfo
che contiene un valoreprincipalEmail
diaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Lo stesso vale se implementi la tua soluzione di autenticazione coniando JWT personalizzati.- Se per l'autenticazione di terze parti è stato utilizzato un JSON Web Token (JWT), 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 Firebase Authentication di tale richiesta.
- Se per l'autenticazione di terze parti è stato utilizzato un JSON Web Token (JWT), il campo
Nessuna autenticazione. Le operazioni di Realtime Database che non utilizzano alcuna autenticazione hanno un oggetto
AuthenticationInfo
che contiene un valoreprincipalEmail
diaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
di Realtime Database con regole di sicurezza aperte può concedere tali richieste . Consigliamo a tutti gli utenti di proteggere correttamente i propri database.Token dei segreti legacy. Le operazioni di Realtime Database che utilizzano token legacy hanno un oggetto
AuthenticationInfo
che contiene unprincipalEmail
segnaposto diaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Per JWT firmato da secret,thirdPartyPrincipal
contiene le intestazioni JWT e il payload.
Controlla le valutazioni delle regole di sicurezza di Firebase
Gli audit log di Cloud possono essere utilizzati per identificare le richieste che saranno potenzialmente interessate dalle modifiche alle regole.
Nell'oggetto AuthorizationInfo , authorization.permission
può essere uno di:
-
firebasedatabase.data.get
: accesso in lettura concesso nel percorso specificato inresource
. -
firebasedatabase.data.update
: accesso in scrittura concesso nel percorso specificato inresource
. -
firebasedatabase.data.connect
: segnaposto perConnect
eDisconnect
. Nessuna autorizzazione richiesta per connettersi a un'istanza di Realtime Database. -
firebasedatabase.data.cancel
: Usato perUnlisten
eOnDisconnectCancel
. La revoca o l'annullamento di un'operazione precedentemente autorizzata non richiede alcuna autorizzazione aggiuntiva.
Correla gli audit log di 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 audit di Realtime Database. Ogni strumento ha i suoi punti di forza.
Registrazione di audit nel cloud | Profiler di database in tempo reale |
---|---|
|
|
I contenuti del registro di controllo corrispondono alle metriche del profiler come mostrato di seguito.
Nome dell'operazione di registrazione di controllo | Valori speciali inRealtimeDatabaseAuditMetadata | Nome dell'operazione del profiler |
---|---|---|
Collegare | RequestType è IN TEMPO REALTIME | connessione simultanea |
Disconnetti | RequestType è IN TEMPO REALTIME | disconnessione simultanea |
Leggi | RequestType è IN TEMPO REALTIME | lettura in tempo reale |
Leggi | RequestType è REST | resto-leggi |
Scrivere | RequestType è IN TEMPO REALTIME | scrittura in tempo reale |
Scrivere | RequestType è REST | resto-scrivi |
Aggiornare | RequestType è REALTIME .Controlla PreconditionType . | aggiornamento in tempo reale transazione in tempo reale |
Aggiornare | RequestType è REST .Controlla PreconditionType . | resto-aggiornamento resto-transazione |
AscoltatoreAscolta | RequestType è IN TEMPO REALTIME | ascoltatore-ascolta |
AscoltatoreNon ascoltare | RequestType è IN TEMPO REALTIME | ascoltatore-non ascoltare |
OnDisconnectPut | RequestType è IN TEMPO REALTIME | on-disconnect-put |
OnDisconnectAggiornamento | RequestType è IN TEMPO REALTIME | aggiornamento alla disconnessione |
OnDisconnectAnnulla | RequestType è IN TEMPO REALTIME | alla disconnessione-annullamento |
Esegui su disconnetti | RequestType è IN TEMPO REALTIME | run-on-disconnect |
Formato registro di controllo
Le voci del registro di controllo includono i seguenti oggetti:
La stessa voce di log, che è un oggetto di tipo
LogEntry
. I campi utili includono quanto segue:-
logName
contiene l'ID risorsa e il tipo di registro 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 del controllo, che è un oggetto
AuditLog
contenuto nel campoprotoPayload
della voce di registro.Informazioni di controllo facoltative specifiche del servizio, che è un oggetto specifico del servizio. Per le integrazioni precedenti, questo oggetto è contenuto nel campo
serviceData
dell'oggettoAuditLog
; le integrazioni più recenti utilizzano il campo deimetadata
.
Per altri campi in questi oggetti e per come interpretarli, consulta Comprendere i log di controllo .
Ulteriori informazioni sui campi inprotoPayload.metadata
per le operazioni DATA_READ
e DATA_WRITE
sono disponibili nella documentazione di riferimento .Nome registro
I nomi delle risorse di Cloud Audit Logs indicano il progetto Firebase o un'altra entità Google Cloud che possiede i log di controllo e se il log contiene dati di registrazione di controllo su attività di amministrazione, accesso ai dati, criteri negati o eventi di sistema. Ad esempio, quanto segue mostra 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 denotano 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 di Firebase Realtime Database utilizzano il nome del servizio firebasedatabase.googleapis.com
.
Per un elenco completo di tutti i nomi dei servizi dell'API Cloud Logging e del tipo di risorsa monitorata corrispondente, consulta Mappare i servizi alle 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 da Cloud Logging e informazioni descrittive, consulta Tipi di risorse monitorate .
Abilita la registrazione di controllo
I registri di controllo delle attività di amministrazione sono sempre abilitati; non puoi disabilitarli.
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).
I log di controllo dell'accesso ai dati per Realtime Database vengono attivati controllandoDATA_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 di GCP e il momento in cui i log iniziano/interrompono la consegna.Per istruzioni su come abilitare alcuni o tutti i log di controllo dell'accesso ai dati, consulta 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 di 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
) consente l'accesso in sola lettura ai log di controllo delle attività dell'amministratore, dei criteri negati e degli eventi di sistema. Se disponi solo di questo ruolo, non puoi visualizzare gli audit log di accesso ai dati che si trovano nel bucket_Default
.Il ruolo Visualizzatore di log privati
(roles/logging.privateLogViewer
) include le autorizzazioni contenute inroles/logging.viewer
, oltre alla possibilità di leggere i log di controllo dell'accesso ai dati nel bucket_Default
.Tieni presente che se questi log privati vengono archiviati in bucket definiti dall'utente, qualsiasi utente che dispone delle autorizzazioni per leggere i log in tali bucket può leggere i log privati. Per ulteriori informazioni sui bucket di log, consulta Panoramica su routing e archiviazione .
Per ulteriori informazioni sulle autorizzazioni e sui ruoli di Cloud IAM che si applicano ai dati dei log di controllo, consulta Controllo degli accessi .
Visualizza i log
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 di log di controllo. Puoi specificare ulteriormente altri campi LogEntry
indicizzati, come resource.type
; per i dettagli, consultare Trova rapidamente voci di registro .
Di seguito sono riportati i nomi dei log 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 gli audit log in Cloud Logging utilizzando la console di GCP, lo strumento a riga di comando gcloud
o l'API Logging.
Consolle
Puoi utilizzare Esplora log nella console di GCP per recuperare le voci del log di controllo per il progetto, la cartella o l'organizzazione Firebase:
Nella console di GCP, vai alla pagina Logging > Esplora log .
Nella pagina Logs Explorer , seleziona un progetto, una cartella o un'organizzazione Firebase esistente.
Nel riquadro Generatore di query , procedi come segue:
In Tipo di risorsa , seleziona la risorsa Google Cloud di cui vuoi visualizzare gli audit log.
In Nome registro , seleziona il tipo di registro di controllo che desideri visualizzare:
- Per i log di controllo delle attività di amministrazione, seleziona activity .
- Per i log di controllo dell'accesso ai dati, seleziona data_access .
- Per i log di controllo degli eventi di sistema, seleziona system_event .
- Per i registri di controllo dei criteri negati, selezionare policy .
Se non vedi queste opzioni, significa che non ci sono log di controllo di quel tipo disponibili nel progetto, nella cartella o nell'organizzazione Firebase.
Per ulteriori dettagli sull'esecuzione di query tramite Esplora log, vedere Creare query di log .
gcloud
Lo strumento a riga di comando gcloud
fornisce un'interfaccia a riga di comando per l'API Cloud Logging. Fornisci un PROJECT_ID
, FOLDER_ID
o ORGANIZATION_ID
valido in ciascuno dei nomi di log.
Per leggere le voci del registro di controllo a livello di progetto Firebase, esegui il seguente comando:
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, eseguire 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, eseguire il seguente comando:
gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID
Per ulteriori informazioni sull'utilizzo dello strumento gcloud
, consulta Leggere voci di log .
API
Quando crei le tue query, sostituisci le variabili con valori validi, sostituisci il nome o gli identificatori del registro di controllo appropriato a livello di progetto, cartella o organizzazione come elencato nei nomi del registro di controllo. Ad esempio, se la tua query include un PROJECT_ID , l'identificatore di progetto che fornisci deve fare riferimento al progetto Firebase attualmente selezionato.
Per utilizzare l'API di registrazione per esaminare le voci del log di controllo, procedi come segue:
Vai alla sezione Prova questa API nella documentazione per il metodo
entries.list
.Inserisci quanto segue nella parte del corpo della richiesta del modulo Prova questa API . Facendo clic su questo modulo precompilato si riempie automaticamente il corpo della richiesta, ma è necessario 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" }
Fare clic su Esegui .
Per ulteriori dettagli sull'esecuzione di query, vedere Registrazione del linguaggio di query .
Per un esempio di voce del registro di controllo e come trovare le informazioni più importanti al suo interno, vedere Voce del registro di controllo di esempio .
Registri 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 indirizzare le copie dei log di controllo a Google Cloud Storage, BigQuery o Google Cloud Pub/Sub. Utilizzando Cloud Pub/Sub, puoi indirizzare 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 dell'accesso ai dati abilitati eseguono il push dei progetti Firebase sulle assegnazioni dei log, puoi creare sink che escludono i log di controllo dell'accesso ai dati dalla registrazione.
Per istruzioni sui log di routing, vedere configurare i sink .
Prezzi
I registri di controllo delle attività di amministrazione e i registri di controllo degli eventi di sistema sono gratuiti.
I registri di controllo dell'accesso ai dati e i registri di controllo dei criteri negati sono a pagamento.
Per ulteriori informazioni sui prezzi di Cloud Logging, consulta i prezzi della suite operativa di Google Cloud: Cloud Logging .