使用標記管理記錄檔叢集的存取權

本文說明如何使用標記管理 Cloud Logging 記錄值區。標記是在機構或專案層級建立,可讓您為資源加上註解。您也可以根據資源是否具備特定標記,有條件地授予 Identity and Access Management (IAM) 角色,或有條件地拒絕 IAM 權限。如需標記相關資訊,請參閱「標記總覽」。

舉例來說,如果您使用 BigQuery 分析 Cloud Billing 資料,則可將 project:production 標記附加至儲存生產資源記錄資料的記錄檔 bucket,並將 project:development 標記附加至儲存開發資源記錄資料的記錄檔 bucket。接著,您就可以使用標記查詢 Cloud Billing 資料,並查看開發和生產環境的費用明細。

標記可明確附加至記錄儲存區,或從上層機構、資料夾和專案沿用。

事前準備

如要開始使用標記管理記錄值區,請按照下列步驟操作:

  1. 確認您已建立代碼並設定值。您可以使用資源管理工具管理標記定義。如要瞭解如何建立及管理標記,請參閱「建立及管理標記」。
  2. 如要取得必要權限,以便使用標記管理記錄檔儲存空間,請要求管理員在專案或機構中授予下列 IAM 角色:

    如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

    這些預先定義的角色具備使用標記管理記錄檔儲存空間所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

    所需權限

    如要使用標記管理記錄檔 bucket,您必須具備下列權限:

    • 為記錄檔 bucket 新增或移除標記:
      • resourcemanager.tagValues.{get,list}
      • resourcemanager.tagKeys.{get,list}
      • resourcemanager.projects.get
      • logging.buckets.createTagbinding
      • logging.buckets.deleteTagBinding
    • 查看附加至記錄檔儲存空間的標記:
      • resourcemanager.tagValues.{get,list}
      • resourcemanager.tagKeys.{get,list}
      • logging.buckets.listTagBindings
      • logging.buckets.listEffectiveTags

    您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

  3. 如要取得管理記錄儲存區所需的權限,請要求管理員為您授予專案的記錄設定寫入者 (roles/logging.configWriter) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

    這個預先定義的角色具備 logging.buckets.list 權限,這是管理記錄儲存區的必要權限。

    您或許還可透過自訂角色或其他預先定義的角色取得這項權限。

將標記附加至記錄檔 bucket

如要將標記附加至記錄值區,請按照下列步驟操作:

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往「Logs Storage」(記錄檔儲存空間) 頁面:

    前往「Logs Storage」(記錄檔儲存空間)

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

  2. 找出要附加標記的記錄檔值區。

  3. 在記錄值區中,按一下「更多」圖示 ,然後按一下「編輯標記」

  4. 在對話方塊的「直接代碼」部分,選取代碼建立所在的資源,找出該代碼。舉例來說,如要使用在專案層級建立的標記,請選擇「選取目前專案」做為範圍。

    您也可以選取「手動輸入」選項,手動搜尋專案、機構或標記 ID。

  5. 選取適當的鍵/值組合,然後按一下「儲存」

  6. 系統會顯示對話方塊,確認變更。按一下「確認」,完成變更。

gcloud

如要將標記附加至記錄儲存空間,請執行 gcloud resource-manager tags bindings create 指令,建立標記繫結:

gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_ID \
--parent=BUCKET_NAME \
--location=LOCATION

在上述指令中,請進行下列替換:

  • TAG_VALUE_ID:標記值的永久 ID 或命名空間名稱。例如,tagValues/4567890123。如要進一步瞭解標記 ID,請參閱「標記定義和 ID」。

  • BUCKET_NAME:記錄值區的名稱。例如://logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID

  • LOCATION:記錄值區的位置。

API

如要將標記附加至記錄檔儲存空間,請使用 tagBindings.create 方法。

Terraform

如要使用 Terraform 將標記附加至記錄值區,請執行下列其中一項操作:

然後執行 terraform apply 來套用變更。

查看附加至記錄值區的標記

如要查看附加至記錄水桶的標記,請按照下列步驟操作:

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往「Logs Storage」(記錄檔儲存空間) 頁面:

    前往「Logs Storage」(記錄檔儲存空間)

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

  2. 找出要查看標籤的記錄值區。

    「標記」欄會列出與記錄檔值區相關聯的標記。如要查看與記錄檔儲存空間相關聯的所有標記,請按一下「更多」按鈕,展開標記清單。

