搭配使用 Cloud 稽核記錄與 Cloud Storage

本頁提供使用 Cloud 稽核記錄搭配 Cloud Storage 的補充資訊。您可以針對在 Cloud Storage 中執行的 API 作業,使用 Cloud 稽核記錄功能產生記錄。

總覽

Google Cloud 服務會寫入稽核記錄,協助您瞭解 Google Cloud 資源中「人事時地物」的問題。您也可以在稽核記錄中附加自訂資訊,進一步瞭解資源的存取方式。

專案的稽核記錄僅涵蓋直接隸屬於專案的資源。 Google Cloud Google Cloud 資料夾、機構和帳單帳戶等其他 Google Cloud 資源也各有其專屬的稽核記錄。

如需 Cloud 稽核記錄的概要總覽,請參閱 Cloud 稽核記錄總覽。如要深入瞭解稽核記錄格式,請參閱「瞭解稽核記錄」。

可用的稽核記錄

Cloud Storage 提供下列類型的稽核記錄:

  • 管理員活動稽核記錄:記錄下列作業的項目:

    • 修改 Cloud Storage 資源的存取權
    • 還原或遷移值區
    • 建立、刪除或修改 bucket、受管理資料夾或資產盤點清單報告設定
    • 建立、暫停、繼續、停用、更新、列出或取得「任何位置」快取
  • 資料存取稽核記錄:管理員活動稽核記錄未追蹤的作業項目。資料存取稽核記錄有多個子類型:

    • ADMIN_READ:其中的項目為讀取存取設定、讀取值區中繼資料,或列出專案內值區的作業記錄。

    • DATA_READ:其中的項目為讀取或列出 bucket 以外 Cloud Storage 資源的作業記錄。

    • DATA_WRITE:其中的項目為物件的建立、修改、刪除或還原作業記錄,或是 XML API 多部分上傳的建立、修改或刪除作業記錄,或是資料夾的建立、刪除或重新命名作業記錄。

    如要接收資料存取稽核記錄,您必須明確啟用這類記錄。

  • 系統事件稽核記錄:記錄修改 Cloud Storage 資源設定的作業。 Google Cloud 這些記錄是由 Google Cloud 系統產生,而非由使用者動作驅動。

除了 Cloud Storage 的稽核記錄,Cloud 稽核記錄也可以建立 Storage Insights 的稽核記錄。每當建立、更新及擷取資產盤點清單報告設定,以及擷取資產盤點清單報告時,系統都會產生 Storage Insights 稽核記錄。

如需稽核記錄類型的完整說明,請參閱「稽核記錄類型」。

已稽核的作業

下表摘要列出對應每個稽核記錄類型的 Cloud Storage 作業:

稽核記錄類型 子類型 Cloud Storage 作業
管理員活動 ADMIN_WRITE
  • 設定/變更身分與存取權管理政策
  • 變更物件 ACL1
  • 建立值區
  • 刪除值區
  • 更新值區中繼資料
  • 建立受管理的資料夾
  • 刪除代管資料夾
  • 建立資產盤點清單報告設定
  • 更新資產盤點清單報告設定
  • 刪除庫存報表設定
  • 還原虛刪除的 bucket
  • 遷移 bucket
  • 更新專案的 Storage Intelligence 設定
  • 更新資料夾的 Storage Intelligence 設定
  • 更新機構的 Storage Intelligence 設定
  • 建立儲存空間分析資料集設定
  • 更新儲存空間分析資料集設定
  • 刪除儲存空間分析資料集設定
  • 連結儲存空間分析資料集設定
  • 取消連結儲存空間分析資料集設定
  • 建立 Anywhere Cache 快取
  • 暫停 Anywhere Cache 快取
  • 繼續使用 Anywhere Cache 快取
  • 停用 Anywhere Cache 快取
  • 更新 Anywhere Cache 快取
資料存取權 ADMIN_READ
  • 取得身分與存取權管理政策
  • 取得物件 ACL
  • 取得值區中繼資料
  • 列出值區
資料存取權 DATA_READ
  • 取得物件資料
  • 取得物件中繼資料
  • 列出物件
  • 取得資料夾中繼資料
  • 列出資料夾
  • 取得代管資料夾中繼資料
  • 列出代管資料夾
  • 複製物件2
  • 編寫物件2
  • 列出進行中的 XML API 多部分上傳作業
  • 列出 XML API 多部分上傳作業的部分
  • 取得庫存報表設定
  • 列出資產盤點清單報告設定
  • 取得廣告空間報表
  • 房源目錄報表
  • 取得專案的 Storage Intelligence 設定
  • 取得資料夾的 Storage Intelligence 設定
  • 取得機構的 Storage Intelligence 設定
  • 取得儲存空間分析資料集設定
  • 列出儲存空間分析資料集設定
  • 列出「任何位置」快取快取
  • 取得 Anywhere Cache 快取
