Ghi nhật ký kiểm tra Cơ sở dữ liệu theo thời gian thực của Firebase

Tài liệu này mô tả việc ghi nhật ký kiểm tra cho Cơ sở dữ liệu theo thời gian thực của Firebase, bao gồm các phương pháp tạo nhật ký kiểm tra, thông tin chi tiết về nhật ký kiểm tra mà mỗi phương pháp tạo ra và phương pháp nào không tạo nhật ký kiểm tra, nếu có. Google Cloud tạo nhật ký kiểm tra ghi lại các hoạt động quản trị và truy cập trong Tài nguyên của Google Cloud. Để biết thêm thông tin, hãy xem Tổng quan về Nhật ký kiểm tra của Cloud.

Lưu ý

Bạn có thể xem thêm thông tin về các trường trong protoPayload.metadata cho các thao tác DATA_READDATA_WRITEtrong tài liệu tham khảo.

Tên dịch vụ

Nhật ký kiểm tra Cơ sở dữ liệu theo thời gian thực của Firebase sử dụng tên dịch vụ là firebasedatabase.googleapis.com.

Các phương thức theo loại quyền

Các phương thức kiểm tra DATA_READ, DATA_WRITE và Các quyền của ADMIN_READ tạo ra nhật ký được phân loại là Nhật ký kiểm tra Quyền truy cập dữ liệu. Các phương thức kiểm tra quyền của ADMIN_WRITE sẽ tạo nhật ký được phân loại là Nhật ký kiểm tra Hoạt động của quản trị viên.

Loại quyền Phương thức
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

Nhật ký kiểm tra cho từng giao diện API

Để biết thông tin về cách thức và những quyền được đánh giá, đối với từng phương pháp, xem tài liệu về Quản lý danh tính và quyền truy cập của Cloud đối với Cơ sở dữ liệu theo thời gian thực của Firebase.

google.firebase.database.v1.RealtimeDatabase

Phần sau đây trình bày thông tin chi tiết về nhật ký kiểm tra liên quan đến thuộc về google.firebase.database.v1.RealtimeDatabase.

Connect

  • Phương thức: google.firebase.database.v1.RealtimeDatabase.Connect
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.data.connect - DATA_READ
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Connect"

Disconnect

  • Phương thức: google.firebase.database.v1.RealtimeDatabase.Disconnect
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.data.connect - DATA_READ
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Disconnect"

Listen

  • Phương thức: google.firebase.database.v1.RealtimeDatabase.Listen
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.data.get - DATA_READ
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Listen"

OnDisconnectCancel

  • Phương thức: google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.data.cancel - DATA_READ
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"

OnDisconnectPut

  • Phương thức: google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.data.update - DATA_WRITE
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"

OnDisconnectUpdate

  • Phương thức: google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.data.update - DATA_WRITE
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate"

Read

  • Phương thức: google.firebase.database.v1.RealtimeDatabase.Read
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.data.get - DATA_READ
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Read"

RunOnDisconnect

  • Phương thức: google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.data.update - DATA_WRITE
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect"

Unlisten

  • Phương thức: google.firebase.database.v1.RealtimeDatabase.Unlisten
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.data.cancel - DATA_READ
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"

Update

  • Phương thức: google.firebase.database.v1.RealtimeDatabase.Update
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.data.get - DATA_READ
    • firebasedatabase.data.get - DATA_WRITE
    • firebasedatabase.data.update - DATA_WRITE
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Update"

Write

  • Phương thức: google.firebase.database.v1.RealtimeDatabase.Write
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.data.get - DATA_READ
    • firebasedatabase.data.get - DATA_WRITE
    • firebasedatabase.data.update - DATA_WRITE
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Write"

google.firebase.database.v1beta.RealtimeDatabaseService

Phần sau đây trình bày thông tin chi tiết về nhật ký kiểm tra liên quan đến thuộc về google.firebase.database.v1beta.RealtimeDatabaseService.

CreateDatabaseInstance

  • Phương thức: google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
  • Loại nhật ký kiểm tra: Hoạt động của quản trị viên
  • Quyền:
    • firebasedatabase.instances.create - ADMIN_WRITE
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance"

