In diesem Dokument wird das Audit-Logging für Firebase Realtime Database beschrieben. Google Cloud Dienstleistung Audit-Logs generieren, in denen Administrator- und Zugriffsaktivitäten in Ihren Google Cloud-Ressourcen aufgezeichnet werden. Weitere Informationen zu Cloud-Audit-Logs finden Sie hier:
- Arten von Audit-Logs
- Struktur von Audit-Logeinträgen
- Audit-Logs speichern und weiterleiten
- Preisübersicht für Cloud Logging
- Audit-Logs zum Datenzugriff aktivieren
Hinweise
Weitere Informationen zu den Feldern in protoPayload.metadata
für DATA_READ
- und DATA_WRITE
-Vorgänge finden Sie in der Referenzdokumentation.
Dienstname
Für Firebase Realtime Database-Audit-Logs wird der Dienstname firebasedatabase.googleapis.com
verwendet.
Nach diesem Dienst filtern:
protoPayload.serviceName="firebasedatabase.googleapis.com"
Methoden nach Berechtigungstyp
Jede IAM-Berechtigung hat ein type
-Attribut, dessen Wert ein Enum ist, der einen der folgenden vier Werte haben kann: ADMIN_READ
, ADMIN_WRITE
, DATA_READ
oder DATA_WRITE
. Wenn Sie eine Methode aufrufen, generiert Firebase Realtime Database ein Audit-Log, dessen Kategorie vom Attribut type
der Berechtigung abhängt, die für die Ausführung der Methode erforderlich ist.
Methoden, die eine IAM-Berechtigung mit dem type
-Attributwert DATA_READ
, DATA_WRITE
oder ADMIN_READ
erfordern, generieren Audit-Logs zum Datenzugriff.
Methoden, die eine IAM-Berechtigung mit dem type
-Attributwert ADMIN_WRITE
erfordern, generieren Audit-Logs zur Administratoraktivität.
Berechtigungstyp | Methoden |
---|---|
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-Logs der API-Schnittstelle
Weitere Informationen darüber, wie und welche Berechtigungen für die einzelnen Methoden ausgewertet werden, finden Sie in der Cloud Identity and Access Management-Dokumentation für Firebase Realtime Database.
google.firebase.database.v1.RealtimeDatabase
Die folgenden Audit-Logs sind Methoden zugeordnet, die zu google.firebase.database.v1.RealtimeDatabase
gehören.
Connect
- Methode:
google.firebase.database.v1.RealtimeDatabase.Connect
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.data.connect - DATA_READ
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Connect"
Disconnect
- Methode:
google.firebase.database.v1.RealtimeDatabase.Disconnect
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.data.connect - DATA_READ
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Disconnect"
Listen
- Methode:
google.firebase.database.v1.RealtimeDatabase.Listen
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.data.get - DATA_READ
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Listen"
OnDisconnectCancel
- Methode:
google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.data.cancel - DATA_READ
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"
OnDisconnectPut
- Methode:
google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.data.update - DATA_WRITE
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"
OnDisconnectUpdate
- Methode:
google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.data.update - DATA_WRITE
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate"
Read
- Methode:
google.firebase.database.v1.RealtimeDatabase.Read
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.data.get - DATA_READ
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Read"
RunOnDisconnect
- Methode:
google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.data.update - DATA_WRITE
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect"
Unlisten
- Methode:
google.firebase.database.v1.RealtimeDatabase.Unlisten
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.data.cancel - DATA_READ
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"
Update
- Methode:
google.firebase.database.v1.RealtimeDatabase.Update
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.data.get - DATA_WRITE
firebasedatabase.data.update - DATA_WRITE
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Update"
Write
- Methode:
google.firebase.database.v1.RealtimeDatabase.Write
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.data.update - DATA_WRITE
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Write"
google.firebase.database.v1beta.RealtimeDatabaseService
Die folgenden Audit-Logs sind Methoden zugeordnet, die zu google.firebase.database.v1beta.RealtimeDatabaseService
gehören.
CreateDatabaseInstance
- Methode:
google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
- Audit-Logtyp: Administratoraktivität
- Berechtigungen:
firebasedatabase.instances.create - ADMIN_WRITE
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance"
DeleteDatabaseInstance
- Methode:
google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
- Audit-Logtyp: Administratoraktivität
- Berechtigungen:
firebasedatabase.instances.delete - ADMIN_WRITE
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance"
DisableDatabaseInstance
- Methode:
google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
- Audit-Logtyp: Administratoraktivität
- Berechtigungen:
firebasedatabase.instances.disable - ADMIN_WRITE
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance"
GetDatabaseInstance
- Methode:
google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.instances.get - ADMIN_READ
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance"
ListDatabaseInstances
- Methode:
google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
- Audit-Logtyp: Datenzugriff
- Berechtigungen:
firebasedatabase.instances.list - ADMIN_READ
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances"
ReenableDatabaseInstance
- Methode:
google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
- Audit-Logtyp: Administratoraktivität
- Berechtigungen:
firebasedatabase.instances.reenable - ADMIN_WRITE
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance"
UndeleteDatabaseInstance
- Methode:
google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
- Audit-Logtyp: Administratoraktivität
- Berechtigungen:
firebasedatabase.instances.undelete - ADMIN_WRITE
- Methode ist ein Vorgang mit langer Ausführungszeit oder Streamingvorgang: Nr.
- Filter für diese Methode:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"
Authentifizierungsinformationen prüfen
Audit-Logeinträge enthalten Informationen zur Identität, die den aufgezeichneten Vorgang ausgeführt hat. Die Identität des Aufrufers einer Anfrage lässt sich anhand der folgenden Felder im AuditLog-Objekt ermitteln:
Echtzeitverbindungen herstellen Bei Realtime Database
Connect
-Vorgängen werden keine Authentifizierungsdaten protokolliert, da Realtime Database nach dem Herstellen einer Verbindung authentifiziert wird. Daher hatConnect
keine Authentifizierungsinformationen. DasAuthenticationInfo
-Objekt enthält den PlatzhalterprincipalEmail
audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
.Google-Authentifizierung Realtime Database-Vorgänge, die die standardmäßige Google-Version verwenden Authentifizierung, z. B. Traffic von Firebase Admin SDK- oder REST-Anfragen mit einem standardmäßigen OAuth-Token authentifiziert, ein
AuthenticationInfo
-Objekt haben, das die tatsächlichen Anmeldedaten enthält E-Mail.Firebase Authentication. Realtime Database-Vorgänge, die Firebase Authentication verwenden, haben Ein
AuthenticationInfo
-Objekt, das einenprincipalEmail
-Wert vonaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
Dasselbe gilt, wenn Sie Ihre eigene Authentifizierungslösung durch Prägung benutzerdefinierten JWTs.- Wurde ein JSON Web Token (JWT) für die Authentifizierung von Drittanbietern verwendet, enthält das
thirdPartyPrincipal
-Feld den Header und die Nutzlast des Tokens. Für Beispiel: Audit-Logs für mit Firebase Authentication authentifizierte Anfragen Fügen Sie das Firebase Authentication-Token dieser Anfrage ein.
- Wurde ein JSON Web Token (JWT) für die Authentifizierung von Drittanbietern verwendet, enthält das
Keine Authentifizierung. Realtime Database-Vorgänge, die keine verwenden Authentifizierung haben ein
AuthenticationInfo
-Objekt, das ein WertprincipalEmail
vonaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
Eine Realtime Database-Instanz mit offenen Sicherheitsregeln kann solche Anfragen gewähren. Mi. empfehlen allen Nutzenden, ihre Datenbanken ordnungsgemäß zu sichern.Legacy-Secrets-Tokens: Realtime Database-Vorgänge mit alten Tokens enthalten ein
AuthenticationInfo
-Objekt mit einem PlatzhalterprincipalEmail
vonaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Bei Secrets-signierten JWTs enthältthirdPartyPrincipal
die JWT-Header und Payload.
Firebase Security Rules Bewertungen prüfen
Cloud-Audit-Logs können verwendet werden, um Anfragen zu identifizieren, die möglicherweise von Rules Änderungen betroffen.
Im AuthorizationInfo-Objekt kann authorization.permission
einen der folgenden Werte haben:
firebasedatabase.data.get
: Lesezugriff für den in angegebenen Pfad gewährten Pfadresource
.firebasedatabase.data.update
: Schreibzugriff wurde über den in angegebenen Pfad gewährt.resource
.firebasedatabase.data.connect
: Platzhalter fürConnect
undDisconnect
. Es ist keine Autorisierung erforderlich, um eine Verbindung zu einer Realtime Database-Instanz herzustellen.firebasedatabase.data.cancel
: Wird fürUnlisten
undOnDisconnectCancel
verwendet. Zum Widerrufen oder Abbrechen eines zuvor autorisierten Vorgangs sind keine weiteren Autorisierung.
Cloud-Audit-Logs mit Realtime Database-Profiler-Ergebnissen korrelieren
Mit dem Realtime Database-Profiler in Kombination mit dem Realtime Database-Audit-Logging können Sie eine detaillierte Leistungsanalyse von Realtime Database durchführen. Jedes Tool hat seine Stärken.
Cloud-Audit-Logging | Realtime Database Profiler |
---|---|
|
|
Der Inhalt des Audit-Logs entspricht den Profiler-Messwerten, die unten dargestellt sind.
Name des Audit-Logging-Vorgangs | Besondere Werte inRealtimeDatabaseAuditMetadata |
Name des Profiler-Vorgangs |
---|---|---|
Verbinden | RequestType ist REALTIME |
gleichzeitige Verbindung |
Verbindung trennen | RequestType ist REALTIME |
gleichzeitiges Aufheben der Verbindung |
Lesen | RequestType ist REALTIME |
in Echtzeit lesen |
Lesen | RequestType ist REST |
Ausruhen |
Schreiben | RequestType ist REALTIME |
realtime-write |
Schreiben | RequestType ist REST |
rest-write |
Aktualisieren | RequestType ist REALTIME .
Klicken Sie auf das Kästchen PreconditionType . |
realtime-update realtime-transaction |
Aktualisieren | RequestType ist REST .
Klicken Sie auf das Kästchen PreconditionType . |
rest-update rest-transaction |
Zuhören | RequestType ist REALTIME |
listener-listen |
Zuhören (Listener) | RequestType ist REALTIME |
listener-unlisten |
BeiTrennungPut | RequestType ist REALTIME |
on-disconnect-put |
Aktualisierung bei Verbindungstrennung | RequestType ist REALTIME |
on-disconnect-update |
OnTrennenAbbrechen | RequestType ist REALTIME |
on-disconnect-cancel |
RunOnDisconnect | RequestType ist REALTIME |
run-on-disconnect |