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 viết 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 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 thao tác "viết của quản trị viên" 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 "đọc của quản trị viên" để đọ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 các hoạt động API 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 Firebase:

Danh mục nhật ký kiểm tra Hoạt động của 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)
  • CreateDatabaseInstance
  • Xóa cơ sở dữ liệu
  • TắtDatabaseInstance
  • ReenableDatabaseInstance
Nhật ký kiểm tra quyền truy cập dữ liệu (ADMIN_READ)
  • GetDatabaseInstance
  • Danh sách cơ sở dữ liệu
Nhật ký kiểm tra quyền truy cập dữ liệu (DATA_READ hoặc DATA_WRITE)
  • Kết nối
  • Ngắt kết nối
  • Chạy trênNgắt kết nối
  • Cập nhật (có điều kiện tiên quyết) (đối với hoạt động giao dịch). Xem PreconditionWriteMetadata liên quan.
Nhật ký kiểm tra quyền truy cập dữ liệu (DATA_READ)
Nhật ký kiểm tra quyền truy cập dữ liệu (DATA_WRITE)
  • Viết
  • Cập nhật. Xem WriteMetadata được liên kết.
  • BậtNgắt kết nốiĐặt
  • OnDisconnectUpdate. Xem WriteMetadata được liên kết.
  • 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. Cá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 phần 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ó đối tượng AuthenticationInfo chứa email thông tin xác thực 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ó đối tượng AuthenticationInfo chứa giá trị 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 tạo ra 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 sẽ 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 Một phiên 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ể đưa ra các yêu cầu như vậy . 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 mình đú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 cũ có đối tượng AuthenticationInfo chứa phần giữ chỗ principalEmail 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 về 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 . Việc thu hồi hoặc hủy 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ả của trình phân tích 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 hồ sơ 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 mọi 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 để xác định điểm phát sóng và do đó tối ưu hóa hiệu suất
  • Có thể đo lường chương trình phát sóng của người nghe , tính năng này không có trong Nhật ký kiểm tra do khối lượng dữ liệu tiềm năng
  • Nhẹ và thời gian thực, rất phù hợp cho việc 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 mới xuất hiện.

Nội dung nhật ký kiểm tra tương ứng với các số liệu của trình lược tả như 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 hồ sơ
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 thời gian thực
Đọc RequestTypeREST đọc lại
Viết RequestTypeREALTIME viết thời gian thực
Viết RequestTypeREST viết lại
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 nghỉ ngơi
Người ngheNghe RequestTypeREALTIME người nghe-lắng nghe
ListenerKhông nghe RequestTypeREALTIME người nghe-không nghe
BậtNgắt kết nốiĐặt RequestTypeREALTIME khi ngắt kết nối
Bật Ngắt kết nốiCập nhật RequestTypeREALTIME cập nhật khi ngắt kết nối
BậtNgắt kết nốiHủy RequestTypeREALTIME khi ngắt kết nối-hủy
Chạy trênNgắt kết nối RequestTypeREALTIME 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ật ký, là một đối tượng thuộc loại LogEntry . Các trường hữu ích bao gồm:

    • logName chứa ID tài nguyên và loại nhật ký kiểm tra.
    • 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à đối tượng AuditLog được giữ trong trường protoPayload của 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 .

Để biết 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 Tìm 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 dữ liệu ghi nhật ký kiểm tra Hoạt động của quản trị viên, Quyền truy cập dữ liệu, Bị từ chối chính sách hay Sự kiện hệ thống hay không. Ví dụ: phần sau đây 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ụ API ghi nhật ký đám mây 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 .

Các 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 Ghi nhật ký đám mây 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 lệ là 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 chuyển đổi bằng cách kiểm tra DATA_READ và/hoặc DATA_WRITE trong Bảng điều khiển GCP. Có độ trễ tối đa một giờ tính từ thời điểm bật/tắt nhật ký trong Bảng điều khiển GCP đến thời điểm nhật ký bắt đầu/dừng được phân phối.

Để 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ò

Các quyền và vai trò của Cloud IAM xác định khả năng bạn truy cập vào 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ò ghi nhật ký cụ thể nào áp dụng cho trường hợp sử dụng của bạn, hãy xem xét những điều sau:

  • Vai trò Người 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, Bị từ chối chính sách và Sự kiện hệ thống. Nếu chỉ có vai trò này, 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ề nhóm 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 quyền 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, hãy xem lại Tìm 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 dành 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 API ghi nhật ký.

Bảng điều khiển

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

  1. Trong Bảng điều khiển GCP, đi tới trang Ghi nhật ký > Nhật ký Explorer .

    Đi tới trang Logs Explorer

  2. Trên trang Logs Explorer , chọn 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 thực hiện các thao tác 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ì tức là 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 API ghi nhật ký đám mây. Cung cấp PROJECT_ID hợp lệ, FOLDER_ID hoặc ORGANIZATION_ID 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 xây dựng các 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 nhật ký 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ì mã định danh dự án 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ý nhằm xem các mục nhật ký kiểm tra của bạn, hãy làm như sau:

  1. Đi tới phần Thử API này trong tài liệu về phương thức entries.list .

  2. Đặt nội dung sau vào phần nội dung Yêu cầu của biểu mẫu Dùng thử API này . Việc 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 Ghi nhật ký ngôn ngữ truy vấn .

Để biết ví dụ về mục 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 lộ trình

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 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 đến 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 trên toàn bộ tổ chức, bạn có thể tạo các hệ thống lưu trữ 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 Truy cập dữ liệu đã bật của bạn đang đẩy các dự án Firebase vượt quá phân bổ nhật ký của bạn, thì bạn có thể tạo các phần lưu trữ loại trừ nhật ký kiểm tra 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 bồn rửa .

Định giá

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

Nhật ký kiểm tra quyền truy cập dữ liệunhật ký kiểm tra Chính sách bị từ chối đều phải trả phí.

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