Registro de auditoría de Firebase Realtime Database

Esta página describe los registros de auditoría creados por Firebase como parte de Cloud Audit Logs .

Descripción general

Los servicios de Firebase escriben registros de auditoría para ayudarlo a responder las preguntas: "¿Quién hizo qué, dónde y cuándo?". Estos son registros de auditoría de la nube, que se proporcionan como parte del proyecto de Google Cloud conectado a su proyecto de Firebase .

Cada uno de sus proyectos de Firebase contiene solo los registros de auditoría de los recursos que están directamente dentro del proyecto.

Para obtener una descripción general de los registros de auditoría de la nube, consulte Descripción general de los registros de auditoría de la nube . Para obtener una comprensión más profunda del formato de registro de auditoría, consulte Comprender 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 administrativa

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

    No puede deshabilitar los registros de auditoría de actividad administrativa.

  • Registros de auditoría de acceso a datos

    Incluye operaciones de "lectura de administrador" que leen metadatos o información de configuración. También incluye 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 datos, debe habilitarlos explícitamente.

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

Operaciones auditadas

A continuación se resume qué operaciones de API corresponden a cada tipo de registro de auditoría en Firebase Realtime Database:

Categoría de registros de auditoría Operaciones de la base de datos en tiempo real de Firebase
Registros de auditoría de actividad del administrador (ADMIN_WRITE)
  • Crear instancia de base de datos
  • Eliminar instancia de base de datos
  • Deshabilitar instancia de base de datos
  • Volver a habilitar la instancia de base de datos
Registros de auditoría de acceso a datos (ADMIN_READ)
  • Obtener instancia de base de datos
  • Lista de instancias de base de datos
Registros de auditoría de acceso a datos (DATA_READ o DATA_WRITE)
Registros de auditoría de acceso a datos (DATA_READ)
Registros de auditoría de acceso a datos (DATA_WRITE)
  • Escribir
  • Actualizar. Ver WriteMetadata asociado.
  • Al Desconectar Poner
  • OnDisconnectActualización. Ver WriteMetadata asociado.
  • Al desconectarCancelar

Auditar información de autenticación

Las entradas del registro de auditoría incluyen información sobre la identidad que realizó la operación registrada. Para identificar a una persona que llama a una solicitud, consulte los siguientes campos dentro del objeto AuditLog:

  • Establecer conexiones en tiempo real. Las operaciones de Realtime Database Connect 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 marcador de posición principalEmail de audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com .

  • Autenticación de Google. Las operaciones de bases de datos en tiempo real que utilizan la autenticación estándar de Google, como el tráfico del SDK de administrador de Firebase o las solicitudes REST autenticadas con un token OAuth estándar , tienen un objeto AuthenticationInfo que contiene las credenciales de correo electrónico reales.

  • Autenticación de base de fuego. 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 ocurre si implementa su propia solución de autenticación creando JWT personalizados.

    • Si se utilizó un token web JSON (JWT) para la autenticación de terceros, el thirdPartyPrincipal incluye el encabezado y la carga útil del token. Por ejemplo, los registros de auditoría de solicitudes autenticadas con Firebase Authentication incluyen el token de Firebase Authentication de esa solicitud.
  • Sin autenticacion. Las operaciones de Realtime Database que no utilizan ninguna 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 conceder dichas solicitudes. . Recomendamos a todos los usuarios proteger sus bases de datos adecuadamente.

  • Fichas de secretos heredados. Las operaciones de Realtime Database que utilizan tokens heredados tienen un objeto AuthenticationInfo que contiene un marcador de posición principalEmail de audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com . Para JWT firmado por secretos, thirdPartyPrincipal contiene los encabezados y la carga útil del JWT.

Auditar las evaluaciones de las reglas de seguridad de Firebase

Los registros de Cloud Audit se pueden utilizar para identificar solicitudes que podrían verse afectadas por cambios en las reglas.

En el objeto AuthorizationInfo , authorization.permission puede ser uno de:

  • firebasedatabase.data.get : acceso de lectura otorgado en la ruta especificada en resource .
  • firebasedatabase.data.update : acceso de escritura otorgado en la ruta 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 utiliza para Unlisten y OnDisconnectCancel . Revocar o cancelar una operación previamente autorizada no requiere autorización adicional.

