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

Trang này mô tả nhật ký kiểm tra do Firebase tạo như một phần của Nhật ký kiểm tra đám mây .

Tổng quan

Dịch vụ Firebase ghi nhật ký kiểm tra để giúp bạn trả lời các câu hỏi "Ai đã làm gì, ở đâu và khi nào?". Đây là Nhật ký kiểm tra đám mây, được cung cấp như một phần của dự án Google Cloud được kết nối với dự án Firebase của bạn .

Mỗi dự án Firebase của bạn chỉ chứa nhật ký kiểm tra cho các tài nguyên trực tiếp trong dự án.

Để biết tổng quan chung về Nhật ký kiểm tra đám mây, hãy xem Tổng quan về Nhật ký kiểm tra đám mây . Để hiểu sâu hơn về định dạng nhật ký kiểm tra, hãy xem Tìm hiểu nhật ký kiểm tra .

Nhật ký kiểm tra có sẵn

Các loại nhật ký kiểm tra sau đây có sẵn cho Cơ sở dữ liệu thời gian thực Firebase:

  • Nhật ký kiểm tra hoạt động của quản trị viên

    Bao gồm các hoạt động "viết quản trị" ghi siêu dữ liệu hoặc thông tin cấu hình.

    Bạn không thể tắt nhật ký kiểm tra Hoạt động của quản trị viên.

  • Nhật ký kiểm tra Truy cập dữ liệu

    Bao gồm các thao tác "admin read" đọc siêu dữ liệu hoặc thông tin cấu hình. Cũng bao gồm các hoạt động "đọc dữ liệu" và "ghi dữ liệu" đọc hoặc ghi dữ liệu do người dùng cung cấp.

    Để nhận nhật ký kiểm tra Truy cập dữ liệu, bạn phải bật chúng một cách rõ ràng.

Để biết mô tả đầy đủ hơn về các loại nhật ký kiểm tra, hãy xem Các loại nhật ký kiểm tra .

Hoạt động được kiểm toán

Phần sau đây tóm tắt hoạt động API nào tương ứng với từng loại nhật ký kiểm tra trong Cơ sở dữ liệu thời gian thực của Firebase:

Danh mục nhật ký kiểm toán Hoạt động cơ sở dữ liệu thời gian thực Firebase
Nhật ký kiểm tra hoạt động của quản trị viên (ADMIN_WRITE)
  • Tạo cơ sở dữ liệuInstance
  • XóaDatabaseInstance
  • Vô hiệu hóaDatabaseInstance
  • ReenableDatabaseInstance
Nhật ký kiểm tra quyền truy cập dữ liệu (ADMIN_READ)
  • GetDatabaseInstance
  • ListDatabaseInstances
Nhật ký kiểm tra truy cập dữ liệu (DATA_READ hoặc DATA_WRITE)
  • Liên kết
  • Ngắt kết nối
  • RunOnNgắt kết nối
  • Cập nhật (có Điều kiện tiên quyết) (đối với nghiệp vụ giao dịch). Xem PreconditionWriteMetadata liên kết.
Nhật ký kiểm tra truy cập dữ liệu (DATA_READ)
Nhật ký kiểm tra truy cập dữ liệu (DATA_WRITE)
  • Viết
  • Cập nhật. Xem liên kết WriteMetadata .
  • BậtNgắt kết nốiĐặt
  • OnDisconnectUpdate. Xem liên kết WriteMetadata .
  • BậtNgắt kết nốiHủy

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

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

  • Thiết lập kết nối thời gian thực. Hoạt động Connect cơ sở dữ liệu 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 khi 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 một trình giữ chỗ principalEmail của audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com .

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

  • Xác thực Firebase. Các hoạt động Cơ sở dữ liệu thời gian thực sử dụng Xác thực Firebase có một đối tượng AuthenticationInfo chứa giá trị email principalEmail của audit-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 các JWT tùy chỉnh.

    • Nếu Mã thông báo web JSON (JWT) được sử dụng để xác thực bên thứ ba, thì 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 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 có chứng thực. Các hoạt động Cơ sở dữ liệu thời gian thực không sử dụng bất kỳ xác thực nào có đối tượng AuthenticationInfo chứa giá trị principalEmail của audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com bản Cơ sở dữ liệu thời gian thực với các quy tắc bảo mật mở có thể chấp nhận các yêu cầu đó . Chúng tôi khuyên tất cả người dùng nên bảo mật cơ sở dữ liệu của họ đúng cách.

  • Mã thông báo bí mật kế thừa. Các hoạt động của Cơ sở dữ liệu thời gian thực sử dụng mã thông báo kế thừa có một đối tượng AuthenticationInfo chứa một phần giữ chỗ principalEmail trưởngEmail của 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 đề và tải trọng JWT.

