เอกสารนี้อธิบายการบันทึกการตรวจสอบสำหรับฐานข้อมูลเรียลไทม์ของ Firebase Google Cloud บริการ สร้างบันทึกการตรวจสอบที่บันทึกกิจกรรมการดูแลระบบและการเข้าถึงภายในทรัพยากร Google Cloud ดูข้อมูลเพิ่มเติมเกี่ยวกับบันทึกการตรวจสอบ Cloud ได้ที่หัวข้อต่อไปนี้
- ประเภทของบันทึกการตรวจสอบ
 - โครงสร้างรายการบันทึกการตรวจสอบ
 - การจัดเก็บและกำหนดเส้นทางบันทึกการตรวจสอบ
 - สรุปราคาของ Cloud Logging
 - เปิดใช้บันทึกการตรวจสอบการเข้าถึงข้อมูล
 
หมายเหตุ
ดูข้อมูลเพิ่มเติมเกี่ยวกับฟิลด์ใน protoPayload.metadata สำหรับการดำเนินการ DATA_READ และ DATA_WRITE ได้ในเอกสารประกอบอ้างอิง
ชื่อบริการ
บันทึกการตรวจสอบฐานข้อมูลเรียลไทม์ของ Firebase ใช้ชื่อบริการ firebasedatabase.googleapis.com
กรองสำหรับบริการนี้ 
protoPayload.serviceName="firebasedatabase.googleapis.com"
วิธีการตามประเภทสิทธิ์
 สิทธิ์ IAM แต่ละรายการมีพร็อพเพอร์ตี้ type ซึ่งมีค่าเป็น Enum
ที่อาจเป็นค่าใดค่าหนึ่งใน 4 ค่า ได้แก่ ADMIN_READ, ADMIN_WRITE, DATA_READ หรือ DATA_WRITE เมื่อคุณเรียกใช้เมธอด
ฐานข้อมูลเรียลไทม์ของ Firebase จะสร้างบันทึกการตรวจสอบซึ่งมีหมวดหมู่ขึ้นอยู่กับ
type พร็อพเพอร์ตี้ของสิทธิ์ที่จำเป็นในการเรียกใช้เมธอด
เมธอดที่ต้องใช้สิทธิ์ IAM ที่มีค่าพร็อพเพอร์ตี้ type
เป็น DATA_READ, DATA_WRITE หรือ ADMIN_READ จะสร้างบันทึกการตรวจสอบการเข้าถึงข้อมูล
เมธอดที่ต้องใช้สิทธิ์ IAM ที่มีค่าพร็อพเพอร์ตี้ type
เป็น ADMIN_WRITEgenerate
บันทึกการตรวจสอบกิจกรรมของผู้ดูแลระบบ
| ประเภทสิทธิ์ | เมธอด | 
|---|---|
ADMIN_READ | 
    google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances | 
  
ADMIN_WRITE | 
    google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance | 
  
DATA_READ | 
    google.firebase.database.v1.RealtimeDatabase.Connectgoogle.firebase.database.v1.RealtimeDatabase.Disconnectgoogle.firebase.database.v1.RealtimeDatabase.Listengoogle.firebase.database.v1.RealtimeDatabase.OnDisconnectCancelgoogle.firebase.database.v1.RealtimeDatabase.Readgoogle.firebase.database.v1.RealtimeDatabase.Unlisten | 
  
DATA_WRITE | 
    google.firebase.database.v1.RealtimeDatabase.OnDisconnectPutgoogle.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdategoogle.firebase.database.v1.RealtimeDatabase.RunOnDisconnectgoogle.firebase.database.v1.RealtimeDatabase.Updategoogle.firebase.database.v1.RealtimeDatabase.Write | 
  
บันทึกการตรวจสอบอินเทอร์เฟซ API
ดูข้อมูลเกี่ยวกับวิธีและสิทธิ์ที่ได้รับการประเมินสำหรับแต่ละเมธอดได้ที่ เอกสารประกอบของ Cloud Identity and Access Management สำหรับฐานข้อมูลเรียลไทม์ของ Firebase
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_WRITEfirebasedatabase.data.update - DATA_WRITE
 - เมธอดเป็นการดำเนินการที่ใช้เวลานานหรือการดำเนินการแบบสตรีม
ไม่
 - ตัวกรองสำหรับเมธอดนี้: 
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Update" 
Write
- เมธอด: 
google.firebase.database.v1.RealtimeDatabase.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
สร้างการเชื่อมต่อแบบเรียลไทม์ Realtime Database การดำเนินการ
Connectจะไม่บันทึกข้อมูลการตรวจสอบสิทธิ์เนื่องจาก Realtime Database จะตรวจสอบสิทธิ์หลังจากสร้างการเชื่อมต่อแล้ว ดังนั้นConnectจึงไม่มีข้อมูลการตรวจสอบสิทธิ์ ออบเจ็กต์AuthenticationInfoมีตัวยึดตำแหน่งprincipalEmailของaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.comการตรวจสอบสิทธิ์ของ Google Realtime Database การดำเนินการที่ใช้การตรวจสอบสิทธิ์มาตรฐานของ Google เช่น การเข้าชมจาก Firebase Admin SDK หรือคำขอ REST ที่ตรวจสอบสิทธิ์ด้วยโทเค็น OAuth มาตรฐาน มีออบเจ็กต์
AuthenticationInfoที่มีข้อมูลเข้าสู่ระบบจริง อีเมลFirebase Authentication การดำเนินการ Realtime Database ที่ใช้ Firebase Authentication มี ออบเจ็กต์
AuthenticationInfoที่มีค่าprincipalEmailเป็นaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.comเช่นเดียวกันหากคุณใช้โซลูชันการตรวจสอบสิทธิ์ของคุณเองโดยการสร้าง JWT ที่กำหนดเอง- หากใช้ JSON Web Token (JWT) สำหรับการตรวจสอบสิทธิ์ของบุคคลที่สาม ฟิลด์ 
thirdPartyPrincipalจะมีส่วนหัวและเพย์โหลดของโทเค็น ตัวอย่างเช่น บันทึกการตรวจสอบสำหรับคำขอที่ตรวจสอบสิทธิ์ด้วย Firebase Authentication จะมีโทเค็น Firebase Authentication ของคำขอนั้น 
- หากใช้ JSON Web Token (JWT) สำหรับการตรวจสอบสิทธิ์ของบุคคลที่สาม ฟิลด์ 
 ไม่มีการตรวจสอบสิทธิ์ Realtime Database ที่ไม่ได้ใช้การตรวจสอบสิทธิ์ใดๆ จะมีออบเจ็กต์
