Información de registros de auditoría de Firestore

En este documento, se describen los registros de auditoría de Firestore.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:

Notas

Cuando configures el registro de auditoría, usa el nombre de servicio datastore.googleapis.com para configurar datastore.googleapis.com y firestore.googleapis.com.Una vez configurado, los registros de la API de Firestore incluirán el nombre de servicio firestore.googleapis.com.

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

En el caso de las solicitudes de Listen, processing_duration solo está presente en el registro de auditoría para el conjunto de resultados inicial que se devolvió. No se incluye en los registros de auditoría posteriores para el mismo destino Listen.

No se registran las escrituras individuales de las operaciones de importación, eliminación masiva y TTL.

Nombre del servicio

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

    protoPayload.serviceName="firestore.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, Firestore 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.

Los métodos de API de la siguiente lista marcados con (LRO) son operaciones de larga duración (LRO). Por lo general, estos métodos generan dos entradas de registro de auditoría: una cuando comienza la operación y otra cuando finaliza. Para obtener más información, consulta Registros de auditoría para operaciones de larga duración.
Tipo de permiso Métodos
ADMIN_READ google.cloud.location.Locations.GetLocation
google.cloud.location.Locations.ListLocations
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.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.v1beta1.FirestoreAdmin.GetIndex
google.firestore.admin.v1beta1.FirestoreAdmin.ListIndexes
google.firestore.admin.v1beta2.FirestoreAdmin.GetField
google.firestore.admin.v1beta2.FirestoreAdmin.GetIndex
google.firestore.admin.v1beta2.FirestoreAdmin.ListFields
google.firestore.admin.v1beta2.FirestoreAdmin.ListIndexes
google.longrunning.Operations.GetOperation
google.longrunning.Operations.ListOperations
ADMIN_WRITE google.firestore.admin.v1.FirestoreAdmin.BulkDeleteDocuments (LRO)
google.firestore.admin.v1.FirestoreAdmin.CreateBackupSchedule
google.firestore.admin.v1.FirestoreAdmin.CreateDatabase
google.firestore.admin.v1.FirestoreAdmin.CreateIndex (LRO)
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 (LRO)
google.firestore.admin.v1.FirestoreAdmin.ImportDocuments (LRO)
google.firestore.admin.v1.FirestoreAdmin.RestoreDatabase
google.firestore.admin.v1.FirestoreAdmin.UpdateBackupSchedule
google.firestore.admin.v1.FirestoreAdmin.UpdateDatabase
google.firestore.admin.v1.FirestoreAdmin.UpdateField (LRO)
google.firestore.admin.v1beta1.FirestoreAdmin.CreateIndex (LRO)
google.firestore.admin.v1beta1.FirestoreAdmin.DeleteIndex
google.firestore.admin.v1beta1.FirestoreAdmin.ExportDocuments (LRO)
google.firestore.admin.v1beta1.FirestoreAdmin.ImportDocuments (LRO)
google.firestore.admin.v1beta2.FirestoreAdmin.CreateIndex (LRO)
google.firestore.admin.v1beta2.FirestoreAdmin.DeleteIndex
google.firestore.admin.v1beta2.FirestoreAdmin.ExportDocuments (LRO)
google.firestore.admin.v1beta2.FirestoreAdmin.ImportDocuments (LRO)
google.firestore.admin.v1beta2.FirestoreAdmin.UpdateField (LRO)
google.longrunning.Operations.CancelOperation
google.longrunning.Operations.DeleteOperation
DATA_READ google.firestore.v1.Firestore.BatchGetDocuments
google.firestore.v1.Firestore.BeginTransaction
google.firestore.v1.Firestore.GetDocument
google.firestore.v1.Firestore.ListCollectionIds
google.firestore.v1.Firestore.ListDocuments
google.firestore.v1.Firestore.Listen
google.firestore.v1.Firestore.PartitionQuery
google.firestore.v1.Firestore.Rollback
google.firestore.v1.Firestore.RunAggregationQuery
google.firestore.v1.Firestore.RunQuery
google.firestore.v1beta1.Firestore.BatchGetDocuments
google.firestore.v1beta1.Firestore.BatchWrite
google.firestore.v1beta1.Firestore.BeginTransaction
google.firestore.v1beta1.Firestore.GetDocument
google.firestore.v1beta1.Firestore.ListCollectionIds
google.firestore.v1beta1.Firestore.ListDocuments
google.firestore.v1beta1.Firestore.PartitionQuery
google.firestore.v1beta1.Firestore.Rollback
google.firestore.v1beta1.Firestore.RunAggregationQuery
google.firestore.v1beta1.Firestore.RunQuery
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.BatchWrite
google.firestore.v1beta1.Firestore.Commit
google.firestore.v1beta1.Firestore.CreateDocument
google.firestore.v1beta1.Firestore.DeleteDocument
google.firestore.v1beta1.Firestore.UpdateDocument

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 Identity and Access Management para Firestore.

google.cloud.location.Locations

Los siguientes registros de auditoría están asociados con métodos que pertenecen a 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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.cloud.location.Locations.GetLocation"

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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.cloud.location.Locations.ListLocations"

google.firestore.admin.v1.FirestoreAdmin

Los siguientes registros de auditoría están asociados con métodos que pertenecen a google.firestore.admin.v1.FirestoreAdmin.

BulkDeleteDocuments

CreateBackupSchedule

CreateDatabase

CreateIndex

