Registro de auditoría de Firebase Realtime Database

En esta página, se describen los registros de auditoría que crea Firebase como parte de los Registros de auditoría de Cloud.

Descripción general

Los servicios de Firebase escriben registros de auditoría que te permiten saber qué acciones se ejecutaron y quién las realizó, además de dónde y cuándo se llevaron a cabo. Estos son Registros de auditoría de Cloud y se proporcionan como parte de la conexión entre tu proyecto de Firebase y el de Google Cloud.

Cada proyecto de Firebase contiene solo los registros de auditoría correspondientes a los recursos que le pertenecen directamente.

Consulta la descripción general de los Registros de auditoría de Cloud para conocer más al respecto. Para comprender mejor el formato del registro de auditoría, consulta Información sobre los registros de auditoría.

Registros de auditoría disponibles

Los siguientes tipos de registros de auditoría están disponibles para Firebase Realtime Database:

  • Registros de auditoría de actividad del administrador

    Incluye operaciones de “escritura de administrador” que escriben metadatos o información de configuración.

    No puedes inhabilitar los registros de auditoría de actividad del administrador.

  • Registros de auditoría de acceso a los datos

    Incluye operaciones de “lectura de administrador” que leen metadatos o información de configuración. También incluye las operaciones de “lectura de datos” y “escritura de datos” que leen o escriben datos proporcionados por el usuario.

    Para recibir registros de auditoría de acceso a los datos, debes habilitarlos de forma explícita.

Para obtener descripciones más completas de los tipos de registros de auditoría, consulta Tipos de registros de auditoría.

Operaciones auditadas

A continuación, se resumen las operaciones de la API que corresponden a cada tipo de registro de auditoría en Firebase Realtime Database:

Categoría de registros de auditoría Operaciones de Firebase Realtime Database
Registros de auditoría de actividad del administrador (ADMIN_WRITE)
  • CreateDatabaseInstance
  • DeleteDatabaseInstance
  • DisableDatabaseInstance
  • ReenableDatabaseInstance
Registros de auditoría de acceso a los datos (ADMIN_READ)
  • GetDatabaseInstance
  • ListDatabaseInstances
Registros de auditoría de acceso a los datos (DATA_READ o DATA_WRITE)
Registros de auditoría de acceso a los datos (DATA_READ)
Registros de auditoría de acceso a los datos (DATA_WRITE)
  • Escribir
  • Actualizar. Consulta el WriteMetadata asociado.
  • OnDisconnectPut
  • OnDisconnectUpdate. Consulta el WriteMetadata asociado.
  • OnDisconnectCancel

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 objeto AuthenticationInfo contiene un principalEmail de marcador de posición de audit-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 del SDK de Firebase Admin 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 valor principalEmail de audit-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.
  • Sin autenticación. Las operaciones de Realtime Database que no usan autenticación tienen un objeto AuthenticationInfo que contiene un valor principalEmail de audit-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 principalEmail de marcador de posición de audit-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 las reglas de seguridad de Firebase

Los registros de auditoría de Cloud se pueden usar para identificar las solicitudes que podrían verse afectadas por los cambios en las reglas.

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 en resource.
  • firebasedatabase.data.update: El acceso de escritura se otorga en la ruta de acceso especificada en resource.
  • firebasedatabase.data.connect: Marcador de posición para Connect y Disconnect. No se requiere autorización para conectarse a una instancia de Realtime Database.
  • firebasedatabase.data.cancel: Se usa para Unlisten y OnDisconnectCancel. 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 y el registro de auditoría de Realtime Database. Cada herramienta tiene sus puntos fuertes.

Registros de auditoría de Cloud Generador de perfiles de Realtime Database
  • Audita el acceso a las bases de datos
  • Captura continuamente todas las solicitudes
  • Permite las consultas retrospectivas
  • Contiene información detallada del token de autenticación
  • Tiene un costo de uso
  • Se usa para el análisis de rendimiento
  • Proporciona herramientas útiles para la identificación de hotspots y, por lo tanto, la optimización del rendimiento
  • Puede medir listener-broadcast, que no está disponible en los registros de auditoría debido a los posibles volúmenes de datos
  • Diseño liviano y en tiempo real, ideal para pruebas de carga en vivo Las entradas del registro de auditoría pueden tardar unos minutos en aparecer

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 en
RealtimeDatabaseAuditMetadata
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

Formato de registro de auditoría