AuthenticationInfoที่มีค่าprincipalEmailเป็นaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.comอินสแตนซ์ Realtime Database ที่มีกฎความปลอดภัยแบบเปิดอาจให้สิทธิ์คำขอดังกล่าว เราขอแนะนำให้ผู้ใช้ทุกคนรักษาความปลอดภัยของฐานข้อมูลอย่างเหมาะสมโทเค็นลับเวอร์ชันเดิม การดำเนินการ Realtime Database โดยใช้โทเค็นเดิม มีออบเจ็กต์
AuthenticationInfoที่มีตัวยึดตำแหน่งprincipalEmailของaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.comสำหรับ JWT ที่ลงชื่อด้วยลับthirdPartyPrincipalจะมีส่วนหัวและเพย์โหลดของ JWT
การประเมินการตรวจสอบ Firebase Security Rules
คุณใช้บันทึกการตรวจสอบของ Cloud เพื่อระบุคำขอที่อาจได้รับผลกระทบจากการเปลี่ยนแปลง Rules ได้
ในออบเจ็กต์ AuthorizationInfo ค่า authorization.permission อาจเป็นค่าใดค่าหนึ่งต่อไปนี้
firebasedatabase.data.get: สิทธิ์ในการอ่านที่ได้รับในเส้นทางที่ระบุในresourcefirebasedatabase.data.update: สิทธิ์เขียนได้รับที่เส้นทางที่ระบุในresourcefirebasedatabase.data.connect: ตัวยึดตำแหน่งสำหรับConnectและDisconnectไม่จำเป็นต้องมีการให้สิทธิ์เพื่อเชื่อมต่อกับอินสแตนซ์ Realtime Databasefirebasedatabase.data.cancel: ใช้สำหรับUnlistenและOnDisconnectCancelการเพิกถอนหรือยกเลิกการดำเนินการที่ได้รับอนุญาตก่อนหน้านี้ไม่จำเป็นต้องมีการให้สิทธิ์เพิ่มเติม
เชื่อมโยงบันทึกการตรวจสอบ Cloud กับRealtime Databaseผลลัพธ์ของโปรไฟล์เลอร์
คุณสามารถวิเคราะห์ประสิทธิภาพเชิงลึกใน Realtime Database ได้โดยใช้ Realtime Database โปรไฟล์เลอร์ร่วมกับ Realtime Database การบันทึกการตรวจสอบ เครื่องมือแต่ละอย่างมีจุดแข็งของตัวเอง
| Cloud Audit Logging | Realtime Database โปรไฟล์ | 
|---|---|
  
  | 
  
  | 
เนื้อหาของบันทึกการตรวจสอบสอดคล้องกับเมตริกของโปรไฟล์เลอร์ตามที่แสดงด้านล่าง
| ชื่อการดำเนินการของ Cloud Audit Logging | ค่าพิเศษในRealtimeDatabaseAuditMetadata | 
      ชื่อการดำเนินการของ Profiler | 
|---|---|---|
| เชื่อมต่อ | RequestType คือ REALTIME | 
      concurrent-connect | 
| ยกเลิกการเชื่อมต่อ | RequestType คือ REALTIME | 
      concurrent-disconnect | 
| อ่าน | RequestType คือ REALTIME | 
      realtime-read | 
| อ่าน | RequestType คือ REST | 
      rest-read | 
| เขียน | RequestType คือ REALTIME | 
      realtime-write | 
| เขียน | RequestType คือ REST | 
      พักผ่อนและเขียน | 
| อัปเดต | RequestType REALTIME
      ตรวจสอบ PreconditionType | 
      realtime-update realtime-transaction  | 
    
| อัปเดต | RequestType REST
      ตรวจสอบ PreconditionType | 
      rest-update rest-transaction  | 
    
| ListenerListen | RequestType คือ REALTIME | 
      listener-listen | 
| ListenerUnlisten | RequestType คือ REALTIME | 
      listener-unlisten | 
| OnDisconnectPut | RequestType คือ REALTIME | 
      on-disconnect-put | 
| OnDisconnectUpdate | RequestType คือ REALTIME | 
      on-disconnect-update | 
| OnDisconnectCancel | RequestType คือ REALTIME | 
      on-disconnect-cancel | 
| RunOnDisconnect | RequestType คือ REALTIME | 
      ทำงานต่อเมื่อยกเลิกการเชื่อมต่อ |