DeleteBackup

DeleteBackupSchedule

DeleteDatabase

DeleteIndex

ExportDocuments

GetBackup

GetBackupSchedule

GetDatabase

GetField

GetIndex

ImportDocuments

ListBackupSchedules

ListBackups

ListDatabases

ListFields

ListIndexes

RestoreDatabase

UpdateBackupSchedule

UpdateDatabase

UpdateField

google.firestore.admin.v1beta1.FirestoreAdmin

Los siguientes registros de auditoría están asociados con métodos que pertenecen a google.firestore.admin.v1beta1.FirestoreAdmin.

CreateIndex

DeleteIndex

ExportDocuments

GetIndex

ImportDocuments

ListIndexes

google.firestore.admin.v1beta2.FirestoreAdmin

Los siguientes registros de auditoría están asociados con métodos que pertenecen a google.firestore.admin.v1beta2.FirestoreAdmin.

CreateIndex

DeleteIndex

ExportDocuments

GetField

GetIndex

ImportDocuments

ListFields

ListIndexes

UpdateField

google.firestore.v1.Firestore

Los siguientes registros de auditoría están asociados con métodos que pertenecen a google.firestore.v1.Firestore.

BatchGetDocuments

  • Método: google.firestore.v1.Firestore.BatchGetDocuments
  • Tipo de registro de auditoría: acceso a los datos
  • Permisos:
    • datastore.entities.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.firestore.v1.Firestore.BatchGetDocuments"

BatchWrite

  • Método: google.firestore.v1.Firestore.BatchWrite
  • Tipo de registro de auditoría: acceso a los datos
  • Permisos:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.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.firestore.v1.Firestore.BatchWrite"

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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1.Firestore.BeginTransaction"

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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1.Firestore.Commit"

CreateDocument

  • Método: google.firestore.v1.Firestore.CreateDocument
  • Tipo de registro de auditoría: acceso a los datos
  • Permisos:
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - 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.firestore.v1.Firestore.CreateDocument"

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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1.Firestore.DeleteDocument"

GetDocument

  • Método: google.firestore.v1.Firestore.GetDocument
  • Tipo de registro de auditoría: acceso a los datos
  • Permisos:
    • datastore.entities.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.firestore.v1.Firestore.GetDocument"

ListCollectionIds

  • Método: google.firestore.v1.Firestore.ListCollectionIds
  • Tipo de registro de auditoría: acceso a los datos
  • Permisos:
    • datastore.entities.list - 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.firestore.v1.Firestore.ListCollectionIds"

ListDocuments

  • Método: google.firestore.v1.Firestore.ListDocuments
  • 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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1.Firestore.ListDocuments"

Listen

PartitionQuery

  • Método: google.firestore.v1.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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1.Firestore.PartitionQuery"

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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1.Firestore.Rollback"

RunAggregationQuery

  • Método: google.firestore.v1.Firestore.RunAggregationQuery
  • 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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1.Firestore.RunAggregationQuery"

RunQuery

  • Método: google.firestore.v1.Firestore.RunQuery
  • 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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1.Firestore.RunQuery"

UpdateDocument

  • Método: google.firestore.v1.Firestore.UpdateDocument
  • 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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1.Firestore.UpdateDocument"

Write

  • Método: google.firestore.v1.Firestore.Write
  • 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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1.Firestore.Write"

google.firestore.v1beta1.Firestore

Los siguientes registros de auditoría están asociados con métodos que pertenecen a google.firestore.v1beta1.Firestore.

BatchGetDocuments

  • Método: google.firestore.v1beta1.Firestore.BatchGetDocuments
  • 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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.BatchGetDocuments"

BatchWrite

  • Método: google.firestore.v1beta1.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.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.firestore.v1beta1.Firestore.BatchWrite"

BeginTransaction

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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.Commit"

CreateDocument

  • Método: google.firestore.v1beta1.Firestore.CreateDocument
  • Tipo de registro de auditoría: acceso a los datos
  • Permisos:
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - 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.firestore.v1beta1.Firestore.CreateDocument"

DeleteDocument

GetDocument

  • Método: google.firestore.v1beta1.Firestore.GetDocument
  • Tipo de registro de auditoría: acceso a los datos
  • Permisos:
    • datastore.entities.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.firestore.v1beta1.Firestore.GetDocument"

ListCollectionIds

ListDocuments

  • Método: google.firestore.v1beta1.Firestore.ListDocuments
  • 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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.ListDocuments"

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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.PartitionQuery"

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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.Rollback"

RunAggregationQuery

  • Método: google.firestore.v1beta1.Firestore.RunAggregationQuery
  • 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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.RunAggregationQuery"

RunQuery

  • Método: google.firestore.v1beta1.Firestore.RunQuery
  • 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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.RunQuery"

UpdateDocument

  • Método: google.firestore.v1beta1.Firestore.UpdateDocument
  • 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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.firestore.v1beta1.Firestore.UpdateDocument"

google.longrunning.Operations

Los siguientes registros de auditoría están asociados con métodos que pertenecen a google.longrunning.Operations.

CancelOperation

DeleteOperation

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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.longrunning.Operations.GetOperation"

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 larga duración o de transmisión: no.
  • Filtra para este método: protoPayload.methodName="google.longrunning.Operations.ListOperations"

Identifica a los llamadores 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 dentro de un objeto AuditLog:

  • La identidad del llamador 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 para 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 llamador.