DeleteDatabaseInstance

  • Phương thức: google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
  • Loại nhật ký kiểm tra: Hoạt động của quản trị viên
  • Quyền:
    • firebasedatabase.instances.delete - ADMIN_WRITE
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance"

DisableDatabaseInstance

  • Phương thức: google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
  • Loại nhật ký kiểm tra: Hoạt động của quản trị viên
  • Quyền:
    • firebasedatabase.instances.disable - ADMIN_WRITE
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance"

GetDatabaseInstance

  • Phương thức: google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.instances.get - ADMIN_READ
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance"

ListDatabaseInstances

  • Phương thức: google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
  • Loại nhật ký kiểm tra: Truy cập dữ liệu
  • Quyền:
    • firebasedatabase.instances.list - ADMIN_READ
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances"

ReenableDatabaseInstance

  • Phương thức: google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
  • Loại nhật ký kiểm tra: Hoạt động của quản trị viên
  • Quyền:
    • firebasedatabase.instances.reenable - ADMIN_WRITE
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance"

UndeleteDatabaseInstance

  • Phương thức: google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
  • Loại nhật ký kiểm tra: Hoạt động của quản trị viên
  • Quyền:
    • firebasedatabase.instances.undelete - ADMIN_WRITE
  • Phương thức là một thao tác truyền trực tuyến hoặc diễn ra trong thời gian dài: Số
  • Bộ lọc cho phương pháp này: protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"

Kiểm tra thông tin xác thực

Các mục nhập nhật ký kiểm tra bao gồm thông tin về danh tính đã thực hiện thao tác đã ghi nhật ký. Để xác định một yêu cầu phương thức gọi, hãy xem các trường sau trong đối tượng CheckLog:

  • Thiết lập kết nối theo thời gian thực. Hoạt động Connect của Cơ sở dữ liệu theo thời gian thực không ghi nhật ký dữ liệu xác thực vì Cơ sở dữ liệu thời gian thực xác thực sau kết nối đã được thiết lập. Do đó, Connect không có thông tin xác thực. Đối tượng AuthenticationInfo chứa phần giữ chỗ principalEmailaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com.

  • Xác thực Google. Hoạt động trong Cơ sở dữ liệu theo thời gian thực sử dụng phương thức chuẩn Xác thực, chẳng hạn như lưu lượng truy cập từ các yêu cầu REST hoặc SDK quản trị của Firebase xác thực bằng mã thông báo OAuth tiêu chuẩn, có đối tượng AuthenticationInfo chứa thông tin xác thực thực tế .

  • Xác thực Firebase. Hoạt động Cơ sở dữ liệu theo thời gian thực sử dụng Xác thực Firebase có đối tượng AuthenticationInfo chứa giá trị principalEmailaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com. Điều này cũng đúng nếu bạn triển khai giải pháp xác thực của riêng mình bằng cách đúc JWT tuỳ chỉnh.

    • Nếu bạn sử dụng Mã thông báo web JSON (JWT) để xác thực bên thứ ba, Trường thirdPartyPrincipal bao gồm tiêu đề và tải trọng của mã thông báo. Để ví dụ: nhật ký kiểm tra cho các yêu cầu được xác thực bằng tính năng Xác thực Firebase bao gồm mã thông báo Xác thực Firebase của yêu cầu đó.
  • Không xác thực. Hoạt động Cơ sở dữ liệu theo thời gian thực không sử dụng xác thực có một đối tượng AuthenticationInfo chứa Giá trị principalEmail trong số audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com Phiên bản Cơ sở dữ liệu theo thời gian thực có các quy tắc bảo mật mở có thể chấp nhận các yêu cầu như vậy. T4 nên bảo mật cơ sở dữ liệu của mình đúng cách.

  • Mã thông báo của khoá bí mật cũ. Hoạt động của Cơ sở dữ liệu theo thời gian thực bằng mã thông báo cũ có một đối tượng AuthenticationInfo chứa phần giữ chỗ principalEmail trong số audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com. Đối với JWT được ký bí mật, thirdPartyPrincipal chứa các tiêu đề JWT và tải trọng.