Correlacione los registros de Cloud Audit con los resultados del perfilador de Realtime Database

Puede realizar un análisis de rendimiento en profundidad en Realtime Database utilizando el generador de perfiles de Realtime Database en combinación con el registro de auditoría de Realtime Database. Cada herramienta tiene sus puntos fuertes.

Registro de auditoría en la nube Perfilador de bases de datos en tiempo real
  • Audita el acceso a las bases de datos.
  • Captura continuamente todas las solicitudes
  • Permite realizar consultas retrospectivas.
  • Contiene información detallada del token de autenticación.
  • Incurre en un costo de uso
  • Utilizado para análisis de rendimiento.
  • Proporciona herramientas útiles para la identificación de puntos de acceso y, por tanto, la optimización del rendimiento.
  • Puede medir la transmisión del oyente , que no está disponible en los registros de auditoría debido al posible volumen de datos.
  • Ligero y en tiempo real, lo que lo hace bueno para pruebas de carga en vivo. Las entradas del registro de auditoría pueden tardar unos minutos en aparecer.

El contenido del registro 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 conexión concurrente
Desconectar RequestType es REALTIME desconexión concurrente
Leer RequestType es REALTIME lectura en tiempo real
Leer RequestType es REST descansar-leer
Escribir RequestType es REALTIME escritura en tiempo real
Escribir RequestType es REST descansar-escribir
Actualizar RequestType es REALTIME .
Marque PreconditionType .
actualización en tiempo real
transacción en tiempo real
Actualizar RequestType es REST .
Marque PreconditionType .
actualización de descanso
transacción-resto
OyenteEscuchar RequestType es REALTIME oyente-escucha
OyenteDejar de escuchar RequestType es REALTIME oyente-deja de escuchar
Al Desconectar Poner RequestType es REALTIME en-desconectar-poner
Actualización al desconectar RequestType es REALTIME actualización al desconectarse
Al desconectarCancelar RequestType es REALTIME al desconectar-cancelar
Ejecutar al desconectar RequestType es REALTIME funcionamiento al desconectar

Formato de registro de auditoría

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

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

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

  • Información de auditoría específica del servicio opcional, que es un objeto específico del servicio. Para integraciones más antiguas, este objeto se mantiene en el campo serviceData del objeto AuditLog ; Las integraciones más nuevas utilizan el campo metadata .

Para conocer otros campos de estos objetos y cómo interpretarlos, consulte Comprender los registros de auditoría .

Información adicional sobre los campos en protoPayload.metadata para las operaciones DATA_READ y DATA_WRITE está disponible en la documentación de referencia .

Nombre de registro

Los nombres de los recursos de Cloud Audit Logs indican el proyecto de Firebase u otra entidad de Google Cloud propietaria de los registros de auditoría, y si el registro contiene datos de registro de auditoría de actividad administrativa, acceso a datos, política denegada o eventos del sistema. Por ejemplo, a continuación se muestran los nombres de los registros de auditoría de actividad administrativa a nivel de proyecto y los registros de auditoría de acceso a datos de una organización. Las variables indican identificadores de organización y 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 utilizan el nombre de servicio firebasedatabase.googleapis.com .

Para obtener una lista completa de todos los nombres de servicios de la API de Cloud Logging y su correspondiente tipo de recurso monitoreado, consulte Asignar servicios a recursos .

Tipos de recursos

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

Para obtener una lista de todos los tipos de recursos monitoreados de Cloud Logging e información descriptiva, consulte Tipos de recursos monitoreados .

Habilitar el registro de auditoría

Los registros de auditoría de actividad administrativa siempre están habilitados; no puedes desactivarlos.

Los registros de auditoría de acceso a datos están deshabilitados de forma predeterminada y no se escriben a menos que se habiliten explícitamente (la excepción son los registros de auditoría de acceso a datos para BigQuery, que no se pueden deshabilitar).

Los registros de auditoría de acceso a datos para Realtime Database se alternan marcando DATA_READ y/o DATA_WRITE en GCP Console. Hay un retraso de hasta una hora entre el momento en que los registros se habilitan o deshabilitan en GCP Console y el momento en que los registros comienzan o dejan de entregarse.

Para obtener instrucciones sobre cómo habilitar algunos o todos los registros de auditoría de acceso a datos, consulte Configurar registros de acceso a datos .

