Información de registros de auditoría de Firestore

En este documento, se describen los registros de auditoría para Firestore. Describe qué métodos se auditan y detalles sobre el registro de auditoría que produce cada método. Muestra qué métodos no producen registros de auditoría, si los hay. Los servicios de Google Cloud escriben registros de auditoría que registran actividades y accesos administrativos dentro de tus recursos de Google Cloud. Para obtener más información, consulta Descripción general de los registros de auditoría de Cloud.

Notas

Para ver el tiempo que se tardó en procesar una solicitud de DATA_READ o DATA_WRITE, consulta el campo processing_duration dentro del objeto metadata de una AuditLog. processing_duration describe el tiempo que la base de datos tardó en procesar una solicitud. Esto es menor que la latencia del usuario final. En particular, no incluye la sobrecarga de red.

Para las solicitudes Listen, processing_duration solo está presente en el registro de auditoría para el conjunto de resultados inicial que se muestra. No está en los registros de auditoría posteriores para ese mismo destino de Listen.

Las escrituras individuales de las operaciones de importación y el TTL no se registran de auditoría.

Nombre del servicio

Los registros de auditoría de Firestore usan el nombre de servicio firestore.googleapis.com.

Métodos por tipo de permiso

Firestore también incluye las siguientes operaciones como parte de la herramienta de diagnóstico Key Visualizer. Estos son registros de auditoría de acceso a los datos y tienen el nombre de servicio firestorekeyvisualizer.googleapis.com. Para habilitarlos, activa DATA_READ para el servicio firestore.googleapis.com.

  • google.cloud.keyvisualizer.KeyVisualizer.GetScan
  • google.cloud.keyvisualizer.KeyVisualizer.ListScans

Los métodos que verifican los tipos de permisos DATA_READ, DATA_WRITE y ADMIN_READ generan registros de auditoría de acceso a los datos. Los métodos que verifican los tipos de permisos ADMIN_WRITE generan registros de auditoría de actividad del administrador.

Tipo de permiso Métodos
ADMIN_READ google.cloud.location.location.Locations.GetLocation
google.cloud.location.Locations.ListLocations
google.firestore.admin.v1.FirestoreAdmin.GetBackup
google.firestore.admin.v1.firestoreAdmin.GetBackupSchedule
google.firestore.admin.v1.firestore.firestoreGetDatabase
google.firestore.location.Locations.ListLocations
google.firestore.admin.v1.FirestoreAdmin.GetBackup1












ADMIN_WRITE google.firestore.admin.v1.FirestoreAdmin.CreateBackupSchedule






















DATA_READ Firestore.firestore.v1.Firestore.BatchGetDocuments
google.firestore.v1.Firestore.BeginTransaction
google.firestore.v1.Firestore.GetDocument
google.firestore.v1.Firestore.ListCollectionIds
google.firestorev.Firestore.Firestore













DATA_WRITE google.firestore.v1.Firestore.BatchWrite
google.firestore.v1.Firestore.Commit
google.firestore.v1.Firestore.CreateDocument
google.firestore.v1.Firestore.DeleteDocument
google.firestore.v1.Firestore.UpdateDocument
google.firestore.v1.Firestore.Write
google.firestore.v1beta1.Firestore.firestoreFirestore.Firestore.FirestoreFirestore.Firestorev11



Registros de auditoría para cada interfaz de API

Si deseas obtener más información sobre qué permisos se evalúan para cada método, consulta la documentación de Identity and Access Management de Firestore.

google.cloud.location.Locations

En la siguiente sección, se incluyen detalles sobre los registros de auditoría asociados con los métodos que pertenecen a google.cloud.location.Locations.

google.cloud.location.Locations.GetLocation

  • Método: google.cloud.location.Locations.GetLocation
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.locations.get - ADMIN_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.cloud.location.Locations.GetLocation"

google.cloud.location.Locations.ListLocations

  • Método: google.cloud.location.Locations.ListLocations
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.locations.list - ADMIN_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.cloud.location.Locations.ListLocations"

google.firestore.admin.v1.FirestoreAdmin

En la siguiente sección, se incluyen detalles sobre los registros de auditoría asociados con los métodos que pertenecen a google.firestore.admin.v1.FirestoreAdmin.

google.firestore.admin.v1.FirestoreAdmin.CreateBackupSchedule

google.firestore.admin.v1.FirestoreAdmin.CreateDatabase

google.firestore.admin.v1.FirestoreAdmin.CreateIndex

google.firestore.admin.v1.FirestoreAdmin.DeleteBackup

google.firestore.admin.v1.FirestoreAdmin.DeleteBackupSchedule

google.firestore.admin.v1.FirestoreAdmin.DeleteDatabase

google.firestore.admin.v1.FirestoreAdmin.DeleteIndex

google.firestore.admin.v1.FirestoreAdmin.ExportDocuments

google.firestore.admin.v1.FirestoreAdmin.GetBackup

google.firestore.admin.v1.FirestoreAdmin.GetBackupSchedule

google.firestore.admin.v1.FirestoreAdmin.GetDatabase

