การบันทึกการตรวจสอบของฐานข้อมูลเรียลไทม์ของ Firebase

เอกสารนี้จะอธิบายการบันทึกการตรวจสอบสำหรับฐานข้อมูลเรียลไทม์ของ 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 แต่ละรายการ

หากต้องการดูข้อมูลเกี่ยวกับวิธีการประเมินสิทธิ์และสิทธิ์ใดสำหรับแต่ละวิธี ดูเอกสารประกอบ 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_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"

ข้อมูลการตรวจสอบสิทธิ์การตรวจสอบ

รายการบันทึกการตรวจสอบมีข้อมูล เกี่ยวกับข้อมูลระบุตัวตนที่ทำการดำเนินการที่บันทึกไว้ วิธีระบุคำขอ Caller โปรดดูช่องต่อไปนี้ภายในออบเจ็กต์ AuditLog

  • สร้างการเชื่อมต่อแบบเรียลไทม์ การดำเนินการของ Connect Realtime Database คือ ไม่บันทึกข้อมูลการตรวจสอบสิทธิ์เนื่องจาก 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 การดำเนินการของ Realtime Database ที่ใช้การตรวจสอบสิทธิ์ Firebase ออบเจ็กต์ AuthenticationInfo ที่มีค่า principalEmail ของ audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com กระบวนการเดียวกันคือในกรณีที่คุณใช้โซลูชันการตรวจสอบสิทธิ์ของคุณเองด้วยการสร้าง JWT ที่กำหนดเอง

    • หากใช้ JSON Web Token (JWT) สำหรับการตรวจสอบสิทธิ์ของบุคคลที่สาม ช่อง thirdPartyPrincipal มีส่วนหัวและเพย์โหลดของโทเค็น สำหรับ เช่น บันทึกการตรวจสอบสำหรับคำขอที่ตรวจสอบสิทธิ์ด้วยการตรวจสอบสิทธิ์ Firebase รวมโทเค็นการตรวจสอบสิทธิ์ Firebase ของคำขอนั้นด้วย
  • ไม่มีการตรวจสอบสิทธิ์ การดำเนินการของ 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

คุณใช้บันทึก Cloud Audit เพื่อระบุคำขอที่อาจ ได้รับผลกระทบจากการเปลี่ยนแปลงกฎ

ในออบเจ็กต์ AuthorizationInfo อาจให้ authorization.permission เป็นอย่างใดอย่างหนึ่งต่อไปนี้

  • firebasedatabase.data.get: ได้รับสิทธิ์อ่านตามเส้นทางที่ระบุไว้ใน resource.
  • firebasedatabase.data.update: ให้สิทธิ์เขียนตามเส้นทางที่ระบุใน resource.
  • firebasedatabase.data.connect: ตัวยึดตำแหน่งสำหรับ Connect และ Disconnect ไม่ต้องได้รับสิทธิ์เพื่อเชื่อมต่อกับอินสแตนซ์ Realtime Database
  • firebasedatabase.data.cancel: ใช้สำหรับ Unlisten และ OnDisconnectCancel ไม่จำเป็นต้องเพิกถอนหรือยกเลิกการดำเนินการที่ได้รับอนุญาตก่อนหน้านี้ การกันวงเงิน

เชื่อมโยงบันทึก Cloud Audit กับผลลัพธ์เครื่องมือสร้างโปรไฟล์ Realtime Database

คุณสามารถวิเคราะห์ประสิทธิภาพในเชิงลึกใน Realtime Database ได้โดยใช้ เครื่องมือสร้างโปรไฟล์ Realtime Database ร่วมกับ การบันทึกการตรวจสอบของ Realtime Database เครื่องมือแต่ละอย่างมีจุดแข็งของตัวเอง

Cloud Audit Logging เครื่องมือสร้างโปรไฟล์ Realtime Database
  • การเข้าถึงฐานข้อมูลของการตรวจสอบ
  • บันทึกคำขอทั้งหมดอย่างต่อเนื่อง
  • อนุญาตการค้นหาย้อนหลัง
  • มีข้อมูลโทเค็นการตรวจสอบสิทธิ์โดยละเอียด
  • ทำให้ค่าใช้จ่ายในการใช้งาน
  • ใช้สําหรับการวิเคราะห์ประสิทธิภาพ
  • ให้เครื่องมือที่มีประโยชน์สำหรับการระบุฮอตสปอตและประสิทธิภาพ การเพิ่มประสิทธิภาพ
  • สามารถวัด ผู้ฟัง-ประกาศ ซึ่งไม่มีในบันทึกการตรวจสอบ เนื่องจากอาจมีปริมาณข้อมูล
  • น้ำหนักเบาและเป็นแบบเรียลไทม์ จึงเหมาะสำหรับการทดสอบการโหลดแบบสด การตรวจสอบ รายการบันทึกอาจใช้เวลาสักครู่จึงจะปรากฏ

เนื้อหาบันทึกการตรวจสอบจะสอดคล้องกับเมตริกเครื่องมือสร้างโปรไฟล์ดังที่แสดงด้านล่าง

ชื่อการดำเนินการบันทึกการตรวจสอบ ค่าพิเศษใน
RealtimeDatabaseAuditMetadata
ชื่อการดำเนินการของเครื่องมือสร้างโปรไฟล์
เชื่อมต่อ RequestType คือ REALTIME การเชื่อมต่อพร้อมกัน
ยกเลิกการเชื่อมต่อ RequestType คือ REALTIME ยกเลิกการเชื่อมต่อพร้อมกัน
อ่าน RequestType คือ REALTIME อ่านแบบเรียลไทม์
อ่าน RequestType คือ REST อ่านค้างไว้
เขียน RequestType คือ REALTIME เขียนแบบเรียลไทม์
เขียน RequestType คือ REST เขียนส่วนที่เหลือ
อัปเดต RequestType ถือว่า REALTIME
ลองดู PreconditionType
การอัปเดตแบบเรียลไทม์
ธุรกรรมแบบเรียลไทม์
อัปเดต RequestType ถือว่า REST
ลองดู PreconditionType
การอัปเดตส่วนที่เหลือ
ธุรกรรมส่วนที่เหลือ
Listener RequestType คือ REALTIME ผู้ฟัง
เลิกฟัง Listener RequestType คือ REALTIME ผู้ฟังเลิกฟัง
เมื่อตัดการเชื่อมต่อใส่ RequestType คือ REALTIME เมื่อยกเลิกการเชื่อมต่อ
เมื่อยกเลิกการเชื่อมต่อการอัปเดต RequestType คือ REALTIME การอัปเดตเมื่อยกเลิกการเชื่อมต่อ
เมื่อยกเลิกการเชื่อมต่อยกเลิก RequestType คือ REALTIME เมื่อยกเลิกการเชื่อมต่อ-ยกเลิก
ยกเลิกการเชื่อมต่อ RunOn RequestType คือ REALTIME เรียกใช้เมื่อยกเลิกการเชื่อมต่อ