彙整機構和資料夾層級記錄,並將其轉送至支援的目的地

Cloud Logging 中的匯總接收器可讓您合併資料夾或機構中所有資源的記錄項目,並將這些項目轉送至中央目的地。您可以將匯總接收器設為攔截或非攔截、定義篩選器來控管要轉送的記錄項目,以及授予接收器寫入目的地的權限。

限制

設定匯總接收器時,請注意下列限制:

  • 目的地路徑只能包含全域服務端點,例如 pubsub.googleapis.com。您無法加入區域服務端點 (REP),例如 pubsub.LOCATION.rep.googleapis.com。如需支援的目的地路徑清單,請參閱「目的地路徑格式」。

  • 不支援將記錄資料轉送至傳輸中限制的 Pub/Sub 主題。如果您將記錄檔接收器設定為具有傳輸中限制的 Pub/Sub 主題,可能會看到 topic_region_not_allowed 設定錯誤和捨棄的記錄檔。

事前準備

建立接收器前,請確認下列事項:

  • 您熟悉匯總接收器的行為。詳情請參閱「匯總接收器總覽」。

  • 您有 Cloud de Confiance by S3NS 資料夾或機構,且其中包含可在 Logs Explorer 中查看的記錄項目。

  • 您在Cloud de Confiance 機構或資料夾中具備下列任一 Identity and Access Management 角色,可從中將記錄項目路由傳送出去:

    • 擁有者 (roles/owner)
    • 記錄管理員 (roles/logging.admin)
    • 記錄檔設定寫入者 (roles/logging.configWriter)

    這些角色包含的權限可讓您建立、刪除或修改接收器。如要瞭解如何設定 IAM 角色,請參閱 Logging 存取控管指南。

  • 匯總接收器的目的地存在,或您有權建立目的地。目的地可以位於任何 Cloud de Confiance 專案和任何機構。如需支援的目的地清單和限制,請參閱「支援的目的地」。

  • 選取要使用的介面:

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,您不需要設定驗證機制。

    gcloud

    安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

    gcloud init

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」一節。

建立匯總接收器

如要設定匯總接收器,請建立接收器,然後授予接收器寫入目的地的權限。本節說明如何建立匯總接收器。如要瞭解如何授予接收器權限,請參閱「設定目的地權限」。

每個資料夾或機構最多可建立 200 個接收器。

控制台