google.firestore.admin.v1.FirestoreAdmin.GetField

google.firestore.admin.v1.FirestoreAdmin.GetIndex

google.firestore.admin.v1.FirestoreAdmin.ImportDocuments

google.firestore.admin.v1.FirestoreAdmin.ListBackupSchedules

google.firestore.admin.v1.FirestoreAdmin.ListBackups

google.firestore.admin.v1.FirestoreAdmin.ListDatabases

google.firestore.admin.v1.FirestoreAdmin.ListFields

google.firestore.admin.v1.FirestoreAdmin.ListIndexes

google.firestore.admin.v1.FirestoreAdmin.RestoreDatabase

google.firestore.admin.v1.FirestoreAdmin.UpdateBackupSchedule

google.firestore.admin.v1.FirestoreAdmin.UpdateDatabase

google.firestore.admin.v1.FirestoreAdmin.UpdateField

google.firestore.admin.v1beta1.FirestoreAdmin

En la siguiente sección, se incluyen detalles sobre los registros de auditoría asociados con los métodos que pertenecen a google.firestore.admin.v1beta1.FirestoreAdmin.

google.firestore.admin.v1beta1.FirestoreAdmin.CreateIndex

google.firestore.admin.v1beta1.FirestoreAdmin.DeleteIndex

google.firestore.admin.v1beta1.FirestoreAdmin.ExportDocuments

google.firestore.admin.v1beta1.FirestoreAdmin.GetIndex

google.firestore.admin.v1beta1.FirestoreAdmin.ImportDocuments

google.firestore.admin.v1beta1.FirestoreAdmin.ListIndexes

google.firestore.admin.v1beta2.FirestoreAdmin

En la siguiente sección, se incluyen detalles sobre los registros de auditoría asociados con los métodos que pertenecen a google.firestore.admin.v1beta2.FirestoreAdmin.

google.firestore.admin.v1beta2.FirestoreAdmin.CreateIndex

google.firestore.admin.v1beta2.FirestoreAdmin.DeleteIndex

google.firestore.admin.v1beta2.FirestoreAdmin.ExportDocuments

google.firestore.admin.v1beta2.FirestoreAdmin.GetField

google.firestore.admin.v1beta2.FirestoreAdmin.GetIndex

google.firestore.admin.v1beta2.FirestoreAdmin.ImportDocuments

google.firestore.admin.v1beta2.FirestoreAdmin.ListFields

google.firestore.admin.v1beta2.FirestoreAdmin.ListIndexes

google.firestore.admin.v1beta2.FirestoreAdmin.UpdateField

google.firestore.v1.Firestore

En la siguiente sección, se incluyen detalles sobre los registros de auditoría asociados con los métodos que pertenecen a google.firestore.v1.Firestore.

google.firestore.v1.Firestore.BatchGetDocuments

google.firestore.v1.Firestore.BatchWrite

  • Método: google.firestore.v1.Firestore.BatchWrite
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.BatchWrite"

google.firestore.v1.Firestore.BeginTransaction

  • Método: google.firestore.v1.Firestore.BeginTransaction
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.BeginTransaction"

google.firestore.v1.Firestore.Commit

  • Método: google.firestore.v1.Firestore.Commit
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.get - DATA_READ
    • datastore.entities.update - DATA_WRITE
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.Commit"

google.firestore.v1.Firestore.CreateDocument

  • Método: google.firestore.v1.Firestore.CreateDocument
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - DATA_WRITE
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.CreateDocument"

google.firestore.v1.Firestore.DeleteDocument

  • Método: google.firestore.v1.Firestore.DeleteDocument
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.entities.delete - DATA_WRITE
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.DeleteDocument"

google.firestore.v1.Firestore.GetDocument

  • Método: google.firestore.v1.Firestore.GetDocument
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.get - DATA_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.GetDocument"

google.firestore.v1.Firestore.ListCollectionIds

  • Método: google.firestore.v1.Firestore.ListCollectionIds
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.ListCollectionIds"

google.firestore.v1.Firestore.ListDocuments

  • Método: google.firestore.v1.Firestore.ListDocuments
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.ListDocuments"

google.firestore.v1.Firestore.Listen

  • Método: google.firestore.v1.Firestore.Listen
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • El método es una operación de transmisión o de larga duración: RPC de transmisión
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.Listen"
  • Notas:

    Listen es una RPC de larga duración que combina varios destinos de transmisión. Cada destino es una consulta o un conjunto de claves de documento. La transmisión para cada destino incluye un conjunto de resultados inicial y una secuencia de actualizaciones, incorporaciones y eliminaciones del conjunto de resultados. Los destinos son la unidad de auditoría relevante. Firestore audita cada destino de la siguiente manera:

    • Cuando se agregue el destino, emite una entrada de registro con la consulta de destinos o el conjunto de claves del documento. En estas entradas, operation.first es verdadero. Este registro de auditoría se omite cuando la transmisión es una reanudación de una transmisión de destino de escucha anterior.
    • Emite actualizaciones periódicas que informan el recuento de actualizaciones desde el último registro de auditoría para este objetivo.
    • Emite una entrada de registro cuando se quita el destino de la transmisión, ya sea de forma explícita o debido a la finalización de la RPC Listen. Esta entrada de registro informa el recuento de actualizaciones desde el último registro de auditoría para este objetivo. En estas entradas, operation.last es verdadero.
    • Las entradas de registro emitidas usan el mismo operation.id.