Kiểm tra đánh giá Quy tắc bảo mật Firebase

Nhật ký kiểm tra đám mây có thể được sử dụng để xác định các yêu cầu có khả năng bị ảnh hưởng bởi các thay đổi của Quy tắc.

Trong đối tượng AuthorizationInfo , authorization.permission có thể là một trong:

  • firebasedatabase.data.get : Đọc quyền truy cập được cấp tại đường dẫn được chỉ định trong resource .
  • firebasedatabase.data.update : Ghi quyền truy cập được cấp tại đường dẫn được chỉ định trong resource .
  • firebasedatabase.data.connect : Trình giữ chỗ cho ConnectDisconnect . Không cần ủy quyền để kết nối với phiên bản Cơ sở dữ liệu thời gian thực.
  • firebasedatabase.data.cancel : Được sử dụng cho UnlistenOnDisconnectCancel . Thu hồi hoặc hủy bỏ một hoạt động được ủy quyền trước đó không yêu cầu ủy quyền bổ sung.

Tương quan nhật ký kiểm tra đám mây với kết quả hồ sơ cơ sở dữ liệu thời gian thực

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

Ghi nhật ký kiểm tra đám mây Trình lược tả cơ sở dữ liệu thời gian thực
  • Kiểm tra quyền truy cập vào cơ sở dữ liệu
  • Liên tục nắm bắt tất cả các yêu cầu
  • Cho phép truy vấn hồi cứu
  • Chứa thông tin mã thông báo xác thực chi tiết
  • Phát sinh chi phí sử dụng
  • Được sử 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à do đó tối ưu hóa hiệu suất
  • Có thể đo lường người nghe-phát sóng , không có sẵn trong Nhật ký kiểm tra do khối lượng dữ liệu tiềm ẩn
  • Trọng lượng nhẹ và thời gian thực, làm cho nó phù hợp để thử nghiệm tải trực tiếp. Các mục nhật ký kiểm tra 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 số liệu hồ sơ như được hiển thị bên dưới.

Tên hoạt động ghi nhật ký kiểm tra Giá trị đặc biệt trong
RealtimeDatabaseAuditMetadata
Tên hoạt động hồ sơ
Liên kết Loại yêu cầu là THỜI RequestType REALTIME kết nối đồng thời
Ngắt kết nối Loại yêu cầu là THỜI RequestType REALTIME ngắt kết nối đồng thời
Đọc Loại yêu cầu là THỜI RequestType REALTIME đọc thời gian thực
Đọc RequestTypeREST đọc phần còn lại
Viết Loại yêu cầu là THỜI RequestType REALTIME viết theo thời gian thực
Viết RequestTypeREST phần còn lại viết
Cập nhật RequestTypeREALTIME .
Kiểm tra PreconditionType .
cập nhật thời gian thực
giao dịch thời gian thực
Cập nhật RequestTypeREST .
Kiểm tra PreconditionType .
cập nhật phần còn lại
giao dịch còn lại
Người NgheNghe Loại yêu cầu là THỜI RequestType REALTIME nghe-nghe
Người ngheKhông nghe Loại yêu cầu là THỜI RequestType REALTIME nghe-không nghe
BậtNgắt kết nốiĐặt Loại yêu cầu là THỜI RequestType REALTIME khi ngắt kết nối
OnDisconnectUpdate Loại yêu cầu là THỜI RequestType REALTIME khi ngắt kết nối-cập nhật
BậtNgắt kết nốiHủy Loại yêu cầu là THỜI RequestType REALTIME khi ngắt kết nối-hủy
RunOnNgắt kết nối Loại yêu cầu là THỜI RequestType REALTIME chạy khi ngắt kết nối