如要為資料夾或組織建立匯總接收器,請按照下列步驟操作:

  1. 前往 Cloud de Confiance 控制台的「Log Router」(記錄檔路由器) 頁面:

    前往「記錄檔路由器」

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

  2. 選取現有的資料夾或機構。

  3. 選取「建立接收器」。

  4. 在「Sink details」(接收器詳細資料) 面板中,輸入下列詳細資料:

    • 接收器名稱:提供接收器的 ID。建立接收器後,您無法重新命名,但可以刪除並建立新的接收器。

    • 「Sink description」(接收器說明) (選填):說明接收器的用途或用途。

  5. 在「Select sink service」(選取接收器服務) 選單中,選取目的地類型,然後完成對話方塊來指定目的地。您可以選取現有目的地,也可以建立目的地。

    • 如果是攔截接收器,請選取「Cloud de Confiance 專案」,然後輸入目的地Cloud de Confiance 專案的完整名稱:

      logging.googleapis.com/projects/DESTINATION_PROJECT_ID
      
    • 如果是非攔截接收器,請選取目的地,然後輸入目的地的完整名稱。支援的目的地如下:

      • Cloud de Confiance 專案

        logging.googleapis.com/projects/DESTINATION_PROJECT_ID
        
      • Logging bucket

        logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME
        
      • Pub/Sub 主題

        請勿輸入強制執行傳輸中限制的 Pub/Sub 主題名稱。

        pubsub.googleapis.com/projects/DESTINATION_PROJECT_ID/topics/TOPIC_ID
        
  6. 在「Choose logs to include in sink」(選擇要納入接收器的記錄檔) 面板中,選取要納入接收器的資源。

    • 如果是攔截接收器,請選取「攔截這個機構和所有子資源擷取的記錄」。

    • 如果是非攔截接收器,請選取「Include logs ingested by this resource and all child resources」(收錄這項資源和所有子資源擷取的記錄檔)。

  7. 在「Build inclusion filter」(建立「包含」篩選器) 欄位中,輸入篩選運算式,比對要納入的記錄項目。如未設定篩選器,所選資源的所有記錄項目都會轉送至目的地。

    舉例來說,您可以建立篩選器,將所有資料存取稽核記錄轉送至單一 Logging bucket。這個篩選器看起來像這樣:

    LOG_ID("cloudaudit.googleapis.com/data_access") OR LOG_ID("externalaudit.googleapis.com/data_access")
    

    如需範例,請參閱「匯總接收器的篩選器」。

    請注意,篩選器長度不得超過 20,000 個字元。

  8. 選用:如要確認輸入的篩選條件正確無誤,請選取「預覽記錄」。系統會在新分頁中開啟 Logs Explorer,並預先填入篩選器。

  9. 選用:在「Choose logs to exclude from the sink」(選擇要從接收器排除的記錄檔) 面板中,執行下列操作:

    1. 在「Exclusion filter name」(排除篩選器名稱) 欄位中輸入名稱。

    2. 在「Build an exclusion filter」(建立排除篩選器) 欄位中,輸入與要排除的記錄項目相符的篩選運算式。您也可以使用 sample 函式,選取要排除的部分記錄項目。

      舉例來說,如要排除特定專案的記錄項目,不轉送至目的地,請新增下列排除篩選器:

      logName:projects/PROJECT_ID
      

      如要排除多個專案的記錄項目,請使用邏輯 OR 運算子來聯結 logName 子句。

    每個接收器最多可建立 50 個排除篩選器。請注意,篩選器的長度不得超過 20,000 個半形字元。

  10. 選取「建立接收器」。

  11. 如要完成匯總接收器的設定,請將權限授予接收器的服務帳戶,以便將記錄項目寫入接收器的目的地。詳情請參閱「設定目的地權限」。

gcloud

如要建立匯總接收器,請使用 logging sinks create 指令:

  1. 如要建立接收器,請執行 gcloud logging sinks create 指令,並加入 --include-children 旗標。

    使用下列指令前,請先替換以下項目:

    • SINK_NAME:記錄檔接收器的名稱。水槽名稱一經建立即無法變更。
    • SINK_DESTINATION:要轉送記錄項目的服務或專案。如要瞭解這些目的地的格式,請參閱「目的地路徑格式」。
    • INCLUSION_FILTER:接收器的「包含」篩選器。如需範例,請參閱「匯總接收器的篩選器」。
    • FOLDER_ID:資料夾 ID。如要在組織層級建立接收器,請將 --folder=FOLDER_ID 替換為 --organization=ORGANIZATION_ID。

    請執行 gcloud logging sinks create 指令。

    gcloud logging sinks create SINK_NAME \
      SINK_DESTINATION  --include-children \
      --folder=FOLDER_ID --log-filter="INCLUSION_FILTER"
    

    如要建立攔截接收器,請一併加入 --intercept-children 旗標。

    舉例來說,如果您要建立目的地為 Pub/Sub 主題的資料夾層級匯總接收器,指令可能如下所示:

    gcloud logging sinks create SINK_NAME \
      pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID --include-children \
      --folder=FOLDER_ID --log-filter="logName:activity"
  2. 授予接收器服務帳戶寫入接收器目的地的權限。詳情請參閱「設定目的地權限」。

REST

