Firestore 稽核記錄資訊

本文列出 Firestore 的稽核方法。 Google Cloud 服務會產生稽核記錄,用於記錄 Google Cloud 資源中的管理和存取活動。如要進一步瞭解 Cloud 稽核記錄,請參閱以下內容:

附註

設定稽核記錄時,請使用服務名稱 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目標
的後續稽核記錄中,不會再出現這類項目。

匯入、大量刪除作業和存留時間的個別寫入作業不會記錄在稽核記錄中。

服務名稱

如要查看 Firestore 稽核記錄,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面:

    前往 Logs Explorer

  2. 複製下列查詢並貼到「Logs Explorer」的「Query」欄位,然後點選「Run query」

        protoPayload.serviceName="firestore.googleapis.com"
      

依權限類型區分的方法

每個 IAM 權限都具有 type 屬性,其值為以下四個列舉值之一:ADMIN_READADMIN_WRITEDATA_READDATA_WRITE。呼叫方法時,Firestore 會產生一筆稽核記錄,類別取決於執行該方法所需權限的 type 屬性。若方法需要的 IAM 權限,type 屬性值為 DATA_READDATA_WRITEADMIN_READ,就會產生資料存取稽核記錄;若所需 IAM 權限的 type 屬性值為 ADMIN_WRITE,則會產生管理員活動稽核記錄。

下表列出的 API 方法中,如標有 (LRO) 字樣,表示為長時間執行的作業。這類方法通常會產生兩個稽核記錄項目,作業開始和結束時各一個。詳情請參閱「長時間執行的作業稽核記錄」。
權限類型 方法
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.GetUserCreds
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.ListUserCreds
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.CloneDatabase
google.firestore.admin.v1.FirestoreAdmin.CreateBackupSchedule
google.firestore.admin.v1.FirestoreAdmin.CreateDatabase
google.firestore.admin.v1.FirestoreAdmin.CreateIndex (LRO)
google.firestore.admin.v1.FirestoreAdmin.CreateUserCreds
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.DeleteUserCreds
google.firestore.admin.v1.FirestoreAdmin.DisableUserCreds
google.firestore.admin.v1.FirestoreAdmin.EnableUserCreds
google.firestore.admin.v1.FirestoreAdmin.ExportDocuments (LRO)
google.firestore.admin.v1.FirestoreAdmin.ImportDocuments (LRO)
google.firestore.admin.v1.FirestoreAdmin.ResetUserPassword
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.ExecutePipeline
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.Listen
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.Commit
google.firestore.v1beta1.Firestore.CreateDocument
google.firestore.v1beta1.Firestore.DeleteDocument
google.firestore.v1beta1.Firestore.UpdateDocument
google.firestore.v1beta1.Firestore.Write

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

CloneDatabase

CreateBackupSchedule

CreateDatabase

CreateIndex

CreateUserCreds

DeleteBackup

DeleteBackupSchedule

DeleteDatabase

DeleteIndex

DeleteUserCreds

DisableUserCreds

EnableUserCreds

ExportDocuments

GetBackup

GetBackupSchedule

GetDatabase

GetField

GetIndex

GetUserCreds

ImportDocuments

ListBackupSchedules

ListBackups

ListDatabases

ListFields

ListIndexes

ListUserCreds

ResetUserPassword

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

Commit

  • 方法google.firestore.v1.Firestore.Commit
  • 稽核記錄類型資料存取
  • 權限
    • datastore.databases.get - DATA_READ
    • datastore.entities.create - 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"

ExecutePipeline

  • 方法google.firestore.v1.Firestore.ExecutePipeline
  • 稽核記錄類型資料存取
  • 權限
    • datastore.databases.get - DATA_READ
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 方法的作業種類: 非長時間執行或串流作業。
  • 篩選條件 protoPayload.methodName="google.firestore.v1.Firestore.ExecutePipeline"

GetDocument

  • 方法google.firestore.v1.Firestore.GetDocument
  • 稽核記錄類型資料存取
  • 權限
    • datastore.entities.get - DATA_READ
  • 方法的作業種類: 非長時間執行或串流作業。
  • 篩選條件 protoPayload.methodName="google.firestore.v1.Firestore.GetDocument"

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

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

  • 方法google.firestore.v1.Firestore.RunAggregationQuery
  • 稽核記錄類型資料存取
  • 權限
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 方法的作業種類: 非長時間執行或串流作業。
  • 篩選條件 protoPayload.methodName="google.firestore.v1.Firestore.RunAggregationQuery"