Định dạng nhật ký kiểm tra

Các mục nhật ký kiểm tra bao gồm các đối tượng sau:

  • Bản thân mục nhập nhật ký, là một đối tượng thuộc loại LogEntry . Các lĩnh vực hữu ích bao gồm:

    • Tên logName chứa ID tài nguyên và loại nhật ký kiểm tra.
    • Tài resource chứa mục tiêu của hoạt động được kiểm toán.
    • timestamp chứa thời gian của hoạt động được kiểm toán.
    • protoPayload chứa thông tin được kiểm tra.
  • Dữ liệu ghi nhật ký kiểm tra, là một đối tượng protoPayload AuditLog mục nhập nhật ký.

  • Thông tin kiểm tra dành riêng cho dịch vụ tùy chọn, là đối tượng dành riêng cho dịch vụ. Đối với các tích hợp cũ hơn, đối tượng này được giữ trong trường serviceData của đối tượng AuditLog ; tích hợp mới hơn sử dụng trường metadata .

Đối với các trường khác trong các đối tượng này và cách diễn giải chúng, hãy xem lại Hiểu nhật ký kiểm tra .

Thông tin bổ sung về các trường trong protoPayload.metadata cho hoạt động DATA_READDATA_WRITE có sẵn trong tài liệu tham khảo .

Tên nhật ký

Tên tài nguyên Nhật ký kiểm tra đám mây cho biết dự án Firebase hoặc thực thể Google Cloud khác sở hữu nhật ký kiểm tra và liệu nhật ký có chứa Hoạt động quản trị viên, Quyền truy cập dữ liệu, Chính sách bị từ chối hay dữ liệu ghi nhật ký kiểm tra Sự kiện hệ thống hay không. Ví dụ: phần sau hiển thị tên nhật ký cho nhật ký kiểm tra Hoạt động quản trị cấp dự án và nhật ký kiểm tra Truy cập dữ liệu của tổ chức. Các biến biểu thị số nhận dạng tổ chức và dự án Firebase.

projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

Tên dịch vụ

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

Để biết danh sách đầy đủ tất cả các tên dịch vụ Cloud Logging API và loại tài nguyên được giám sát tương ứng của chúng, hãy xem Ánh xạ dịch vụ tới tài nguyên .

loại tài nguyên

Nhật ký kiểm tra Cơ sở dữ liệu thời gian thực Firebase sử dụng loại tài nguyên audited_resource cho tất cả nhật ký kiểm tra.

Để biết danh sách tất cả các loại tài nguyên được giám sát của Cloud Logging và thông tin mô tả, hãy xem Các loại tài nguyên được giám sát .

Bật ghi nhật ký kiểm tra

Nhật ký kiểm tra hoạt động của quản trị viên luôn được bật; bạn không thể vô hiệu hóa chúng.

Nhật ký kiểm tra Truy cập dữ liệu bị tắt theo mặc định và không được ghi trừ khi được bật rõ ràng (ngoại trừ nhật ký kiểm tra Truy cập dữ liệu cho BigQuery, không thể tắt nhật ký này).

Nhật ký kiểm tra Truy cập dữ liệu cho Cơ sở dữ liệu thời gian thực được bật bằng cách DATA_READ và/hoặc DATA_WRITE trong Bảng điều khiển GCP. Có độ trễ tối đa một giờ giữa thời điểm bật/tắt nhật ký trong Bảng điều khiển GCP và thời điểm bắt đầu/dừng phân phối nhật ký.

Để biết hướng dẫn về cách bật một số hoặc tất cả nhật ký kiểm tra Truy cập dữ liệu của bạn, hãy xem Định cấu hình nhật ký truy cập dữ liệu .

Quyền và vai trò

