Firebase 即時資料庫稽核記錄

本文件說明 Firebase 即時資料庫的稽核記錄,包括哪些方法 產生稽核記錄、每個方法產生的稽核記錄詳細資料,以及 哪些方法不會產生稽核記錄 (如果有的話)。Google Cloud 會產生 會記錄您帳戶中管理和存取活動的稽核記錄 專屬的 Google Cloud 資源若需更多資訊,請參閲 Cloud 稽核記錄總覽

附註

如要進一步瞭解 protoPayload.metadataDATA_READDATA_WRITE 作業的欄位資訊,請參閱參考說明文件

服務名稱

Firebase 即時資料庫稽核記錄使用的服務名稱為 firebasedatabase.googleapis.com

按權限類型區分的方法

會檢查 DATA_READDATA_WRITEADMIN_READ 權限會產生以下類別的記錄: 資料存取稽核記錄。 檢查 ADMIN_WRITE 權限的方法會產生記錄 分類為 管理員活動稽核記錄。

權限類型 方法
ADMIN_READ google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
ADMIN_WRITE google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
DATA_READ google.firebase.database.v1.RealtimeDatabase.Connect
google.firebase.database.v1.RealtimeDatabase.Disconnect
google.firebase.database.v1.RealtimeDatabase.Listen
google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
google.firebase.database.v1.RealtimeDatabase.Read
google.firebase.database.v1.RealtimeDatabase.Unlisten
DATA_WRITE google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
google.firebase.database.v1.RealtimeDatabase.Update
google.firebase.database.v1.RealtimeDatabase.Write

每個 API 介面的稽核記錄

如要進一步瞭解每個方法評估權限的方式和權限, 請參閱 Firebase 即時資料庫的 Cloud Identity and Access Management 說明文件。

google.firebase.database.v1.RealtimeDatabase

下一節將包含與 屬於 google.firebase.database.v1.RealtimeDatabase 的方法。

Connect

  • 方法google.firebase.database.v1.RealtimeDatabase.Connect
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.data.connect - DATA_READ
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Connect"

Disconnect

  • 方法google.firebase.database.v1.RealtimeDatabase.Disconnect
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.data.connect - DATA_READ
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Disconnect"

Listen

  • 方法google.firebase.database.v1.RealtimeDatabase.Listen
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.data.get - DATA_READ
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Listen"

OnDisconnectCancel

  • 方法google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.data.cancel - DATA_READ
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"

OnDisconnectPut

  • 方法google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.data.update - DATA_WRITE
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"

OnDisconnectUpdate

  • 方法google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.data.update - DATA_WRITE
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate"

Read

  • 方法google.firebase.database.v1.RealtimeDatabase.Read
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.data.get - DATA_READ
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Read"

RunOnDisconnect

  • 方法google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.data.update - DATA_WRITE
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect"

Unlisten

  • 方法google.firebase.database.v1.RealtimeDatabase.Unlisten
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.data.cancel - DATA_READ
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"

Update

  • 方法google.firebase.database.v1.RealtimeDatabase.Update
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.data.get - DATA_READ
    • firebasedatabase.data.get - DATA_WRITE
    • firebasedatabase.data.update - DATA_WRITE
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Update"

Write

  • 方法google.firebase.database.v1.RealtimeDatabase.Write
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.data.get - DATA_READ
    • firebasedatabase.data.get - DATA_WRITE
    • firebasedatabase.data.update - DATA_WRITE
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Write"

google.firebase.database.v1beta.RealtimeDatabaseService

下一節將包含與 屬於 google.firebase.database.v1beta.RealtimeDatabaseService 的方法。

CreateDatabaseInstance

  • 方法google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
  • 稽核記錄類型管理員活動
  • 權限
    • firebasedatabase.instances.create - ADMIN_WRITE
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance"

DeleteDatabaseInstance

  • 方法google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
  • 稽核記錄類型管理員活動
  • 權限
    • firebasedatabase.instances.delete - ADMIN_WRITE
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance"

DisableDatabaseInstance

  • 方法google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
  • 稽核記錄類型管理員活動
  • 權限
    • firebasedatabase.instances.disable - ADMIN_WRITE
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance"

GetDatabaseInstance

  • 方法google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.instances.get - ADMIN_READ
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance"

ListDatabaseInstances

  • 方法google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
  • 稽核記錄類型資料存取
  • 權限
    • firebasedatabase.instances.list - ADMIN_READ
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances"

ReenableDatabaseInstance

  • 方法google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
  • 稽核記錄類型管理員活動
  • 權限
    • firebasedatabase.instances.reenable - ADMIN_WRITE
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance"