RunQuery

  • 方法google.firestore.v1.Firestore.RunQuery
  • 稽核記錄類型資料存取
  • 權限
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 方法的作業種類: 非長時間執行或串流作業。
  • 篩選條件 protoPayload.methodName="google.firestore.v1.Firestore.RunQuery"

UpdateDocument

  • 方法google.firestore.v1.Firestore.UpdateDocument
  • 稽核記錄類型資料存取
  • 權限
    • datastore.databases.get - DATA_READ
    • 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
  • 方法的作業種類: 非長時間執行或串流作業。
  • 篩選條件 protoPayload.methodName="google.firestore.v1.Firestore.Write"

google.firestore.v1beta1.Firestore

屬於 google.firestore.v1beta1.Firestore 的方法會產生以下稽核記錄。

BatchGetDocuments

  • 方法google.firestore.v1beta1.Firestore.BatchGetDocuments
  • 稽核記錄類型資料存取
  • 權限
    • datastore.databases.get - DATA_READ
    • datastore.entities.get - DATA_READ
  • 方法的作業種類: 非長時間執行或串流作業。
  • 篩選條件 protoPayload.methodName="google.firestore.v1beta1.Firestore.BatchGetDocuments"

BatchWrite

  • 方法google.firestore.v1beta1.Firestore.BatchWrite
  • 稽核記錄類型資料存取
  • 權限
    • datastore.databases.get - DATA_READ
  • 方法的作業種類: 非長時間執行或串流作業。
  • 篩選條件 protoPayload.methodName="google.firestore.v1beta1.Firestore.BatchWrite"

BeginTransaction

Commit

  • 方法google.firestore.v1beta1.Firestore.Commit
  • 稽核記錄類型資料存取
  • 權限
    • datastore.databases.get - DATA_READ
    • 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

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"

Listen

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

  • 方法google.firestore.v1beta1.Firestore.RunAggregationQuery
  • 稽核記錄類型資料存取
  • 權限
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 方法的作業種類: 非長時間執行或串流作業。
  • 篩選條件 protoPayload.methodName="google.firestore.v1beta1.Firestore.RunAggregationQuery"

RunQuery

  • 方法google.firestore.v1beta1.Firestore.RunQuery
  • 稽核記錄類型資料存取
  • 權限
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 方法的作業種類: 非長時間執行或串流作業。
  • 篩選條件 protoPayload.methodName="google.firestore.v1beta1.Firestore.RunQuery"

UpdateDocument

  • 方法google.firestore.v1beta1.Firestore.UpdateDocument
  • 稽核記錄類型資料存取
  • 權限
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 方法的作業種類: 非長時間執行或串流作業。
  • 篩選條件 protoPayload.methodName="google.firestore.v1beta1.Firestore.UpdateDocument"

Write

  • 方法google.firestore.v1beta1.Firestore.Write
  • 稽核記錄類型資料存取
  • 權限
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 方法的作業種類: 非長時間執行或串流作業。
  • 篩選條件 protoPayload.methodName="google.firestore.v1beta1.Firestore.Write"

google.longrunning.Operations

屬於 google.longrunning.Operations 的方法會產生以下稽核記錄。

CancelOperation

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"

不會產生稽核記錄的方法

某些方法可能不會產生稽核記錄,原因包括以下一或多項:

  • 該方法的流量使用量高,若產生稽核記錄,會導致記錄與儲存成本過高。
  • 稽核價值低。
  • 其他稽核記錄或平台記錄已涵蓋該方法的活動。

下列方法不會產生稽核記錄:

  • google.longrunning.Operations.WaitOperation

找出要求發出者

稽核記錄項目包含執行記錄作業的身分相關資訊。如要識別要求呼叫端,請查看 AuditLog 物件中的下列欄位:

  • 呼叫端的 ID 會儲存在 AuthenticationInfo 欄位中。這可能包括使用者的 principalEmail。這項資訊有時會經過編輯

    如果第三方驗證使用 JSON Web Token (JWT),thirdPartyPrincipal 欄位會包含符記的標頭和酬載。舉例來說,使用 Firebase 驗證進行驗證的要求稽核記錄,會包含該要求的驗證權杖

  • AuditLog 項目 requestMetadata 物件中的 callerIp 欄位包含呼叫端的 IP 位址。