本文件說明 Firebase 即時資料庫的稽核記錄,包括哪些方法 產生稽核記錄、每個方法產生的稽核記錄詳細資料,以及 哪些方法不會產生稽核記錄 (如果有的話)。Google Cloud 會產生 會記錄您帳戶中管理和存取活動的稽核記錄 專屬的 Google Cloud 資源若需更多資訊,請參閲 Cloud 稽核記錄總覽。
附註
如要進一步瞭解 protoPayload.metadata
中 DATA_READ
和 DATA_WRITE
作業的欄位資訊,請參閱參考說明文件。
服務名稱
Firebase 即時資料庫稽核記錄使用的服務名稱為 firebasedatabase.googleapis.com
。
按權限類型區分的方法
會檢查 DATA_READ
、DATA_WRITE
和
ADMIN_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 驗證權杖。
- 如果使用 JSON Web Token (JWT) 進行第三方驗證,
無驗證。未使用任何資料的即時資料庫作業 驗證所含的
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.connect
:Connect
和Disconnect
的預留位置。 無須授權,即可連線至即時資料庫執行個體。firebasedatabase.data.cancel
:用於Unlisten
和OnDisconnectCancel
。 撤銷或取消先前授權的作業不需要額外的 或授權。
將 Cloud 稽核記錄與即時資料庫分析器結果建立關聯
如要深入分析即時資料庫的效能資料,請使用 即時資料庫分析器搭配 即時資料庫稽核記錄。每項工具各有其優勢。
Cloud 稽核記錄 | 即時資料庫分析器 |
---|---|
|
|
稽核記錄內容與分析器指標對應,如下所示。
稽核記錄作業名稱 | RealtimeDatabaseAuditMetadata 中的特殊值 |
分析器作業名稱 |
---|---|---|
連線 | 「RequestType 」現為「REALTIME 」 |
並行連線 |
中斷連線 | 「RequestType 」現為「REALTIME 」 |
並行中斷連結 |
讀取 | 「RequestType 」現為「REALTIME 」 |
即時讀取 |
讀取 | 「RequestType 」現為「REST 」 |
休息讀取 |
寫入 | 「RequestType 」現為「REALTIME 」 |
即時寫入 |
寫入 | 「RequestType 」現為「REST 」 |
靜態寫入 |
更新 | RequestType 為 REALTIME 。
請查看 PreconditionType 。 |
即時更新 即時交易 |
更新 | RequestType 為 REST 。
請查看 PreconditionType 。 |
靜止更新 剩餘交易 |
ListenerListen | 「RequestType 」現為「REALTIME 」 |
傾聽 |
ListenerUnlisten (接聽者) | 「RequestType 」現為「REALTIME 」 |
聽者不聽 |
中斷連結 | 「RequestType 」現為「REALTIME 」 |
互連運算系統 |
中斷連線更新 | 「RequestType 」現為「REALTIME 」 |
on-disconnect-update |
中斷連線時取消 | 「RequestType 」現為「REALTIME 」 |
on-disconnect-cancel |
RunOn 中斷 | 「RequestType 」現為「REALTIME 」 |
透過中斷連結執行 |