Kiểm tra kết quả đánh giá Quy tắc bảo mật của Firebase

Nhật ký kiểm tra của Cloud kiểm tra có thể được dùng để xác định những yêu cầu có khả năng sẽ xuất hiện bị ảnh hưởng bởi các thay đổi về Quy tắc.

Trong đối tượng PermissionsInfo, authorization.permission có thể là một trong các trạng thái sau:

  • firebasedatabase.data.get: Quyền đọc được cấp tại đường dẫn được chỉ định trong resource.
  • firebasedatabase.data.update: Quyền ghi được cấp tại đường dẫn được chỉ định trong resource.
  • firebasedatabase.data.connect: Phần giữ chỗ cho ConnectDisconnect. Không cần cho phép để kết nối với phiên bản Cơ sở dữ liệu theo thời gian thực.
  • firebasedatabase.data.cancel: Dùng cho UnlistenOnDisconnectCancel. Bạn không cần phải bổ sung thêm để thu hồi hoặc huỷ một hoạt động đã được uỷ quyền trước đó uỷ quyền.

Tương quan nhật ký kiểm tra của Cloud với kết quả của trình phân tích cơ sở dữ liệu theo thời gian thực

Bạn có thể phân tích hiệu suất chuyên sâu trong Cơ sở dữ liệu theo thời gian thực bằng cách sử dụng Trình phân tích cơ sở dữ liệu theo thời gian thực kết hợp với Ghi nhật ký kiểm tra Cơ sở dữ liệu theo thời gian thực. Mỗi công cụ đều có những điểm mạnh riêng.

Cloud Audit Logging Trình phân tích cơ sở dữ liệu theo thời gian thực
  • Kiểm tra quyền truy cập vào cơ sở dữ liệu
  • Liên tục ghi lại mọi yêu cầu
  • Cho phép truy vấn hồi tố
  • Chứa thông tin chi tiết về mã thông báo xác thực
  • Tính phí sử dụng
  • Dùng để phân tích hiệu suất
  • Cung cấp công cụ hữu ích để nhận dạng điểm phát sóng và nhờ đó tăng hiệu suất tối ưu hoá
  • Có thể đo lường listener-broadcast, không có trong Nhật ký kiểm tra do lượng dữ liệu tiềm năng
  • Nhẹ và theo thời gian thực, rất phù hợp cho quy trình kiểm thử tải trực tiếp. Kiểm toán có thể mất vài phút để xuất hiện.

Nội dung nhật ký kiểm tra tương ứng với các chỉ số của trình phân tích tài nguyên như minh hoạ dưới đây.

Tên hoạt động ghi nhật ký kiểm tra Giá trị đặc biệt trong
RealtimeDatabaseAuditMetadata
Tên hoạt động của trình phân tích tài nguyên
Kết nối RequestTypeREALTIME kết nối đồng thời
Ngắt kết nối RequestTypeREALTIME ngắt kết nối đồng thời
Đã đọc RequestTypeREALTIME đọc theo thời gian thực
Đã đọc RequestTypeREST đọc khi nghỉ ngơi
Viết RequestTypeREALTIME ghi theo thời gian thực
Viết RequestTypeREST ghi-ghi-thời gian
Cập nhật RequestTypeREALTIME.
Hãy xem PreconditionType.
thông tin cập nhật theo thời gian thực
giao dịch theo thời gian thực
Cập nhật RequestTypeREST.
Hãy xem PreconditionType.
nghỉ-cập nhật
thời gian nghỉ-giao dịch
Trình nghe RequestTypeREALTIME thính- nghe
ListenerUnlisten (Không nghe) RequestTypeREALTIME không nghe-nghe
Bật tính năng ngắt kết nối RequestTypeREALTIME khi-ngắt kết nối-đặt
Khi ngắt kết nối cập nhật RequestTypeREALTIME cập nhật khi ngắt kết nối
Khi huỷ kết nối RequestTypeREALTIME khi ngắt kết nối-huỷ
RunOnNgắt kết nối RequestTypeREALTIME ngắt kết nối khi chạy