資料存取權 DATA_WRITE
  • 建立物件
  • 刪除物件
  • 還原虛刪除的物件
  • 更新非 ACL 物件中繼資料
  • 複製物件1
  • 編寫物件1
  • 啟動 XML API 多部分上傳作業
  • 在 XML API 多部分上傳作業中建立部分
  • 取消 XML API 多部分上傳作業
  • 完成 XML API 多部分上傳作業
  • 建立資料夾
  • 刪除資料夾
  • 重新命名資料夾
系統事件
  • 開始值區遷移程序3
  • bucket 遷移程序結束

1 如果在建立物件時一併設定 ACL,系統不會產生管理員活動稽核記錄。此外,如果物件 ACL 設為公開,系統就不會為該物件或其 ACL 的讀取或寫入作業產生稽核記錄。

2 這些作業會讀取及寫入資料。因此,這些作業各會產生兩筆記錄項目。

3 初始要求送出後,儲存空間可能會過一段時間才開始搬遷。程序實際開始時,系統事件記錄檔就會寫入。

限制

將 Cloud 稽核記錄與 Cloud Storage 搭配使用時有以下限制:

如需在上述情況下使用記錄功能,請考慮使用 Cloud Storage 使用記錄

稽核記錄格式

稽核記錄項目包含下列元件:

  • 記錄項目本身,屬於 LogEntry 物件。實用的欄位包括:

    • logName 包含資源 ID 和稽核記錄類型。
    • resource 包含稽核作業的目標。
    • timestamp 包含稽核作業的時間。
    • protoPayload 包含稽核的資訊。
  • 稽核記錄資料,這是儲存在記錄項目 protoPayload 欄位中的 AuditLog 物件。

    • protoPayload 欄位中,metadata 欄位包含 Cloud Storage 的專屬資訊。舉例來說,讀取物件要求會在稽核記錄的 metadata 欄位中包含 requested_bytes 欄位。如果使用 range 標頭呼叫要求,系統會在 metadata 欄位中填入範圍值;否則,系統會在元資料的 requested_bytes 欄位中填入物件的總大小。

    • 如果強制使用詳細稽核記錄模式,要求和回應欄位中會包含 Cloud Storage 的額外稽核資訊,但您不必開啟詳細稽核記錄,也能在稽核記錄中新增自訂資訊。protoPayload

如要瞭解這些物件中的其他欄位,以及如何解讀這些資料,請參閱「瞭解稽核記錄」一文。

記錄檔名稱

Cloud 稽核記錄的記錄名稱包含資源 ID,可指出擁有稽核記錄的Google Cloud 專案或其他 Google Cloud 實體,以及記錄中是否包含管理員活動或資料存取稽核記錄資料。

以下是稽核記錄名稱,包括資源 ID 的變數:

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

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

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access

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

服務名稱

Cloud Storage 稽核記錄會使用服務名稱 storage.googleapis.com

Storage Insights 稽核記錄會使用服務名稱 storageinsights.googleapis.com

如需所有 Cloud Logging API 服務名稱及其對應受監控資源類型的清單,請參閱「將服務對應至資源」。

資源類型

Cloud Storage 稽核記錄使用的資源類型為 gcs_bucket

如需所有 Cloud Logging 受監控資源類型和說明資訊的清單,請參閱「受監控資源類型」。

啟用稽核記錄

系統一律會啟用管理員活動稽核記錄,且該記錄無法停用。

資料存取稽核記錄預設為停用,且除非明確啟用,否則系統不會寫入這類記錄。

如要瞭解如何啟用部分或全部的資料存取稽核記錄,請參閱「設定資料存取稽核記錄」一文。

權限與角色

IAM 權限和角色會決定您能否存取 Google Cloud 資源中的稽核記錄資料。