Las entradas del registro de auditoría incluyen los siguientes objetos:

  • La entrada de registro, que es un objeto de tipo LogEntry. Los campos útiles incluyen los siguientes:

    • El campo logName contiene el ID del recurso y el tipo de registro de auditoría.
    • El campo resource contiene el objetivo de la operación auditada.
    • El campo timestamp contiene la hora de la operación auditada.
    • El campo protoPayload contiene la información auditada.
  • Los datos de registro de auditoría, que son un objeto AuditLog alojado en el campo protoPayload de la entrada de registro.

  • La información opcional de auditoría específica del servicio, que es un objeto específico del servicio. En las integraciones más antiguas, este objeto se guarda en el campo serviceData del objeto AuditLog. Las integraciones más recientes usan el campo metadata.

Para obtener información sobre otros campos en estos objetos, además de cómo interpretarlos, consulta Información sobre los registros de auditoría.

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 registro

Los nombres de los recursos de los Registros de auditoría de Cloud indican a qué proyecto de Firebase o cualquier otra entidad de Google Cloud pertenecen y si el registro contiene los datos de registro de auditoría de la actividad del administrador, el acceso a los datos, la política denegada o los eventos del sistema. Por ejemplo, a continuación se muestran los nombres de registro para los registros de auditoría de actividad del administrador a nivel del proyecto y para los registros de auditoría de acceso a los datos de una organización. Las variables denotan identificadores de la organización y del proyecto de Firebase.

projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

Nombre del servicio

Los registros de auditoría de Firebase Realtime Database usan el nombre de servicio firebasedatabase.googleapis.com.

Para obtener una lista completa de los nombres de los servicios de la API de Cloud Logging y su tipo de recurso supervisado correspondiente, consulta Asigna servicios a recursos.

Tipos de recursos

Los registros de auditoría de Firebase Realtime Database usan el tipo de recurso audited_resource para todos los registros de auditoría.

Para obtener una lista de todos los tipos de recursos supervisados de Cloud Logging y la información descriptiva, consulta Tipos de recursos supervisados.

Habilita el registro de auditoría

Los registros de auditoría de actividad del administrador siempre están habilitados; no puedes inhabilitarlos.

Los registros de auditoría de acceso a los datos están inhabilitados de forma predeterminada y no se escriben, a menos que se habiliten explícitamente (excepto los registros de auditoría de acceso a los datos de BigQuery, que no pueden inhabilitarse).

Los registros de auditoría de acceso a los datos de Realtime Database se activan o desactivan mediante la verificación de DATA_READ o DATA_WRITE en la Consola de GCP. Hay una demora de hasta una hora entre el momento en que los registros se habilitan o inhabilitan en la Consola de GCP y el momento en que los registros comienzan a entregarse o se dejan de entregar.

Si quieres obtener instrucciones para habilitar todos o algunos de los registros de auditoría de acceso a los datos, consulta Configura los registros de acceso a los datos.

Permisos y roles

Los permisos y roles de Cloud IAM determinan tu capacidad para acceder a los datos de registros de auditoría en los recursos de Google Cloud.