Quyền và vai trò IAM trên đám mây xác định khả năng truy cập dữ liệu nhật ký kiểm tra trong tài nguyên Google Cloud.

Khi quyết định các quyền và vai trò dành riêng cho Ghi nhật ký áp dụng cho trường hợp sử dụng của bạn, hãy cân nhắc những điều sau:

  • Vai trò Trình xem nhật ký ( roles/logging.viewer ) cung cấp cho bạn quyền truy cập chỉ đọc vào nhật ký kiểm tra Hoạt động của quản trị viên, Chính sách bị từ chối và Sự kiện hệ thống. Nếu bạn chỉ có vai trò này, thì bạn không thể xem nhật ký kiểm tra Truy cập dữ liệu trong nhóm _Default .

  • Vai trò Trình xem nhật ký riêng tư (roles/logging.privateLogViewer ) bao gồm các quyền có trong roles/logging.viewer , cùng với khả năng đọc nhật ký kiểm tra Truy cập dữ liệu trong nhóm _Default .

    Lưu ý rằng nếu các nhật ký riêng tư này được lưu trữ trong các nhóm do người dùng xác định, thì bất kỳ người dùng nào có quyền đọc nhật ký trong các nhóm đó đều có thể đọc nhật ký riêng tư. Để biết thêm thông tin về bộ chứa nhật ký, hãy xem Tổng quan về định tuyến và lưu trữ .

Để biết thêm thông tin về các quyền và vai trò của Cloud IAM áp dụng cho dữ liệu nhật ký kiểm tra, hãy xem Kiểm soát truy cập .

Xem các bản ghi

Để tìm và xem nhật ký kiểm tra, bạn cần biết mã định danh của dự án, thư mục hoặc tổ chức Firebase mà bạn muốn xem thông tin nhật ký kiểm tra. Bạn có thể chỉ định thêm các trường LogEntry được lập chỉ mục khác, như resource.type ; để biết chi tiết, xem lại Tìm các mục nhật ký nhanh chóng .

Sau đây là tên nhật ký kiểm tra; chúng bao gồm các biến cho số nhận dạng của dự án, thư mục hoặc tổ chức Firebase:

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

Bạn có thể xem nhật ký kiểm tra trong Cloud Logging bằng Bảng điều khiển GCP, công cụ dòng lệnh gcloud hoặc Logging API.

Bảng điều khiển

Bạn có thể sử dụng Trình khám phá nhật ký trong Bảng điều khiển GCP để truy xuất các mục nhập nhật ký kiểm tra cho dự án, thư mục hoặc tổ chức Firebase của bạn:

  1. Trong Bảng điều khiển GCP, chuyển đến trang Ghi nhật ký > Trình khám phá nhật ký .

    Chuyển đến trang Trình khám phá nhật ký

  2. Trên trang Logs Explorer , hãy chọn một dự án, thư mục hoặc tổ chức Firebase hiện có.

  3. Trong ngăn Trình tạo truy vấn , hãy làm như sau:

    • Trong Loại tài nguyên , hãy chọn tài nguyên Google Cloud có nhật ký kiểm tra mà bạn muốn xem.

    • Trong Tên nhật ký , chọn loại nhật ký kiểm tra mà bạn muốn xem:

      • Đối với nhật ký kiểm tra Hoạt động của quản trị viên, hãy chọn hoạt động .
      • Đối với nhật ký kiểm tra Truy cập dữ liệu, hãy chọn data_access .
      • Đối với nhật ký kiểm tra Sự kiện Hệ thống, hãy chọn system_event .
      • Đối với nhật ký kiểm tra Chính sách bị từ chối, hãy chọn chính sách .

    Nếu bạn không thấy các tùy chọn này thì không có bất kỳ nhật ký kiểm tra nào thuộc loại đó trong dự án, thư mục hoặc tổ chức Firebase.

    Để biết thêm chi tiết về cách truy vấn bằng Logs Explorer, hãy xem Xây dựng truy vấn nhật ký .

gcloud