UndeleteDatabaseInstance

  • 方法google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
  • 稽核記錄類型管理員活動
  • 權限
    • firebasedatabase.instances.undelete - ADMIN_WRITE
  • 方法是長時間執行或串流作業: 第
  • 篩選這個方法 protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"

稽核驗證資訊

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

  • 建立即時連線。即時資料庫「Connect」作業執行的作業 即時資料庫會在 已建立連線。因此 Connect 沒有驗證資訊。 AuthenticationInfo 物件包含以下預留位置 principalEmail 的預留位置: audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com

  • Google 驗證:使用標準 Google 的即時資料庫作業 驗證,例如來自 Firebase Admin SDK 或 REST 要求的流量 使用標準 OAuth 權杖進行驗證 具有包含實際憑證的 AuthenticationInfo 物件 電子郵件。

  • Firebase 驗證:使用 Firebase 驗證功能的即時資料庫作業 包含 principalEmail 值的 AuthenticationInfo 物件 audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com。 如果您透過 Cookie 導入自己的驗證解決方案 自訂 JWT。

    • 如果使用 JSON Web Token (JWT) 進行第三方驗證, thirdPartyPrincipal 欄位包含權杖的標頭和酬載。適用對象 例如透過 Firebase 驗證進行驗證的要求稽核記錄 並附上該要求的 Firebase 驗證權杖。
  • 無驗證。未使用任何資料的即時資料庫作業 驗證所含的 AuthenticationInfo 物件,其中包含 principalEmail值為 audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com 包含開放安全性規則的即時資料庫執行個體可能會核准這類要求。三 建議所有使用者妥善保護資料庫。

  • 舊版密鑰權杖。使用舊版權杖的即時資料庫作業 包含包含預留位置的 AuthenticationInfo 物件 第 principalEmail 頁,共 audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com。 如果是 Secrets 簽署的 JWT,thirdPartyPrincipal 會包含 JWT 標頭和 酬載。

稽核 Firebase 安全性規則評估作業

Cloud 稽核記錄可用來識別可能發生的要求 將受到規則變更影響

AuthorizationInfo 物件中,authorization.permission 可以是下列任一值:

  • firebasedatabase.data.get:在 resource
  • firebasedatabase.data.update:在 resource
  • firebasedatabase.data.connectConnectDisconnect 的預留位置。 無須授權,即可連線至即時資料庫執行個體。
  • firebasedatabase.data.cancel:用於 UnlistenOnDisconnectCancel。 撤銷或取消先前授權的作業不需要額外的 或授權。

將 Cloud 稽核記錄與即時資料庫分析器結果建立關聯

如要深入分析即時資料庫的效能資料,請使用 即時資料庫分析器搭配 即時資料庫稽核記錄。每項工具各有其優勢。

Cloud 稽核記錄 即時資料庫分析器
  • 稽核資料庫存取權
  • 持續擷取所有要求
  • 允許回溯查詢
  • 包含詳細的驗證權杖資訊
  • 會產生使用費用
  • 用於效能分析
  • 提供用於識別無線基地台的實用工具,進而改善效能 最佳化
  • 可測量聽眾廣播訊息的成效, 由於潛在的資料量,稽核記錄不會提供這項功能
  • 輕巧且即時,非常適合即時負載測試。稽核 記錄項目可能需要幾分鐘才會顯示。

稽核記錄內容與分析器指標對應,如下所示。

稽核記錄作業名稱
RealtimeDatabaseAuditMetadata 中的特殊值
分析器作業名稱
連線 RequestType」現為「REALTIME 並行連線
中斷連線 RequestType」現為「REALTIME 並行中斷連結
讀取 RequestType」現為「REALTIME 即時讀取
讀取 RequestType」現為「REST 休息讀取
寫入 RequestType」現為「REALTIME 即時寫入
寫入 RequestType」現為「REST 靜態寫入
更新 RequestTypeREALTIME
請查看 PreconditionType
即時更新
即時交易
更新 RequestTypeREST
請查看 PreconditionType
靜止更新
剩餘交易
ListenerListen RequestType」現為「REALTIME 傾聽
ListenerUnlisten (接聽者) RequestType」現為「REALTIME 聽者不聽
中斷連結 RequestType」現為「REALTIME 互連運算系統
中斷連線更新 RequestType」現為「REALTIME on-disconnect-update
中斷連線時取消 RequestType」現為「REALTIME on-disconnect-cancel
RunOn 中斷 RequestType」現為「REALTIME 透過中斷連結執行