Ce document décrit la journalisation d'audit pour Firebase Realtime Database. Les services Google Cloud génèrent des journaux d'audit qui enregistrent les activités d'administration et d'accès dans vos ressources Google Cloud. Pour en savoir plus sur Cloud Audit Logs, consultez les ressources suivantes :
- Types de journaux d'audit
- Structure des entrées des journaux d'audit
- Stocker et acheminer les journaux d'audit
- Synthèse des tarifs Cloud Logging
- Activer les journaux d'audit des accès aux données
Remarques
Pour en savoir plus sur les champs dans protoPayload.metadata
pour les opérations DATA_READ
et DATA_WRITE
, consultez la documentation de référence.
Nom du service
Les journaux d'audit Firebase Realtime Database utilisent le nom de service firebasedatabase.googleapis.com
.
Filtrez les résultats pour ce service :
protoPayload.serviceName="firebasedatabase.googleapis.com"
Méthodes par type d'autorisation
Chaque autorisation IAM possède une propriété type
, dont la valeur est une énumération pouvant être l'une des quatre valeurs suivantes: ADMIN_READ
, ADMIN_WRITE
, DATA_READ
ou DATA_WRITE
. Lorsque vous appelez une méthode, Firebase Realtime Database génère un journal d'audit dont la catégorie dépend de la propriété type
de l'autorisation requise pour exécuter la méthode.
Les méthodes nécessitant une autorisation IAM avec la valeur de la propriété type
de DATA_READ
, DATA_WRITE
ou ADMIN_READ
génèrent des journaux d'audit pour l'accès aux données.
Les méthodes nécessitant une autorisation IAM avec la valeur de propriété type
de ADMIN_WRITE
génèrent des journaux d'audit pour les activités d'administration.
Type d'autorisation | Méthodes |
---|---|
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 |
Journaux d'audit d'interface API
Pour en savoir plus sur la manière dont les autorisations sont évaluées pour chaque méthode, consultez la documentation Cloud Identity and Access Management pour Firebase Realtime Database.
google.firebase.database.v1.RealtimeDatabase
Les journaux d'audit suivants sont associés aux méthodes appartenant à google.firebase.database.v1.RealtimeDatabase
.
Connect
- Méthode :
google.firebase.database.v1.RealtimeDatabase.Connect
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.data.connect - DATA_READ
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Connect"
Disconnect
- Méthode :
google.firebase.database.v1.RealtimeDatabase.Disconnect
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.data.connect - DATA_READ
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Disconnect"
Listen
- Méthode :
google.firebase.database.v1.RealtimeDatabase.Listen
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.data.get - DATA_READ
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Listen"
OnDisconnectCancel
- Méthode :
google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.data.cancel - DATA_READ
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"
OnDisconnectPut
- Méthode :
google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.data.update - DATA_WRITE
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"
OnDisconnectUpdate
- Méthode :
google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.data.update - DATA_WRITE
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate"
Read
- Méthode :
google.firebase.database.v1.RealtimeDatabase.Read
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.data.get - DATA_READ
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Read"
RunOnDisconnect
- Méthode :
google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.data.update - DATA_WRITE
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect"
Unlisten
- Méthode :
google.firebase.database.v1.RealtimeDatabase.Unlisten
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.data.cancel - DATA_READ
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"
Update
- Méthode :
google.firebase.database.v1.RealtimeDatabase.Update
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.data.get - DATA_WRITE
firebasedatabase.data.update - DATA_WRITE
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Update"
Write
- Méthode :
google.firebase.database.v1.RealtimeDatabase.Write
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.data.update - DATA_WRITE
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Write"
google.firebase.database.v1beta.RealtimeDatabaseService
Les journaux d'audit suivants sont associés aux méthodes appartenant à google.firebase.database.v1beta.RealtimeDatabaseService
.
CreateDatabaseInstance
- Méthode :
google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
- Type de journal d'audit: Activité d'administration
- Autorisations :
firebasedatabase.instances.create - ADMIN_WRITE
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance"
DeleteDatabaseInstance
- Méthode :
google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
- Type de journal d'audit: Activité d'administration
- Autorisations :
firebasedatabase.instances.delete - ADMIN_WRITE
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance"
DisableDatabaseInstance
- Méthode :
google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
- Type de journal d'audit: Activité d'administration
- Autorisations :
firebasedatabase.instances.disable - ADMIN_WRITE
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance"
GetDatabaseInstance
- Méthode :
google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.instances.get - ADMIN_READ
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance"
ListDatabaseInstances
- Méthode :
google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
- Type de journal d'audit : Accès aux données
- Autorisations :
firebasedatabase.instances.list - ADMIN_READ
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances"
ReenableDatabaseInstance
- Méthode :
google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
- Type de journal d'audit: Activité d'administration
- Autorisations :
firebasedatabase.instances.reenable - ADMIN_WRITE
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance"
UndeleteDatabaseInstance
- Méthode :
google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
- Type de journal d'audit: Activité d'administration
- Autorisations :
firebasedatabase.instances.undelete - ADMIN_WRITE
- La méthode est une opération de longue durée ou en flux continu: Non.
- Filtre pour cette méthode :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"
Auditez les informations d'authentification
Les entrées des journaux d'audit comprennent des informations sur l'identité qui a effectué l'opération consignée. Pour identifier un appelant de requête, consultez les champs suivants dans l'objet AuditLog :
Établir des connexions en temps réel Les opérations
Connect
Realtime Database n'enregistrent pas les données d'authentification, car Realtime Database s'authentifie après l'établissement d'une connexion. Par conséquent,Connect
ne possède aucune information d'authentification. L'objetAuthenticationInfo
contient un espace réservéprincipalEmail
deaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
Authentification Google Les opérations Realtime Database qui utilisent l'authentification Google standard, telles que le trafic provenant de Firebase Admin SDK ou les requêtes REST authentifiées avec un jeton OAuth standard, comportent un objet
AuthenticationInfo
contenant l'adresse e-mail des identifiants réels.Firebase Authentication : les opérations Realtime Database qui utilisent Firebase Authentication comportent un objet
AuthenticationInfo
contenant une valeurprincipalEmail
deaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Il en va de même si vous implémentez votre propre solution d'authentification en saisissant les jetons JWT personnalisés.- Si un jeton Web JSON (JWT) a été utilisé pour l'authentification tierce, le champ
thirdPartyPrincipal
inclut l'en-tête et la charge utile du jeton. Par exemple, les journaux d'audit des requêtes authentifiées avec Firebase Authentication incluent le jeton Firebase Authentication de cette requête.
- Si un jeton Web JSON (JWT) a été utilisé pour l'authentification tierce, le champ
Pas d'authentification. Les opérations Realtime Database qui n'utilisent aucune authentification comportent un objet
AuthenticationInfo
contenant une valeurprincipalEmail
deaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Une instance Realtime Database avec des règles de sécurité ouvertes peut accorder de telles requêtes. Nous recommandons à tous les utilisateurs de sécuriser correctement leurs bases de données.Anciens jetons de secrets : Les opérations Realtime Database utilisant des anciens jetons comportent un objet
AuthenticationInfo
contenant un espace réservéprincipalEmail
deaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Pour les jetons JWT signés par des secrets,thirdPartyPrincipal
contient les en-têtes JWT et charge utile.
Auditer les évaluations Firebase Security Rules
Les journaux d'audit Cloud peuvent être utilisés pour identifier les requêtes qui seront potentiellement affectées par les modifications de Rules.
Dans l'objet AuthorizationInfo, authorization.permission
peut avoir l'une des valeurs suivantes:
firebasedatabase.data.get
: accès en lecture accordé au chemin spécifié dansresource
firebasedatabase.data.update
: accès en écriture accordé au chemin spécifié dansresource
.firebasedatabase.data.connect
: espace réservé pourConnect
etDisconnect
. Aucune autorisation requise pour se connecter à une instance Realtime Database.firebasedatabase.data.cancel
: utilisé pourUnlisten
etOnDisconnectCancel
. La révocation ou l'annulation d'une opération précédemment autorisée ne nécessite aucune opération une autorisation.
Corréler les journaux d'audit Cloud avec les résultats du profileur Realtime Database
Vous pouvez effectuer une analyse approfondie des performances de Realtime Database à l'aide du profiler Realtime Database en association avec la journalisation d'audit Realtime Database. Chaque outil possède ses propres atouts.
Cloud Audit Logging | Profileur Realtime Database |
---|---|
|
|
Le contenu des journaux d'audit correspond aux métriques du profileur, comme indiqué ci-dessous.
Nom de l'opération Audit Logging | Valeurs spéciales dansRealtimeDatabaseAuditMetadata |
Nom de l'opération Profiler |
---|---|---|
Connecter | RequestType correspond à REALTIME . |
concurrent-connect |
Déconnecter | RequestType correspond à REALTIME . |
concurrent-disconnect |
Lire | RequestType correspond à REALTIME . |
lecture en temps réel |
Lire | RequestType correspond à REST . |
rest-read |
Écriture | RequestType correspond à REALTIME . |
écriture en temps réel |
Écriture | RequestType correspond à REST . |
rest-write |
Mettre à jour | RequestType est REALTIME .
Cochez PreconditionType . |
realtime-update realtime-transaction |
Mettre à jour | RequestType est REST .
Vérifiez PreconditionType . |
reste-update rest-transaction |
Écouteur Écouter | RequestType correspond à REALTIME . |
écouter-écouter |
ListenerUnlisten | RequestType correspond à REALTIME . |
listener-unlisten |
OnDéconnecteM | RequestType correspond à REALTIME . |
lors de la déconnexion |
Mise à jour de la déconnexion | RequestType correspond à REALTIME . |
on-disconnect-update |
OnDisconnectCancel | RequestType correspond à REALTIME . |
lors de la déconnexion de l'appareil |
Exécuter à la déconnexion | RequestType correspond à REALTIME . |
run-on-disconnect |