Công cụ dòng lệnh gcloud cung cấp giao diện dòng lệnh cho Cloud Logging API. Cung cấp PROJECT_ID , FOLDER_ID hoặc ORGANIZATION_ID hợp lệ trong mỗi tên nhật ký.

Để đọc các mục nhật ký kiểm tra cấp dự án Firebase của bạn, hãy chạy lệnh sau:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID

Để đọc các mục nhật ký kiểm tra cấp thư mục của bạn, hãy chạy lệnh sau:

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" --folder=FOLDER_ID

Để đọc các mục nhật ký kiểm tra cấp tổ chức của bạn, hãy chạy lệnh sau:

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID

Để biết thêm thông tin về cách sử dụng công cụ gcloud , hãy xem Đọc mục nhật ký .

API

Khi tạo truy vấn của bạn, hãy thay thế các biến bằng các giá trị hợp lệ, thay thế tên hoặc mã định danh kiểm tra cấp dự án, cấp thư mục hoặc cấp tổ chức thích hợp như được liệt kê trong tên nhật ký kiểm tra. Ví dụ: nếu truy vấn của bạn bao gồm PROJECT_ID thì số nhận dạng dự án mà bạn cung cấp phải tham chiếu đến dự án Firebase hiện được chọn.

Để sử dụng API ghi nhật ký để xem các mục nhật ký kiểm tra của bạn, hãy làm như sau:

  1. Chuyển đến phần Dùng thử API này trong tài liệu về phương thức entries.list .

  2. Đặt phần sau vào phần Nội dung yêu cầu của biểu mẫu Dùng thử API này . Nhấp vào biểu mẫu được điền trước này sẽ tự động điền vào nội dung yêu cầu, nhưng bạn cần cung cấp PROJECT_ID hợp lệ trong mỗi tên nhật ký.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. Nhấp vào Thực thi .

Để biết thêm chi tiết về truy vấn, hãy xem Ngôn ngữ truy vấn ghi nhật ký .

Để biết ví dụ về mục nhập nhật ký kiểm tra và cách tìm thông tin quan trọng nhất trong đó, hãy xem Mục nhập nhật ký kiểm tra mẫu .

Nhật ký kiểm tra tuyến đường

Bạn có thể định tuyến nhật ký kiểm tra đến các đích được hỗ trợ giống như cách bạn có thể định tuyến các loại nhật ký khác. Dưới đây là một số lý do bạn có thể muốn định tuyến nhật ký kiểm tra của mình:

  • Để lưu giữ nhật ký kiểm tra trong thời gian dài hơn hoặc để sử dụng các khả năng tìm kiếm mạnh mẽ hơn, bạn có thể định tuyến các bản sao nhật ký kiểm tra của mình tới Google Cloud Storage, BigQuery hoặc Google Cloud Pub/Sub. Sử dụng Cloud Pub/Sub, bạn có thể định tuyến tới các ứng dụng khác, các kho lưu trữ khác và tới các bên thứ ba.

  • Để quản lý nhật ký kiểm tra của bạn trong toàn bộ tổ chức, bạn có thể tạo các phần chìm tổng hợp có thể định tuyến nhật ký từ bất kỳ hoặc tất cả các dự án Firebase trong tổ chức.

  • Nếu nhật ký kiểm tra Quyền truy cập dữ liệu đã bật của bạn đang đẩy các dự án Firebase vượt qua các phần nhật ký của bạn, thì bạn có thể tạo các phần chứa để loại trừ nhật ký kiểm tra Quyền truy cập dữ liệu khỏi Ghi nhật ký.

Để biết hướng dẫn về nhật ký định tuyến, hãy xem Định cấu hình phần chìm .

định giá

Nhật ký kiểm tra Hoạt động của quản trị viên và nhật ký kiểm tra Sự kiện hệ thống là miễn phí.

Nhật ký kiểm tra Truy cập dữ liệu và nhật ký kiểm tra Bị từ chối chính sách có tính phí.

Để biết thêm thông tin về giá Ghi nhật ký trên đám mây, hãy xem giá bộ hoạt động của Google Cloud: Ghi nhật ký trên đám mây .