Firestore 审核日志信息

本文档介绍 Firestore 的审核日志记录。Google Cloud 服务会生成审核日志,以记录 Google Cloud 资源中的管理和访问活动。 如需详细了解 Cloud Audit Logs,请参阅以下内容:

备注

配置审核日志记录时,请使用服务名称 datastore.googleapis.com 同时配置 datastore.googleapis.comfirestore.googleapis.com。配置完成后,Firestore API 的日志将包含服务名称 firestore.googleapis.com

如需查看处理 DATA_READDATA_WRITE 请求所花的时间,请参阅 AuditLogmetadata 对象中的 processing_duration 字段。 processing_duration 描述数据库实际处理请求所花费的时间。这比最终用户延迟时间短。具体来说,它不包括网络开销。

对于 Listen 请求,processing_duration 只会出现在返回的初始结果集的审核日志中。它不会出现在同一 Listen 目标的后续审核日志中。

导入操作和 TTL 中的个别写入操作不会记录在审核日志中。

服务名称

Firestore 审核日志使用服务名称 firestore.googleapis.com。 针对此服务的过滤条件:

    protoPayload.serviceName="firestore.googleapis.com"
  

方法(按权限类型)

每个 IAM 权限都有一个 type 属性,该属性的值是一个枚举,可以是以下四个值之一:ADMIN_READADMIN_WRITEDATA_READDATA_WRITE。调用方法时 Firestore 会生成一条审核日志,其类别取决于 执行该方法所需权限的 type 属性。 需要 IAM 权限且 type 属性值为 DATA_READDATA_WRITEADMIN_READ 的方法会生成数据访问审核日志。需要 IAM 权限且 type 属性值为 ADMIN_WRITE 的方法会生成管理员活动审核日志。

权限类型 方法
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

API 接口审核日志

如需了解如何评估每种方法的权限以及评估哪些权限,请参阅 Firestore 的 Identity and Access Management 文档。

google.cloud.location.Locations

以下审核日志与属于 google.cloud.location.Locations 的方法相关联。

GetLocation

  • 方法google.cloud.location.Locations.GetLocation
  • 审核日志类型数据访问
  • 权限
    • datastore.locations.get - ADMIN_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.cloud.location.Locations.GetLocation"

ListLocations

  • 方法google.cloud.location.Locations.ListLocations
  • 审核日志类型数据访问
  • 权限
    • datastore.locations.list - ADMIN_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.cloud.location.Locations.ListLocations"

google.firestore.admin.v1.FirestoreAdmin

以下审核日志与属于 google.firestore.admin.v1.FirestoreAdmin 的方法相关联。

BulkDeleteDocuments

CreateBackupSchedule

CreateDatabase

CreateIndex

DeleteBackup

DeleteBackupSchedule

DeleteDatabase

DeleteIndex

ExportDocuments

GetBackup

GetBackupSchedule

GetDatabase

  • 方法google.firestore.admin.v1.FirestoreAdmin.GetDatabase
  • 审核日志类型数据访问
  • 权限
    • datastore.databases.getMetadata - ADMIN_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.admin.v1.FirestoreAdmin.GetDatabase"

GetField

  • 方法google.firestore.admin.v1.FirestoreAdmin.GetField
  • 审核日志类型数据访问
  • 权限
    • datastore.indexes.get - ADMIN_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.admin.v1.FirestoreAdmin.GetField"

GetIndex

  • 方法google.firestore.admin.v1.FirestoreAdmin.GetIndex
  • 审核日志类型数据访问
  • 权限
    • datastore.indexes.get - ADMIN_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.admin.v1.FirestoreAdmin.GetIndex"

ImportDocuments

ListBackupSchedules

ListBackups

ListDatabases

ListFields

ListIndexes

RestoreDatabase

UpdateBackupSchedule

UpdateDatabase

UpdateField

google.firestore.admin.v1beta1.FirestoreAdmin

以下审核日志与属于 google.firestore.admin.v1beta1.FirestoreAdmin 的方法相关联。

CreateIndex

DeleteIndex

ExportDocuments

GetIndex

ImportDocuments

ListIndexes

google.firestore.admin.v1beta2.FirestoreAdmin

以下审核日志与属于 google.firestore.admin.v1beta2.FirestoreAdmin 的方法相关联。

CreateIndex

DeleteIndex

ExportDocuments

GetField

GetIndex

ImportDocuments

ListFields

ListIndexes

UpdateField

google.firestore.v1.Firestore

以下审核日志与属于 google.firestore.v1.Firestore 的方法相关联。

BatchGetDocuments

BatchWrite

  • 方法google.firestore.v1.Firestore.BatchWrite
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.BatchWrite"

BeginTransaction

  • 方法google.firestore.v1.Firestore.BeginTransaction
  • 审核日志类型数据访问
  • 权限
    • datastore.databases.get - DATA_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.BeginTransaction"

Commit

  • 方法google.firestore.v1.Firestore.Commit
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.Commit"