Cuando decidas qué roles y permisos específicos de Logging se aplican a tu caso de uso, considera lo siguiente:

  • El rol visor de registros (roles/logging.viewer) te otorga acceso de solo lectura a los registros de auditoría de la actividad del administrador, la política denegada y los eventos del sistema. Si solo tienes este rol, no podrás ver los registros de auditoría de acceso a los datos que se encuentren en el bucket _Default.

  • El visor de registros privados ((roles/logging.privateLogViewer) incluye los permisos que contiene roles/logging.viewer, además de la capacidad de leer registros de auditoría de acceso a los datos del bucket _Default.

    Ten en cuenta que si estos registros privados se almacenan en buckets definidos por el usuario, cualquier usuario que tenga permisos para leer registros en esos buckets puede leer los registros privados. Para obtener más información sobre los buckets de registros, consulta Descripción general del enrutamiento y el almacenamiento.

Para obtener más información sobre los permisos y las funciones de Cloud IAM que se aplican a los datos de registros de auditoría, consulta Control de acceso.

Visualiza registros

Si quieres encontrar y ver los registros de auditoría, debes conocer el identificador de la carpeta, la organización o el proyecto de Firebase cuya información de registro de auditoría quieres consultar. Además, puedes especificar otros campos LogEntry indexados, como resource.type. Para obtener más información, consulta Busca entradas de registro con rapidez.

A continuación, se muestran los nombres de los registros de auditoría, que incluyen variables para los identificadores del proyecto, la carpeta o la organización de 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

Puedes ver los registros de auditoría en Cloud Logging mediante GCP Console, la herramienta de línea de comandos de gcloud o la API de Logging.

Console

Puedes usar el explorador de registros en GCP Console para recuperar las entradas de registro de auditoría de la carpeta, la organización o el proyecto de Firebase:

  1. En GCP Console, ve a la página Logging > Explorador de registros.

    Ir a la página Explorador de registros

  2. En la página Explorador de registros, selecciona una organización, una carpeta o un proyecto de Firebase existente.

  3. En el panel Compilador de consultas, sigue estos pasos:

    • En Tipo de recurso, selecciona el recurso de Google Cloud cuyos registros de auditoría quieres ver.

    • En Nombre del registro, selecciona el tipo de registro de auditoría que quieres ver:

      • En el caso de los registros de auditoría de la actividad del administrador, selecciona activity.
      • En los registros de auditoría de acceso a los datos, selecciona data_access.
      • En el caso de los registros de auditoría de eventos del sistema, selecciona system_event.
      • En el caso de los registros de auditoría de política denegada, selecciona policy.

    Si no ves estas opciones, significa que no hay registros de auditoría de ese tipo disponibles en la carpeta, la organización o el proyecto de Firebase.

    Si quieres obtener más información para consultar con el nuevo Explorador de registros, visita Crea consultas de registros.

gcloud

La herramienta de línea de comandos de gcloud proporciona una interfaz de línea de comandos para la API de Cloud Logging. Proporciona un PROJECT_ID, FOLDER_ID o ORGANIZATION_ID válido en cada uno de los nombres de registro.

Para leer las entradas del registro de auditoría a nivel del proyecto de Firebase, ejecuta el siguiente comando:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID

Para leer las entradas del registro de auditoría a nivel de las carpetas, ejecuta el siguiente comando:

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" --folder=FOLDER_ID

Para leer las entradas del registro de auditoría a nivel de organización, ejecuta el siguiente comando:

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID

Para obtener más información sobre el uso de la herramienta de gcloud, consulta Lee las entradas de registro.

API

Cuando crees tus consultas, reemplaza las variables por valores válidos y sustituye el nombre o los identificadores del registro de auditoría correspondientes a nivel de proyecto, de carpeta o de organización en función de los nombres de registro de auditoría. Por ejemplo, si tu consulta incluye un PROJECT_ID, el identificador del proyecto que proporciones debe hacer referencia al proyecto de Firebase que se encuentra seleccionado.

Si deseas usar la API de Logging para ver tus entradas de registro de auditoría, haz lo siguiente:

  1. Ve a la sección Probar esta API en la documentación del método entries.list.

  2. Ingresa lo siguiente en la parte Cuerpo de la solicitud del formulario Probar esta API. Si haces clic en este formulario prepropagado, se completará el cuerpo de la solicitud de manera automática, pero deberás proporcionar un PROJECT_ID válido para cada nombre de registro.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
  3. Haz clic en Ejecutar.

Para obtener más detalles sobre las consultas, visita Lenguaje de consulta de Logging.

Para ver un ejemplo de una entrada de registro de auditoría y cómo encontrar la información más importante en ella, consulta Ejemplo de entrada de registro de auditoría.

Enruta registros de auditoría

Puedes enrutar registros de auditoría a destinos compatibles de la misma manera en la que enrutas otros tipos de registros. Estos son algunos de los motivos por los que es posible que quieras enrutar tus registros de auditoría:

  • Para conservar los registros de auditoría por un período más largo o utilizar capacidades de búsqueda más potentes, puedes enrutar copias de tus registros de auditoría a Google Cloud Storage, BigQuery o Google Cloud Pub/Sub. Con Cloud Pub/Sub, puedes enrutar a otras aplicaciones, a otros repositorios y a terceros.

  • Para administrar los registros de auditoría en toda la organización, puedes crear receptores agregados que puedan enrutar registros desde cualquier proyecto de Firebase de la organización o desde todos los proyectos.

  • Si tus registros de auditoría de acceso a los datos habilitados sobrepasan las asignaciones de registros de los proyectos de Firebase, puedes crear receptores que excluyan los registros de auditoría de acceso a los datos de Logging.

Si quieres obtener instrucciones para enrutar los registros, consulta Configura receptores.

Precios

Los registros de auditoría de actividad del administrador y los registros de auditoría de eventos del sistema no tienen costo.

Se te cobra por los registros de auditoría de acceso a los datos y los registros de auditoría de política denegada.

Para obtener más información sobre los precios de Cloud Logging, consulta Precios de Google Cloud's operations suite: Cloud Logging.