เอกสารนี้อธิบายการบันทึกการตรวจสอบสำหรับฐานข้อมูลเรียลไทม์ของ 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_WRITE
generate
บันทึกการตรวจสอบกิจกรรมของผู้ดูแลระบบ
ประเภทสิทธิ์ | เมธอด |
---|---|
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
ดูข้อมูลเกี่ยวกับวิธีและสิทธิ์ที่ได้รับการประเมินสำหรับแต่ละเมธอดได้ที่ เอกสารประกอบของ 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_WRITE
firebasedatabase.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
: สิทธิ์ในการอ่านที่ได้รับในเส้นทางที่ระบุในresource
firebasedatabase.data.update
: สิทธิ์เขียนได้รับที่เส้นทางที่ระบุในresource
firebasedatabase.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 |
ทำงานต่อเมื่อยกเลิกการเชื่อมต่อ |