เอกสารนี้อธิบายการบันทึกการตรวจสอบสําหรับฐานข้อมูลเรียลไทม์ของ 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 ที่อาจเป็นค่าใดค่าหนึ่งต่อไปนี้ ADMIN_READ
, ADMIN_WRITE
, DATA_READ
หรือ DATA_WRITE
เมื่อคุณเรียกใช้เมธอด Firebase Realtime Database จะสร้างบันทึกการตรวจสอบซึ่งมีหมวดหมู่ขึ้นอยู่กับtype
พร็อพเพอร์ตี้ของสิทธิ์ที่จําเป็นสําหรับดําเนินการเมธอด
เมธอดที่ต้องมีสิทธิ์ IAM ที่มีค่าพร็อพเพอร์ตี้ type
จาก DATA_READ
, DATA_WRITE
หรือ ADMIN_READ
บันทึกการตรวจสอบการเข้าถึงข้อมูล
เมธอดที่ต้องมีสิทธิ์ IAM ที่มีค่าพร็อพเพอร์ตี้ type
สร้างจาก 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
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 การดำเนินการที่ใช้ Google มาตรฐาน Realtime Database รายการ การตรวจสอบสิทธิ์ เช่น การรับส่งข้อมูลจากคำขอ 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
ไม่จำเป็นต้องเพิกถอนหรือยกเลิกการดำเนินการที่ได้รับอนุญาตก่อนหน้านี้ การกันวงเงิน
เชื่อมโยงบันทึกการตรวจสอบระบบคลาวด์กับผลการค้นหาของ Realtime Database Profiler
คุณสามารถวิเคราะห์ประสิทธิภาพโดยละเอียดได้ใน Realtime Database โดยใช้ เครื่องมือสร้างโปรไฟล์ Realtime Database ร่วมกับ การบันทึกการตรวจสอบ Realtime Database เครื่องมือแต่ละอย่างมีจุดแข็งของตัวเอง
Cloud Audit Logging | Realtime Database เครื่องมือสร้างโปรไฟล์ |
---|---|
|
|
เนื้อหาบันทึกการตรวจสอบจะสอดคล้องกับเมตริกเครื่องมือสร้างโปรไฟล์ดังที่แสดงด้านล่าง
ชื่อการดำเนินการบันทึกการตรวจสอบ | ค่าพิเศษในRealtimeDatabaseAuditMetadata |
ชื่อการดำเนินการของเครื่องมือวิเคราะห์ |
---|---|---|
เชื่อมต่อ | RequestType คือ REALTIME |
การเชื่อมต่อพร้อมกัน |
ยกเลิกการเชื่อมต่อ | RequestType คือ REALTIME |
ยกเลิกการเชื่อมต่อพร้อมกัน |
อ่าน | RequestType คือ REALTIME |
อ่านแบบเรียลไทม์ |
อ่าน | RequestType คือ REST |
พักผ่อนอ่าน |
เขียน | RequestType คือ REALTIME |
เขียนแบบเรียลไทม์ |
เขียน | RequestType คือ REST |
rest-write |
อัปเดต | RequestType ถือว่า REALTIME
เลือก PreconditionType |
realtime-update realtime-transaction |
อัปเดต | RequestType ถือว่า REST
เลือก PreconditionType |
การอัปเดตส่วนที่เหลือ ธุรกรรมส่วนที่เหลือ |
Listener | RequestType คือ REALTIME |
ผู้ฟัง |
เลิกฟัง Listener | RequestType คือ REALTIME |
listener-unlisten |
เมื่อตัดการเชื่อมต่อใส่ | RequestType คือ REALTIME |
on-disconnect-put |
OnDisconnectUpdate | RequestType คือ REALTIME |
on-disconnect-update |
เมื่อยกเลิกการเชื่อมต่อยกเลิก | RequestType คือ REALTIME |
on-disconnect-cancel |
ยกเลิกการเชื่อมต่อ RunOn | RequestType คือ REALTIME |
เรียกใช้เมื่อยกเลิกการเชื่อมต่อ |