En este documento, se describen los registros de auditoría de Firebase Realtime Database. Los servicios de Google Cloud generan registros de auditoría que registran las actividades administrativas y de acceso dentro de tus recursos de Google Cloud. Para obtener más información sobre los Registros de auditoría de Cloud, consulta los siguientes recursos:
- Tipos de registros de auditoría
- Estructura de entradas de registro de auditoría
- Almacena y enruta registros de auditoría
- Resumen de precios de Cloud Logging
- Habilita los registros de auditoría de acceso a los datos
Notas
Puedes encontrar información adicional sobre los campos en protoPayload.metadata
para las operaciones DATA_READ
y DATA_WRITE
en la documentación de referencia.
Nombre del servicio
Los registros de auditoría de Firebase Realtime Database usan el nombre de servicio firebasedatabase.googleapis.com
.
Filtra este servicio:
protoPayload.serviceName="firebasedatabase.googleapis.com"
Métodos por tipo de permiso
Cada permiso de IAM tiene una propiedad type
, cuyo valor es una enumeración que puede ser uno de cuatro valores: ADMIN_READ
, ADMIN_WRITE
, DATA_READ
o DATA_WRITE
. Cuando llamas a un método,
Firebase Realtime Database genera un registro de auditoría cuya categoría depende de la
propiedad type
del permiso necesario para realizar el método.
Los métodos que requieren un permiso de IAM con el valor de propiedad type
de DATA_READ
, DATA_WRITE
o ADMIN_READ
generan registros de auditoría de acceso a los datos.
Los métodos que requieren un permiso de IAM con el valor de propiedad type
de ADMIN_WRITE
generan registros de auditoría de actividad del administrador.
Tipo de permiso | Métodos |
---|---|
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 |
Registros de auditoría de la interfaz de la API
Si quieres obtener información sobre cómo y qué permisos se evalúan para cada método, consulta la documentación de Cloud Identity and Access Management para Firebase Realtime Database.
google.firebase.database.v1.RealtimeDatabase
Los siguientes registros de auditoría están asociados con métodos que pertenecen a
google.firebase.database.v1.RealtimeDatabase
.
Connect
- Método:
google.firebase.database.v1.RealtimeDatabase.Connect
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.data.connect - DATA_READ
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Connect"
Disconnect
- Método:
google.firebase.database.v1.RealtimeDatabase.Disconnect
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.data.connect - DATA_READ
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Disconnect"
Listen
- Método:
google.firebase.database.v1.RealtimeDatabase.Listen
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.data.get - DATA_READ
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Listen"
OnDisconnectCancel
- Método:
google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.data.cancel - DATA_READ
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"
OnDisconnectPut
- Método:
google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.data.update - DATA_WRITE
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"
OnDisconnectUpdate
- Método:
google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.data.update - DATA_WRITE
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate"
Read
- Método:
google.firebase.database.v1.RealtimeDatabase.Read
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.data.get - DATA_READ
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Read"
RunOnDisconnect
- Método:
google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.data.update - DATA_WRITE
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect"
Unlisten
- Método:
google.firebase.database.v1.RealtimeDatabase.Unlisten
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.data.cancel - DATA_READ
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"
Update
- Método:
google.firebase.database.v1.RealtimeDatabase.Update
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.data.get - DATA_WRITE
firebasedatabase.data.update - DATA_WRITE
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Update"
Write
- Método:
google.firebase.database.v1.RealtimeDatabase.Write
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.data.update - DATA_WRITE
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Write"
google.firebase.database.v1beta.RealtimeDatabaseService
Los siguientes registros de auditoría están asociados con métodos que pertenecen a
google.firebase.database.v1beta.RealtimeDatabaseService
.
CreateDatabaseInstance
- Método:
google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
- Tipo de registro de auditoría: actividad del administrador
- Permisos:
firebasedatabase.instances.create - ADMIN_WRITE
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance"
DeleteDatabaseInstance
- Método:
google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
- Tipo de registro de auditoría: actividad del administrador
- Permisos:
firebasedatabase.instances.delete - ADMIN_WRITE
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance"
DisableDatabaseInstance
- Método:
google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
- Tipo de registro de auditoría: actividad del administrador
- Permisos:
firebasedatabase.instances.disable - ADMIN_WRITE
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance"
GetDatabaseInstance
- Método:
google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.instances.get - ADMIN_READ
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance"
ListDatabaseInstances
- Método:
google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
- Tipo de registro de auditoría: acceso a los datos
- Permisos:
firebasedatabase.instances.list - ADMIN_READ
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances"
ReenableDatabaseInstance
- Método:
google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
- Tipo de registro de auditoría: actividad del administrador
- Permisos:
firebasedatabase.instances.reenable - ADMIN_WRITE
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance"
UndeleteDatabaseInstance
- Método:
google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
- Tipo de registro de auditoría: actividad del administrador
- Permisos:
firebasedatabase.instances.undelete - ADMIN_WRITE
- El método es una operación de larga duración o de transmisión:
no.
- Filtra para este método:
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"
Información de autenticación de auditoría
Las entradas de registro de auditoría incluyen información sobre la identidad que realizó la operación registrada. Para identificar un llamador de solicitudes, consulta los siguientes campos dentro del objeto AuditLog:
Establece conexiones en tiempo real. Las operaciones
Connect
de Realtime Database no registran datos de autenticación, ya que Realtime Database se autentica después de que se establece una conexión. Por lo tanto,Connect
no tiene información de autenticación. El objetoAuthenticationInfo
contiene unprincipalEmail
de marcador de posición deaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
.Autenticación de Google. Las operaciones de Realtime Database que usan la autenticación estándar de Google, como el tráfico de Firebase Admin SDK o las solicitudes de REST autenticadas con un token estándar de OAuth, tienen un objeto
AuthenticationInfo
que contiene el correo electrónico de las credenciales reales.Firebase Authentication. Las operaciones de Realtime Database que usan Firebase Authentication tienen un objeto
AuthenticationInfo
que contiene un valorprincipalEmail
deaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Lo mismo sucede si implementas tu propia solución de autenticación mediante la creación de JWT personalizados.- Si se usó un token web JSON (JWT) para la autenticación de terceros, el
campo
thirdPartyPrincipal
incluye el encabezado y la carga útil del token. Por ejemplo, los registros de auditoría para solicitudes autenticadas con Firebase Authentication incluyen el token de Firebase Authentication de esa solicitud.
- Si se usó un token web JSON (JWT) para la autenticación de terceros, el
campo
Sin autenticación. Las operaciones de Realtime Database que no usan autenticación tienen un objeto
AuthenticationInfo
que contiene un valorprincipalEmail
deaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Una instancia de Realtime Database con reglas de seguridad abiertas puede otorgar acceso a esas solicitudes. Recomendamos a todos los usuarios que protejan sus bases de datos de forma adecuada.Tokens de secretos heredados. Las operaciones de Realtime Database que usan tokens heredados tienen un objeto
AuthenticationInfo
que contiene un marcador de posiciónprincipalEmail
deaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. Para los JWT firmados con Secrets,thirdPartyPrincipal
contiene los encabezados y la carga útil de JWT.
Audita las evaluaciones de Firebase Security Rules
Los Registros de auditoría de Cloud se pueden usar para identificar las solicitudes que podrían verse afectadas por los cambios en Rules.
En el objeto AuthorizationInfo, authorization.permission
puede ser una de las siguientes opciones:
firebasedatabase.data.get
: El acceso de lectura se otorga en la ruta de acceso especificada enresource
.firebasedatabase.data.update
: El acceso de escritura se otorga en la ruta de acceso especificada enresource
.firebasedatabase.data.connect
: Marcador de posición paraConnect
yDisconnect
. No se requiere autorización para conectarse a una instancia de Realtime Database.firebasedatabase.data.cancel
: Se usa paraUnlisten
yOnDisconnectCancel
. Revocar o cancelar una operación autorizada con anterioridad no requiere una autorización adicional.
Correlaciona los Registros de auditoría de Cloud con los resultados del generador de perfiles de Realtime Database
Puedes realizar un análisis de rendimiento detallado en Realtime Database con el generador de perfiles de Realtime Database en combinación con los registros de auditoría de Realtime Database. Cada herramienta tiene sus puntos fuertes.
Registros de auditoría de Cloud | Generador de perfiles de Realtime Database |
---|---|
|
|
El contenido de los registros de auditoría corresponde a las métricas del generador de perfiles, como se muestra a continuación.
Nombre de la operación de registro de auditoría | Valores especiales enRealtimeDatabaseAuditMetadata |
Nombre de la operación del generador de perfiles |
---|---|---|
Conectar | RequestType es REALTIME |
concurrent-connect |
Desconectar | RequestType es REALTIME |
concurrent-disconnect |
Leer | RequestType es REALTIME |
realtime-read |
Leer | RequestType es REST |
rest-read |
Escribir | RequestType es REALTIME |
realtime-write |
Escribir | RequestType es REST |
rest-write |
Actualizar | RequestType es REALTIME .
Revisa PreconditionType . |
realtime-update realtime-transaction |
Actualizar | RequestType es REST .
Revisa PreconditionType . |
rest-update rest-transaction |
ListenerListen | RequestType es REALTIME |
listener-listen |
ListenerUnlisten | RequestType es REALTIME |
listener-unlisten |
OnDisconnectPut | RequestType es REALTIME |
on-disconnect-put |
OnDisconnectUpdate | RequestType es REALTIME |
on-disconnect-update |
OnDisconnectCancel | RequestType es REALTIME |
on-disconnect-cancel |
RunOnDisconnect | RequestType es REALTIME |
run-on-disconnect |