Información de registros de auditoría de Firestore

En este documento, se describe el registro 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 configurados, los registros de la API de Firestore incluyen 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. Esto es menor que la latencia del usuario final. En particular, no incluye la sobrecarga de red.

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

Las operaciones de escritura individuales de las operaciones de importación y el TTL no se registran en los registros de auditoría.

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 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.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
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.ImportDocuments
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.CreateIndex
google.firestore.admin.v1beta1.FirestoreAdmin.DeleteIndex
google.firestore.admin.v1beta1.FirestoreAdmin.ExportDocuments
google.firestore.admin.v1beta1.FirestoreAdmin.ImportDocuments
google.firestore.admin.v1beta2.FirestoreAdmin.CreateIndex
google.firestore.admin.v1beta2.FirestoreAdmin.DeleteIndex
google.firestore.admin.v1beta2.FirestoreAdmin.ExportDocuments
google.firestore.admin.v1beta2.FirestoreAdmin.ImportDocuments
google.firestore.admin.v1beta2.FirestoreAdmin.UpdateField
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.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 de 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

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.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.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

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

google.firestore.v1beta1.Firestore

Los siguientes registros de auditoría están asociados con métodos que pertenecen a 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.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.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.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

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"

Cómo identificar a los emisores de las solicitudes

Las entradas del 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 emisor se guarda en la AuthenticationInfo . Esto puede incluir el principalEmail del usuario. Esta información se a veces 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 Firebase Authentication incluir el nombre de usuario de esa solicitud token de autenticación.

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