CreateDocument

  • 方法google.firestore.v1.Firestore.CreateDocument
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - DATA_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.CreateDocument"

DeleteDocument

  • 方法google.firestore.v1.Firestore.DeleteDocument
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.delete - DATA_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.DeleteDocument"

GetDocument

  • 方法google.firestore.v1.Firestore.GetDocument
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.get - DATA_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.GetDocument"

ListCollectionIds

  • 方法google.firestore.v1.Firestore.ListCollectionIds
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.list - DATA_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.ListCollectionIds"

ListDocuments

  • 方法google.firestore.v1.Firestore.ListDocuments
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.ListDocuments"

Listen

  • 方法google.firestore.v1.Firestore.Listen
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 方法是长时间运行的操作或流式传输操作流式传输 RPC
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.Listen"

PartitionQuery

  • 方法google.firestore.v1.Firestore.PartitionQuery
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.PartitionQuery"

Rollback

  • 方法google.firestore.v1.Firestore.Rollback
  • 审核日志类型数据访问
  • 权限
    • datastore.databases.get - DATA_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.Rollback"

RunAggregationQuery

RunQuery

  • 方法google.firestore.v1.Firestore.RunQuery
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 方法是长时间运行的操作或流式传输操作流式传输 RPC
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.RunQuery"

UpdateDocument

  • 方法google.firestore.v1.Firestore.UpdateDocument
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.UpdateDocument"

Write

  • 方法google.firestore.v1.Firestore.Write
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 方法是长时间运行的操作或流式传输操作流式传输 RPC
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1.Firestore.Write"

google.firestore.v1beta1.Firestore

以下审核日志与属于 google.firestore.v1beta1.Firestore 的方法相关联。

BatchGetDocuments

BatchWrite

  • 方法google.firestore.v1beta1.Firestore.BatchWrite
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1beta1.Firestore.BatchWrite"

BeginTransaction

Commit

  • 方法google.firestore.v1beta1.Firestore.Commit
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1beta1.Firestore.Commit"

CreateDocument

  • 方法google.firestore.v1beta1.Firestore.CreateDocument
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - DATA_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1beta1.Firestore.CreateDocument"

DeleteDocument

  • 方法google.firestore.v1beta1.Firestore.DeleteDocument
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.delete - DATA_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1beta1.Firestore.DeleteDocument"

GetDocument

  • 方法google.firestore.v1beta1.Firestore.GetDocument
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.get - DATA_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1beta1.Firestore.GetDocument"

ListCollectionIds

ListDocuments

  • 方法google.firestore.v1beta1.Firestore.ListDocuments
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1beta1.Firestore.ListDocuments"

PartitionQuery

  • 方法google.firestore.v1beta1.Firestore.PartitionQuery
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1beta1.Firestore.PartitionQuery"

Rollback

  • 方法google.firestore.v1beta1.Firestore.Rollback
  • 审核日志类型数据访问
  • 权限
    • datastore.databases.get - DATA_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1beta1.Firestore.Rollback"

RunAggregationQuery

RunQuery

UpdateDocument

  • 方法google.firestore.v1beta1.Firestore.UpdateDocument
  • 审核日志类型数据访问
  • 权限
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.firestore.v1beta1.Firestore.UpdateDocument"

google.longrunning.Operations

以下审核日志与属于 google.longrunning.Operations 的方法相关联。

CancelOperation

  • 方法google.longrunning.Operations.CancelOperation
  • 审核日志类型管理员活动
  • 权限
    • datastore.operations.cancel - ADMIN_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.longrunning.Operations.CancelOperation"

DeleteOperation

  • 方法google.longrunning.Operations.DeleteOperation
  • 审核日志类型管理员活动
  • 权限
    • datastore.operations.delete - ADMIN_WRITE
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.longrunning.Operations.DeleteOperation"

GetOperation

  • 方法google.longrunning.Operations.GetOperation
  • 审核日志类型数据访问
  • 权限
    • datastore.operations.get - ADMIN_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.longrunning.Operations.GetOperation"

ListOperations

  • 方法google.longrunning.Operations.ListOperations
  • 审核日志类型数据访问
  • 权限
    • datastore.operations.list - ADMIN_READ
  • 方法是长时间运行的操作或流式传输操作:否。
  • 此方法的过滤条件 protoPayload.methodName="google.longrunning.Operations.ListOperations"

识别请求调用方

审核日志条目包含有关执行所记录操作的身份的信息。如需识别请求调用方,请查看 AuditLog 对象中的以下字段:

  • 来电者的身份会保存在 AuthenticationInfo 字段。这可能包括用户的 principalEmail。这些信息 有时会隐去数据

    如果将 JSON Web 令牌 (JWT) 用于第三方身份验证, thirdPartyPrincipal 字段包含令牌的标头和载荷。 例如,使用 Firebase Authentication 进行身份验证的请求的审核日志包含该请求的身份验证令牌

  • AuditLog 条目的 requestMetadata 对象中的 callerIp 字段包含调用方的 IP 地址。