決定要將哪些記錄專用權限和角色套用至您的用途時,請考量下列事項:

  • 「記錄檢視者」角色 (roles/logging.viewer) 可讓您以唯讀模式存取「管理員活動」、「政策拒絕」和「系統事件」稽核記錄。如果您只有這個角色,就無法查看 _Required_Default 值區中的資料存取稽核記錄。

  • 「私密記錄檢視者」角色 ((roles/logging.privateLogViewer) 包含 roles/logging.viewer 中的權限,外加讀取 _Required_Default 儲存空間中的資料存取稽核記錄。

    請注意,如果這些私密記錄檔儲存在使用者定義的值區中,則任何有權讀取這些值區中記錄檔的使用者,都能讀取私密記錄檔。如要進一步瞭解記錄檔 bucket,請參閱「轉送和儲存空間總覽」。

如要進一步瞭解適用於稽核記錄資料的 IAM 權限和角色,請參閱「使用身分與存取權管理功能控管存取權」一文。

查看記錄

您可以查詢所有稽核記錄,也可以依稽核記錄名稱查詢記錄。稽核記錄名稱包含您要查看稽核記錄資訊的 Google Cloud 專案、資料夾、帳單帳戶或機構的資源 ID。查詢可以指定已建立索引的 LogEntry 欄位。 如要進一步瞭解如何查詢記錄,請參閱「在 Logs Explorer 中建構查詢」。

您可以使用記錄檔探索工具,查看及篩選個別記錄項目。如要使用 SQL 分析記錄檔項目群組,請使用「記錄檔分析」頁面。如需詳細資訊,請參閱:

您可以使用Google Cloud 控制台、Google Cloud CLI 或 Logging API,在 Cloud Logging 中查看大部分的稽核記錄。不過,如要查看與帳單相關的稽核記錄,只能使用 Google Cloud CLI 或 Logging API。

控制台

在 Google Cloud 控制台中,您可以使用「記錄檔探索工具」擷取 Google Cloud 專案、資料夾或機構的稽核記錄項目:

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面:

    前往「Logs Explorer」(記錄檔探索工具)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果

  2. 選取現有的 Google Cloud 專案、資料夾或機構。

  3. 如要顯示所有稽核記錄,請在查詢編輯器欄位中輸入下列任一查詢,然後按一下「執行查詢」

    logName:"cloudaudit.googleapis.com"
    
    protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
    
  4. 如要顯示特定資源和稽核記錄類型的稽核記錄,請在「查詢產生器」窗格中執行下列操作:

    • 在「資源類型」中,選取要查看稽核記錄的 Google Cloud 資源。

    • 在「記錄名稱」中,選取要查看的稽核記錄類型:

      • 如要查看管理員活動稽核記錄,請選取「activity」
      • 如要查看資料存取稽核記錄,請選取「data_access」data_access
      • 如要查看系統事件稽核記錄,請選取「system_event」system_event
      • 如要查看「政策遭拒」稽核記錄,請選取「政策」
    • 點選「執行查詢」

    如果沒有看到這些選項,表示 Google Cloud 專案、資料夾或機構中沒有這類型的稽核記錄。

    如果無法在記錄檔探索工具中查看記錄,請參閱疑難排解資訊。

    如要進一步瞭解如何使用記錄檔探索工具查詢,請參閱「在記錄檔探索工具中建構查詢」。

gcloud

Google Cloud CLI 提供 Logging API 的指令列介面。並在每個記錄名稱中提供有效的資源 ID。舉例來說,如果查詢包含 PROJECT_ID,則您提供的專案 ID 必須參照目前選取的Google Cloud 專案。

如要讀取 Google Cloud 專案層級的稽核記錄項目,請執行下列指令:

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

如要讀取資料夾層級的稽核記錄項目,請執行下列指令:

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

如要讀取機構層級的稽核記錄項目,請執行下列指令:

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

如要讀取 Cloud Billing 帳戶層級的稽核記錄項目,請執行下列指令:

gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \
    --billing-account=BILLING_ACCOUNT_ID

在指令中加入 --freshness 旗標,即可讀取超過 1 天前的記錄。

如要進一步瞭解如何使用 gcloud CLI,請參閱 gcloud logging read

REST

建構查詢時,請在每個記錄名稱中提供有效的資源 ID。舉例來說,如果查詢包含 PROJECT_ID,則您提供的專案 ID 必須參照目前選取的Google Cloud 專案。

舉例來說,如要使用 Logging API 查看專案層級的稽核記錄項目,請按照下列步驟操作:

  1. 前往 entries.list 方法說明文件中的「Try this API」(試用這個 API) 區段。

  2. 將下列內容放入「Try this API」(試用這個 API) 表單的「Request body」(要求主體) 部分。按一下這份已預先填入資料的表單就能自動填入要求主體,但您必須在每個記錄名稱中提供有效的 PROJECT_ID

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. 按一下 [Execute] (執行)

在稽核記錄中新增自訂資訊

您可以在要求中加入 x-goog-custom-audit-KEY: VALUE 標頭,將自訂資訊附加至要求,以便納入稽核記錄。XML API 要求也支援使用 x-goog-custom-audit-KEY=VALUE 查詢參數。自訂資訊會新增至稽核記錄項目的 protoPayload 欄位。metadata

新增自訂稽核資訊時,請注意下列事項:

  • 每個 KEY (包括 x-goog-custom-audit- 前置字元) 最多可包含 64 個字元,每個 VALUE 最多可包含 1,200 個字元。

  • 每個要求最多可包含 4 個標頭或參數項目。

標頭項目範例

以下清單列出可加入標頭項目的鍵/值組合範例:

  • x-goog-custom-audit-job: test-job-id-here
  • x-goog-custom-audit-user: user ID test 1
  • x-goog-custom-audit-internal-user-id: MATR2022-11
  • x-goog-custom-audit-tracking-ticket: TT/1516512851
  • x-goog-custom-audit-justification: Removed customer identity record at customer request
  • x-goog-custom-audit-customer-id: USCU12315154

要求範例

指令列

gcloud storage hash gs://example_bucket/example_object.jpeg --additional-headers=x-goog-custom-audit-job="job name",x-goog-custom-audit-user="test user"

用戶端程式庫

C++

如要瞭解如何將自訂標頭新增至要求,請參閱「新增自訂標頭」。

C#

如要瞭解如何將自訂標頭新增至要求,請參閱「新增自訂標頭」。

Go

如要瞭解如何將自訂標頭新增至要求,請參閱「新增自訂標頭」。

Java

如要瞭解如何將自訂標頭新增至要求,請參閱「新增自訂標頭」。

Node.js

如要瞭解如何將自訂標頭新增至要求,請參閱「新增自訂標頭」。

PHP

如要瞭解如何將自訂標頭新增至要求,請參閱「新增自訂標頭」。

Python

如要瞭解如何將自訂標頭新增至要求,請參閱「新增自訂標頭」。

Ruby

如要瞭解如何將自訂標頭新增至要求,請參閱「新增自訂標頭」。

REST API

JSON API

curl -X GET "https://storage.googleapis.com/storage/v1/b/example_bucket/o/example_object" \
-H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
-H "x-goog-custom-audit-job: job name" \
-H "x-goog-custom-audit-user: test user"

XML API

curl -X GET "https://storage.googleapis.com/example_bucket/example_object" \
-H "Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg" \
-H "x-goog-custom-audit-job: job name" \
-H "x-goog-custom-audit-user: test user"

已簽署網址的要求

curl -X GET 'storage.googleapis.com/example_bucket?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount.com%2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T181309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host,x-goog-custom-audit-job,x-goog-custom-audit-user&X-Goog-Signature=247a2aa45f169edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa8496def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dcc1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c20580e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b133447032ea7abedc098d2eb14a7' \
-H "x-goog-custom-audit-job: job name" \
-H "x-goog-custom-audit-user: test user"

請注意,自訂稽核標頭也必須包含在 X-Goog-SignedHeaders 中。

如要建立支援新增自訂稽核標頭的已簽署網址要求,您也必須在產生已簽署網址時,一併加入要在要求中使用的自訂稽核標頭。例如:

gcloud storage sign-url gs://example_bucket/example_object.jpeg --private-key-file=example-key.json --duration=10m --headers=x-goog-custom-audit-job:"job name",x-goog-custom-audit-user="test user"

您也可以在設定自訂標頭時,使用用戶端程式庫產生已簽署的網址

除了使用簽署的標頭,您也可以使用查詢參數傳遞自訂稽核項目。

curl -X GET 'storage.googleapis.com/example_bucket?X-Goog-Custom-Audit-Key=Value&X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount.com%2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T181309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f169edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa8496def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dcc1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c20580e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b133447032ea7abedc098d2eb14a7'

產生已簽署網址時,必須加入這些查詢參數。例如:

gcloud storage sign-url gs://example_bucket/example_object.jpeg --private-key-file=example-key.json --duration=10m --query-params=x-goog-custom-audit-job=job_name,x-goog-custom-audit-user=test_user

記錄項目範例

protoPayload: {
  @type: "type.googleapis.com/google.cloud.audit.Auditlog",
  ...
  metadata: {
    audit_context: {
      app_context: "EXTERNAL",
      audit_info: {
        x-goog-custom-audit-job: "job name",
        x-goog-custom-audit-user: "test user"
      }
    }
  }
}

如要進一步瞭解 protoPayload 物件中包含的欄位 (類型為 type.googleapis.com/google.cloud.audit.Auditlog),請參閱AuditLog 參考文件

路由稽核記錄

您可以採用與轉送其他類型記錄相同的方式,將稽核記錄轉送至支援的目的地。以下列舉幾個可能需要傳送稽核記錄的原因:

  • 如要長時間保留稽核記錄,或使用更強大的搜尋功能,您可以將稽核記錄的副本傳送至 Cloud Storage、BigQuery 或 Pub/Sub。您可以使用 Pub/Sub 將記錄檔傳送至其他應用程式、其他存放區或第三方。
  • 如要管理整個機構的稽核記錄,您可以建立匯總接收器,從機構的任何或所有 Google Cloud 專案轉送記錄。
  • 如果已啟用的資料存取稽核記錄導致Google Cloud 專案超過免費配額,您可以建立接收器,從 Logging 排除資料存取稽核記錄。

如需如何將記錄檔傳送至接收器的操作說明,請參閱「設定及管理接收器 」。

定價

如要瞭解 Cloud Logging 定價,請參閱「Google Cloud Observability 定價:Cloud Logging」一文。