Permisos y roles

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

Al decidir qué permisos y roles específicos de Logging se aplican a su caso de uso, considere lo siguiente:

  • La función Visor de registros ( roles/logging.viewer ) le brinda acceso de solo lectura a los registros de auditoría de actividad administrativa, política denegada y eventos del sistema. Si solo tiene esta función, no podrá ver los registros de auditoría de acceso a datos que se encuentran en el depósito _Default .

  • La función Visor de registros privados (roles/logging.privateLogViewer ) incluye los permisos contenidos en roles/logging.viewer , además de la capacidad de leer registros de auditoría de acceso a datos en el depósito _Default .

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

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

Ver los registros

Para buscar y ver registros de auditoría, necesita conocer el identificador del proyecto, carpeta u organización de Firebase para el cual desea ver la información del registro de auditoría. Puede especificar aún más otros campos LogEntry indexados, como resource.type ; para obtener más información, consulte Buscar entradas de registro rápidamente .

Los siguientes son los nombres de los registros de auditoría; incluyen variables para los identificadores del proyecto, carpeta u 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 gcloud o la API de Logging.

Consola

Puedes usar el Explorador de registros en GCP Console para recuperar las entradas del registro de auditoría de tu proyecto, carpeta u organización de Firebase:

  1. En GCP Console, vaya a la página Registro > Explorador de registros .

    Vaya a la página del Explorador de registros

  2. En la página Explorador de registros , seleccione un proyecto, carpeta u organización de Firebase existente.

  3. En el panel Generador de consultas , haga lo siguiente:

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

    • En Nombre de registro , seleccione el tipo de registro de auditoría que desea ver:

      • Para los registros de auditoría de actividad del administrador, seleccione actividad .
      • Para los registros de auditoría de acceso a datos, seleccione acceso_datos .
      • Para los registros de auditoría de eventos del sistema, seleccione system_event .
      • Para los registros de auditoría de Política denegada, seleccione política .

    Si no ve estas opciones, entonces no hay ningún registro de auditoría de ese tipo disponible en el proyecto, carpeta u organización de Firebase.

    Para obtener más detalles sobre las consultas mediante el Explorador de registros, consulte Crear consultas de registros .

nube de gcloud

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

Para leer las entradas del registro de auditoría a nivel de proyecto de Firebase, ejecute 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 carpeta, ejecute 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, ejecute 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 gcloud , consulta Leer entradas de registro .

API

Al crear sus consultas, reemplace las variables con valores válidos, sustituya el nombre o los identificadores de registro de auditoría de nivel de proyecto, de carpeta o de organización adecuados tal como se enumeran en los nombres de los registros de auditoría. Por ejemplo, si su consulta incluye un PROJECT_ID , entonces el identificador del proyecto que proporcione debe hacer referencia al proyecto de Firebase seleccionado actualmente.

Para utilizar la API de registro para ver las entradas del registro de auditoría, haga lo siguiente:

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

  2. Coloque lo siguiente en la parte del cuerpo de la solicitud del formulario Pruebe esta API . Al hacer clic en este formulario precargado , se completa automáticamente el cuerpo de la solicitud, pero debe proporcionar un PROJECT_ID válido en cada uno de los nombres de registro.

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

Para obtener más detalles sobre las consultas, consulte Registro del lenguaje de consulta .

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

Enrutar registros de auditoría

Puede enrutar registros de auditoría a destinos admitidos de la misma manera que puede enrutar otros tipos de registros. A continuación se presentan algunas razones por las que quizás desee enrutar sus registros de auditoría:

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

  • Para administrar sus registros de auditoría en toda una organización, puede crear receptores agregados que puedan enrutar registros de cualquiera o todos los proyectos de Firebase de la organización.

  • Si sus registros de auditoría de acceso a datos habilitados están empujando sus proyectos de Firebase sobre sus asignaciones de registros, puede crear receptores que excluyan los registros de auditoría de acceso a datos del registro.

Para obtener instrucciones sobre el enrutamiento de registros, consulte Configurar receptores .

Precios

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

Los registros de auditoría de acceso a datos y los registros de auditoría de política denegada tienen un costo.

Para obtener más información sobre los precios de Cloud Logging, consulte los precios del conjunto de operaciones de Google Cloud: Cloud Logging .