如要建立匯總接收器,請使用 organizations.sinks.create 或 folders.sinks.create Logging API 方法。準備方法引數,如下所示:

  1. 將 parent 欄位設為要建立接收器的 Cloud de Confiance 機構或資料夾。父項必須是下列其中一項:

    • organizations/ORGANIZATION_ID
    • folders/FOLDER_ID
  2. 在方法要求主體的 LogSink 物件中,執行下列其中一項操作:

    • 將 includeChildren 設為 true。

    • 如要建立攔截接收器,請將 interceptChildren 欄位設為 true。

  3. 設定 filter 欄位,以比對要納入的記錄項目。

    如需範例,請參閱「匯總接收器的篩選器」。

    篩選器長度不得超過 20,000 個字元。

  4. 其餘 LogSink 欄位的設定方式與任何接收器相同。 詳情請參閱「將記錄檔轉送至支援的目的地」。

  5. 呼叫 organizations.sinks.create 或 folders.sinks.create 建立接收器。

  6. 授予接收器服務帳戶寫入接收器目的地的權限。詳情請參閱「設定目的地權限」。

對接收器所做的任何變更,可能需要幾分鐘才會生效。

設定目的地權限

本節說明如何將必要的 IAM 權限授予記錄檔接收器的寫入者身分,讓接收器能將記錄項目寫入接收器的目的地。寫入者身分是與接收器相關聯的服務帳戶 ID,包含電子郵件地址,用於識別必須具備目的地資料寫入權限的主體。

如果記錄檔接收器將記錄項目轉送至同一專案中的記錄檔 bucket,您就不需要設定目的地權限。這項設定不需要服務帳戶。對於所有其他設定,Logging 會自動建立及管理記錄檔接收器的服務帳戶,您必須設定目的地權限:

  • 自 2023 年 5 月 22 日起,Logging 會針對基礎資源中的所有接收器使用相同的服務帳戶。資源可以是Cloud de Confiance 專案、機構、資料夾或帳單帳戶。
  • 在 2023 年 5 月 22 日前,Logging 會為每個接收器建立服務帳戶。

如要設定接收器的權限,以便將訊息轉送至目的地,請按照下列步驟操作:

控制台

  1. 如要取得接收器服務帳戶的相關資訊,請按照下列步驟操作:

    1. 前往 Cloud de Confiance 控制台的「Log Router」(記錄檔路由器) 頁面:

      前往「Log Router」(記錄檔路由器)

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

    2. 選取「選單」圖示 ,然後選取「查看接收器詳細資料」。寫入者身分會顯示在「Sink details」(接收器詳細資料) 面板中。

    3. 如果 writerIdentity 欄位的值包含電子郵件地址,請繼續下一個步驟。如果值為 None,則不需要設定目的地權限。

    4. 將接收器的寫入者身分複製到剪貼簿。寫入者身分可能會因接收器所屬的資源而異,但一律會以 serviceAccount: 開頭。以下是寫手身分識別資訊的範例:

      serviceAccount:service-123456789012@gcp-sa-logging.s3ns-system.iam.gserviceaccount.com
      
  2. 將記錄資料寫入目的地的權限授予接收器寫入者身分指定的主體:

    1. 前往 Cloud de Confiance 控制台的「IAM」頁面:

      前往「IAM」

      如果您是使用搜尋列尋找這個頁面,請選取子標題為「IAM & Admin」(IAM 與管理) 的結果。

    2. 在 Cloud de Confiance 控制台的工具列中,選取儲存匯總接收器目的地的專案。如果目的地是專案,請選取該專案。

    3. 按一下「Grant access」(授予存取權)。

    4. 輸入接收器寫入者身分指定的主體,然後授予 IAM 角色:

gcloud

  1. 確認您對包含目的地的Cloud de Confiance 專案具備擁有者存取權。如果沒有接收器目的地的「擁有者」存取權,請要求專案擁有者將寫入者身分新增為主體。

  2. 如要取得接收器服務帳戶的相關資訊,請執行 gcloud logging sinks describe 指令。

    使用下列指令前,請先完成下列替換:

    • SINK_NAME:記錄檔接收器的名稱。接收器建立後即無法變更名稱。

    請執行 gcloud logging sinks describe 指令。

    gcloud logging sinks describe SINK_NAME
    
  3. 如果接收器詳細資料包含標示為 writerIdentity 的欄位,請繼續進行下一個步驟。如果詳細資料不含 writerIdentity 欄位,您就不需要為接收器設定目的地權限。

  4. 將接收器的寫入者身分複製到剪貼簿。以下是寫入者身分的範例:

    serviceAccount:service-123456789012@gcp-sa-logging.s3ns-system.iam.gserviceaccount.com
    
  5. 執行 gcloud projects add-iam-policy-binding 指令,將記錄資料寫入目的地的權限授予接收器的寫入者身分。

    使用下列指令前,請先替換以下項目:

    • PROJECT_ID:專案的 ID。選取儲存匯總接收器目的地的專案。如果目的地是專案,請選取該專案。
    • PRINCIPAL:要授予角色的主體 ID。主體 ID 通常採用以下格式:PRINCIPAL-TYPE:ID。例如:principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com。 如要查看 PRINCIPAL 的完整格式清單,請參閱「主體 ID」。
    • ROLE:IAM 角色。根據記錄檔接收器的目的地,授予接收器寫入者身分適當的 IAM 角色:

    請執行 gcloud projects add-iam-policy-binding 指令。

    gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role=ROLE
    