google.firestore.v1.Firestore.PartitionQuery

  • Método: google.firestore.v1.Firestore.PartitionQuery
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.PartitionQuery"

google.firestore.v1.Firestore.Rollback

  • Método: google.firestore.v1.Firestore.Rollback
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.Rollback"

google.firestore.v1.Firestore.RunAggregationQuery

google.firestore.v1.Firestore.RunQuery

  • Método: google.firestore.v1.Firestore.RunQuery
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • El método es una operación de transmisión o de larga duración: RPC de transmisión
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.RunQuery"
  • Notas: RunQuery es una RPC de transmisión de corta duración y emite una entrada de registro cuando se envía el último mensaje (documento).

google.firestore.v1.Firestore.UpdateDocument

  • Método: google.firestore.v1.Firestore.UpdateDocument
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.UpdateDocument"

google.firestore.v1.Firestore.Write

  • Método: google.firestore.v1.Firestore.Write
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • El método es una operación de transmisión o de larga duración: RPC de transmisión
  • Filtra por este método: protoPayload.methodName="google.firestore.v1.Firestore.Write"
  • Notas: Write emite una entrada de registro por cada mensaje recibido, ya que cada mensaje corresponde a una escritura independiente en la base de datos. Las entradas de registro emitidas usan el mismo operation.id.

google.firestore.v1beta1.Firestore

En la siguiente sección, se incluyen detalles sobre los registros de auditoría asociados con los métodos que pertenecen a google.firestore.v1beta1.Firestore.

google.firestore.v1beta1.Firestore.BatchGetDocuments

google.firestore.v1beta1.Firestore.BatchWrite

  • Método: google.firestore.v1beta1.Firestore.BatchWrite
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.BatchWrite"

google.firestore.v1beta1.Firestore.BeginTransaction

google.firestore.v1beta1.Firestore.Commit

  • Método: google.firestore.v1beta1.Firestore.Commit
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.Commit"

google.firestore.v1beta1.Firestore.CreateDocument

  • Método: google.firestore.v1beta1.Firestore.CreateDocument
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - DATA_WRITE
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.CreateDocument"

google.firestore.v1beta1.Firestore.DeleteDocument

google.firestore.v1beta1.Firestore.GetDocument

  • Método: google.firestore.v1beta1.Firestore.GetDocument
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.get - DATA_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.GetDocument"

google.firestore.v1beta1.Firestore.ListCollectionIds

google.firestore.v1beta1.Firestore.ListDocuments

  • Método: google.firestore.v1beta1.Firestore.ListDocuments
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.ListDocuments"

google.firestore.v1beta1.Firestore.PartitionQuery

  • Método: google.firestore.v1beta1.Firestore.PartitionQuery
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.PartitionQuery"

google.firestore.v1beta1.Firestore.Rollback

  • Método: google.firestore.v1beta1.Firestore.Rollback
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.Rollback"

google.firestore.v1beta1.Firestore.RunAggregationQuery

google.firestore.v1beta1.Firestore.RunQuery

  • Método: google.firestore.v1beta1.Firestore.RunQuery
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • El método es una operación de transmisión o de larga duración: RPC de transmisión
  • Filtra por este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.RunQuery"
  • Notas: RunQuery es una RPC de transmisión de corta duración y emite una entrada de registro cuando se envía el último mensaje (documento).

google.firestore.v1beta1.Firestore.UpdateDocument

  • Método: google.firestore.v1beta1.Firestore.UpdateDocument
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.databases.get - DATA_READ
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.UpdateDocument"

google.longrunning.Operations

En la siguiente sección, se incluyen detalles sobre los registros de auditoría asociados con los métodos que pertenecen a google.longrunning.Operations.

google.longrunning.Operations.CancelOperation

google.longrunning.Operations.DeleteOperation

google.longrunning.Operations.GetOperation

  • Método: google.longrunning.Operations.GetOperation
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.operations.get - ADMIN_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.longrunning.Operations.GetOperation"

google.longrunning.Operations.ListOperations

  • Método: google.longrunning.Operations.ListOperations
  • Tipo de registro de auditoría: Acceso a los datos
  • Permisos:
    • datastore.operations.list - ADMIN_READ
  • El método es una operación de transmisión o de larga duración: No.
  • Filtra por este método: protoPayload.methodName="google.longrunning.Operations.ListOperations"

Cómo identificar emisores de solicitudes

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 en un objeto AuditLog:

  • La identidad del emisor se encuentra en el campo AuthenticationInfo. Esto puede incluir el principalEmail del usuario. Esta información a veces se oculta.

    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 de las solicitudes autenticadas con Firebase Authentication incluyen el token de autenticación de esa solicitud.

  • El campo callerIp dentro del objeto requestMetadata de una entrada AuditLog incluye la dirección IP del emisor.