gcloud

執行 gcloud resource-manager tags bindings list 指令:

gcloud resource-manager tags bindings list \
--parent=BUCKET_NAME \
--location=LOCATION

在上述指令中,請進行下列替換:

  • BUCKET_NAME:記錄值區的名稱。例如://logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID

  • LOCATION:記錄值區的位置。

選用:如要查看記錄儲存空間繼承的標記,請新增 --effective 旗標。新增這個旗標後,系統會傳回類似下列內容的回應:

namespacedTagKey: 961309089256/environment
namespacedTagValue: 961309089256/environment/production
tagKey: tagKeys/417628178507
tagValue: tagValues/247197504380
inherited: true

如果所有標記都明確附加至記錄檔儲存空間,且沒有任何標記是繼承而來,則 inherited 欄位為 false,且會省略。

API

如要取得 bucket 的標記繫結清單,請使用 tagBindings.list 方法。

Terraform

您可以使用 Terraform 將標記附加至記錄 bucket。不過,您無法使用 Terraform 列出標記。

移除記錄 bucket 的標記

如要移除附加至記錄檔儲存空間的標記,必須刪除附加至記錄檔儲存空間的標記繫結。如要刪除標記,您必須先從所有附加資源中移除標記。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往「Logs Storage」(記錄檔儲存空間) 頁面:

    前往「Logs Storage」(記錄檔儲存空間)

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

  2. 找出要移除標記的記錄值區。

  3. 在記錄值區中,按一下「更多」圖示 ,然後按一下「編輯標記」

  4. 在對話方塊中,將指標懸停在要移除的標記上,然後按一下 「刪除項目」。按一下「儲存」以儲存變更。

  5. 系統會顯示對話方塊,確認變更。按一下「確認」,完成變更。

gcloud

執行 gcloud resource-manager tags bindings delete 指令:

gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_ID \
--parent=BUCKET_NAME \
--location=LOCATION

在上述指令中,請進行下列替換:

  • TAG_VALUE_ID:標記值的永久 ID 或命名空間限定名稱。 例如,tagValues/4567890123。如要進一步瞭解標記 ID,請參閱「標記定義和 ID」。

  • BUCKET_NAME:記錄值區的名稱。例如://logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID

  • LOCATION:記錄值區的位置。

API

如要移除記錄儲存區的標記,請使用 tagBindings.delete 方法。

Terraform

如要使用 Terraform 移除記錄檔儲存空間的標記,請刪除設定中的標記繫結資源,然後執行 terraform apply 來套用變更。

限制

  • 您無法使用 IAM 角色授權,控管主體在 Google Cloud 專案中列出記錄值區時,可查看哪些記錄值區。校長會看到完整清單或空白清單。不過,您可以使用 IAM 角色授權和 IAM 條件,限制主體可在記錄值區執行的動作。舉例來說,您可以限制主體是否可刪除特定記錄值區。

  • 如果您使用 Cloud Billing 資料匯出功能搭配 BigQuery,標記可能需要最多一小時才會匯出。如果標記是在一小時內新增或移除,或是記錄儲存空間存在時間不到一小時,則可能不會顯示在匯出檔案中。

自訂角色和角色授權 (附有 IAM 條件)

如果您打算使用自訂 IAM 角色,並將 IAM 條件附加至角色授權,則可能需要建立多個自訂角色。如果角色授權附加了 IAM 條件,部分 IAM 權限就會失效。

如果是 Cloud Logging,當角色授權包含 IAM 條件時,下列 IAM 權限會失效:

  • logging.buckets.list
  • logging.buckets.create

因此,您可能需要建立一個具有 listcreate 權限的角色,以及另一個包含其他特定儲存空間權限的角色。舉例來說,您可以建立包含 logging.buckets.deletelogging.buckets.update 權限的角色。

授予包含 listcreate 權限的角色時,請勿將 IAM 條件附加至角色授權。授予含有 deleteupdate 權限的角色後,您可以新增 IAM 條件,將授權限制為具有特定標記的資源。

後續步驟