REST

建議您使用 Cloud de Confiance 控制台或 Google Cloud CLI,將角色授予服務帳戶。

匯總接收器的篩選器

本節提供一些範例,說明您可能會在匯總接收器中使用的篩選器。如需更多範例,請參閱「使用記錄檔探索工具的查詢範例」。

有一些範例使用了下列標記法:

  • : 是子字串運算子。請勿替換 = 運算子。
  • ... 代表任何其他篩選器比較。
  • 變數會以彩色文字表示。以有效的值取代。

篩選條件的長度上限為 20,000 個字元。

如要進一步瞭解篩選語法,請參閱「Logging 查詢語言」。

選取記錄來源

如要轉送所有子資源的記錄項目,請勿在接收器的「包含」和「排除」篩選器中指定專案、資料夾或機構。舉例來說,假設您為機構設定匯總接收器,並採用下列篩選條件:

resource.type="gce_instance"

使用這個篩選器,匯總接收器會將該機構任何子項資源中 Compute Engine 執行個體的記錄項目,轉送至目的地。

不過,有時您可能想使用匯總接收器,只將特定子資源的記錄項目傳送至接收器。舉例來說,基於法規遵循考量,您可能想將特定資料夾或專案的稽核記錄,儲存在專屬的 Cloud Storage bucket。在這種情況下,請設定「包含」篩選器,指定要轉送記錄項目的「每個」子項資源。如要轉送資料夾和該資料夾內所有專案的記錄項目,篩選器必須列出資料夾和該資料夾內含的每個專案,並以 OR 子句聯結陳述式。

下列篩選器會將記錄項目限制在「特定」 Cloud de Confiance 專案、資料夾或組織:

logName:"projects/PROJECT_ID/logs/" AND ... 
logName:("projects/PROJECT_A_ID/logs/" OR "projects/PROJECT_B_ID/logs/") AND ... 
logName:"folders/FOLDER_ID/logs/" AND ... 
logName:"organizations/ORGANIZATION_ID/logs/" AND ... 

舉例來說,如要只轉送 Compute Engine 執行個體產生,且源自資料夾 my-folder 的記錄項目,請使用下列篩選器:

logName:"folders/my-folder/logs/" AND resource.type="gce_instance"

使用這項篩選器時,系統不會將源自 my-folder 以外任何資源的記錄項目 (包括源自 my-folder 子項 Cloud de Confiance 專案的記錄項目) 轉送至目的地。

選取受監控的資源

如要僅從Cloud de Confiance 專案中的特定受監控資源轉送記錄項目,請使用多個比較運算式來精確指定資源:

logName:"projects/PROJECT_ID/logs" AND
resource.type=RESOURCE_TYPE AND
resource.labels.instance_id=INSTANCE_ID

如需資源類型清單,請參閱「受監控資源類型」。

選取記錄項目樣本

如要將記錄項目隨機取樣並傳送至目的地,請新增 sample 內建函式。舉例來說,如要只轉送符合目前篩選條件的 10% 記錄項目,請使用下列附加條件:

sample(insertId, 0.10) AND ...

詳情請參閱 sample 函式。

如要瞭解 Logging 篩選器,請參閱「Logging 查詢語言」。

後續步驟