Questo documento descrive il logging di controllo per Firebase Realtime Database. Google Cloud servizi generare audit log che registrano le attività amministrative e di accesso all'interno delle tue risorse Google Cloud. Per ulteriori informazioni sugli audit log di Cloud, consulta quanto segue:
- Tipi di log di controllo
- Struttura della voce del log di controllo
- Archiviazione e inoltro dei log di controllo
- Riepilogo dei prezzi di Cloud Logging
- Abilita gli audit log di accesso ai dati
Note
Ulteriori informazioni sui campi in protoPayload.metadata
per le operazioni DATA_READ
e DATA_WRITE
sono disponibili nella documentazione di riferimento.
Nome servizio
Gli audit log di Firebase Realtime Database utilizzano il nome servizio firebasedatabase.googleapis.com
.
Filtra per questo servizio:
protoPayload.serviceName="firebasedatabase.googleapis.com"
Metodi per tipo di autorizzazione
associato. Ogni autorizzazione IAM ha una proprietà type
, il cui valore è un enum
che può essere uno dei quattro valori: ADMIN_READ
, ADMIN_WRITE
,
DATA_READ
o DATA_WRITE
. Quando chiami un metodo,
Firebase Realtime Database genera un audit log la cui categoria dipende dal
Proprietà type
dell'autorizzazione richiesta per eseguire il metodo.
I metodi che richiedono un'autorizzazione IAM con il valore della proprietà type
corrispondente a DATA_READ
, DATA_WRITE
o ADMIN_READ
generano log di controllo Accesso ai dati.
I metodi che richiedono un'autorizzazione IAM con il valore della proprietà type
ADMIN_WRITE
generano
log di controllo per le attività amministrative.
Tipo di autorizzazione | Metodi |
---|---|
ADMIN_READ |
google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances |
ADMIN_WRITE |
google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance |
DATA_READ |
google.firebase.database.v1.RealtimeDatabase.Connect google.firebase.database.v1.RealtimeDatabase.Disconnect google.firebase.database.v1.RealtimeDatabase.Listen google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel google.firebase.database.v1.RealtimeDatabase.Read google.firebase.database.v1.RealtimeDatabase.Unlisten |
DATA_WRITE |
google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect google.firebase.database.v1.RealtimeDatabase.Update google.firebase.database.v1.RealtimeDatabase.Write |
Audit log dell'interfaccia API
Per informazioni su come e quali autorizzazioni vengono valutate per ogni metodo, consulta la documentazione di Cloud Identity and Access Management per Firebase Realtime Database.
google.firebase.database.v1.RealtimeDatabase
I seguenti audit log sono associati a metodi appartenenti a
google.firebase.database.v1.RealtimeDatabase
.
Connect
- Metodo:
google.firebase.database.v1.RealtimeDatabase.Connect
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.data.connect - DATA_READ
- Il metodo è un'operazione a lunga esecuzione o in streaming:
No.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Connect"
Disconnect
- Metodo:
google.firebase.database.v1.RealtimeDatabase.Disconnect
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.data.connect - DATA_READ
- Il metodo è un'operazione a lunga esecuzione o in modalità flusso:
N.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Disconnect"
Listen
- Metodo:
google.firebase.database.v1.RealtimeDatabase.Listen
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.data.get - DATA_READ
- Il metodo è un'operazione a lunga esecuzione o in modalità flusso:
N.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Listen"
OnDisconnectCancel
- Metodo:
google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.data.cancel - DATA_READ
- Il metodo è un'operazione a lunga esecuzione o in modalità flusso:
N.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"
OnDisconnectPut
- Metodo:
google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.data.update - DATA_WRITE
- Il metodo è un'operazione a lunga esecuzione o in streaming:
No.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"
OnDisconnectUpdate
- Metodo:
google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.data.update - DATA_WRITE
- Il metodo è un'operazione a lunga esecuzione o in streaming:
No.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate"
Read
- Metodo:
google.firebase.database.v1.RealtimeDatabase.Read
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.data.get - DATA_READ
- Il metodo è un'operazione a lunga esecuzione o in modalità flusso:
N.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Read"
RunOnDisconnect
- Metodo:
google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.data.update - DATA_WRITE
- Il metodo è un'operazione a lunga esecuzione o in modalità flusso:
N.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect"
Unlisten
- Metodo:
google.firebase.database.v1.RealtimeDatabase.Unlisten
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.data.cancel - DATA_READ
- Il metodo è un'operazione a lunga esecuzione o in modalità flusso:
N.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"
Update
- Metodo:
google.firebase.database.v1.RealtimeDatabase.Update
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.data.get - DATA_WRITE
firebasedatabase.data.update - DATA_WRITE
- Il metodo è un'operazione a lunga esecuzione o in streaming:
No.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Update"
Write
- Metodo:
google.firebase.database.v1.RealtimeDatabase.Write
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.data.update - DATA_WRITE
- Il metodo è un'operazione a lunga esecuzione o in modalità flusso:
N.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Write"
google.firebase.database.v1beta.RealtimeDatabaseService
I seguenti audit log sono associati a metodi appartenenti a
google.firebase.database.v1beta.RealtimeDatabaseService
.
CreateDatabaseInstance
- Metodo:
google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
- Tipo di log di controllo: Attività di amministrazione
- Autorizzazioni:
firebasedatabase.instances.create - ADMIN_WRITE
- Il metodo è un'operazione a lunga esecuzione o in streaming:
No.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance"
DeleteDatabaseInstance
- Metodo:
google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
- Tipo di log di controllo: Attività di amministrazione
- Autorizzazioni:
firebasedatabase.instances.delete - ADMIN_WRITE
- Il metodo è un'operazione a lunga esecuzione o in streaming:
No.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance"
DisableDatabaseInstance
- Metodo:
google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
- Tipo di log di controllo: Attività di amministrazione
- Autorizzazioni:
firebasedatabase.instances.disable - ADMIN_WRITE
- Il metodo è un'operazione a lunga esecuzione o in streaming:
No.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance"
GetDatabaseInstance
- Metodo:
google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.instances.get - ADMIN_READ
- Il metodo è un'operazione a lunga esecuzione o in modalità flusso:
N.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance"
ListDatabaseInstances
- Metodo:
google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
- Tipo di log di controllo: Accesso ai dati
- Autorizzazioni:
firebasedatabase.instances.list - ADMIN_READ
- Il metodo è un'operazione a lunga esecuzione o in streaming:
No.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances"
ReenableDatabaseInstance
- Metodo:
google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
- Tipo di log di controllo: Attività di amministrazione
- Autorizzazioni:
firebasedatabase.instances.reenable - ADMIN_WRITE
- Il metodo è un'operazione a lunga esecuzione o in streaming:
No.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance"
UndeleteDatabaseInstance
- Metodo:
google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
- Tipo di log di controllo: Attività di amministrazione
- Autorizzazioni:
firebasedatabase.instances.undelete - ADMIN_WRITE
- Il metodo è un'operazione a lunga esecuzione o in streaming:
No.
- Filtra per questo metodo:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"
Controlla le informazioni di autenticazione
Le voci degli audit log includono informazioni sull'identità che ha eseguito l'operazione registrata. Per identificare un chiamante della richiesta, consulta i seguenti campi nell'oggetto AuditLog:
Stabilire connessioni in tempo reale. Le operazioni Realtime Database
Connect
non registrano i dati di autenticazione poiché Realtime Database si autentica dopo che è stata stabilita una connessione. Di conseguenza,Connect
non ha informazioni di autenticazione. L'oggettoAuthenticationInfo
contiene un segnapostoprincipalEmail
diaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
.Autenticazione Google. Le operazioni Realtime Database che utilizzano l'autenticazione Google standard, ad esempio il traffico proveniente da Firebase Admin SDK o dalle richieste REST autenticato con un token OAuth standard, hanno un oggetto
AuthenticationInfo
che contiene l'email delle credenziali effettive.Firebase Authentication. Le operazioni di Realtime Database che utilizzano Firebase Authentication 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 mediante minting JWT personalizzati.- Se per l'autenticazione di terze parti è stato utilizzato un token JWT (JSON Web Token), il valore
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 della richiesta.
- Se per l'autenticazione di terze parti è stato utilizzato un token JWT (JSON Web Token), il valore
Il campo
Nessuna autenticazione. Le operazioni 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
Un'istanza Realtime Database con regole di sicurezza aperte può concedere queste richieste. consigliamo a tutti gli utenti di proteggere correttamente i propri database.Token secret legacy. Operazioni Realtime Database con token legacy presentano un oggetto
AuthenticationInfo
che contiene un segnapostoprincipalEmail
diaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
, Per i JWT firmati con secret,thirdPartyPrincipal
contiene le intestazioni e il payload JWT.
Controlla le valutazioni di Firebase Security Rules
Gli audit log di Cloud possono essere utilizzati per identificare le richieste potenzialmente interessate dalle modifiche Rules.
Nell'oggetto AuthorizationInfo, authorization.permission
può essere uno dei seguenti:
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
. Non è richiesta alcuna autorizzazione per la connessione a un'istanza Realtime Database.firebasedatabase.data.cancel
: utilizzata perUnlisten
eOnDisconnectCancel
. La revoca o l'annullamento di un'operazione precedentemente autorizzata non richiede autorizzazione.
Correla gli audit log di Cloud con i risultati del profiler Realtime Database
Puoi eseguire un'analisi approfondita del rendimento su Realtime Database utilizzando Realtime Database profiler in combinazione con Log di controllo di Realtime Database. Ogni strumento ha i suoi punti di forza.
Audit logging di Cloud | Realtime Database profiler |
---|---|
|
|
I contenuti dei log di controllo corrispondono alle metriche del profiler, come mostrato di seguito.
Nome dell'operazione di audit logging | Valori speciali inRealtimeDatabaseAuditMetadata |
Nome operazione Profiler |
---|---|---|
Connetti | RequestType è REALTIME |
connessione simultanea |
Disconnetti | RequestType è REALTIME |
disconnessione-contemporanea |
Leggi | RequestType è REALTIME |
realtime-read |
Leggi | RequestType è REST |
riprendi leggi |
Scrittura | RequestType è REALTIME |
scrittura in tempo reale |
Scrittura | RequestType è REST |
riprendi-scrivi |
Aggiorna | RequestType : REALTIME .
Seleziona PreconditionType . |
aggiornamento-in tempo reale transazione-in tempo reale |
Aggiorna | RequestType : REST .
Seleziona PreconditionType . |
aggiornamento-rest transazione-rest |
ListenerListen | RequestType è REALTIME |
ascolta-ascoltatore |
ListenerUnlisten | RequestType è REALTIME |
listener-unlisten |
OnDisconnettiPut | RequestType è REALTIME |
on-disconnect-put |
OnDisconnettiUpdate | RequestType è REALTIME |
on-disconnect-update |
OnDisconnettiAnnulla | RequestType è REALTIME |
on-disconnect-cancel |
RunOnDisconnect | RequestType è REALTIME |
run-on-disconnect |