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

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

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

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

事前準備

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

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

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

    這些預先定義的角色具備使用標記管理記錄水桶所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

    所需權限

    如要使用標記管理記錄檔 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. 如要取得管理記錄檔 bucket 的權限,請要求管理員授予您專案的記錄設定寫入者 (roles/logging.configWriter) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

    這個預先定義的角色具備 logging.buckets.list 權限,可管理記錄檔儲存空間。

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

將標記附加至記錄檔 bucket

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

Google Cloud 控制台

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

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

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

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

  3. 在記錄檔 bucket 上,按一下「更多」,然後按一下「編輯標記」

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

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

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

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

gcloud

如要將標記附加至記錄檔 bucket,請執行 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:記錄檔 bucket 的名稱,例如://logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID

  • LOCATION:記錄檔 bucket 的位置。

API

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

Terraform

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

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

查看附加至記錄檔 bucket 的標記

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

Google Cloud 控制台

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

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

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

  2. 找出要查看標記的記錄檔 bucket。

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

gcloud

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

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

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

  • BUCKET_NAME:記錄檔 bucket 的名稱,例如://logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID

  • LOCATION:記錄檔 bucket 的位置。

選用:如要查看記錄檔 bucket 繼承的標記,請新增 --effective 旗標。新增這個旗標會傳回類似下列內容的回應:

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

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

API

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

Terraform

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

移除記錄檔 bucket 的標記

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

Google Cloud 控制台

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

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

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

  2. 找出要移除標記的記錄檔 bucket。

  3. 在記錄檔 bucket 上,按一下「更多」,然後按一下「編輯標記」

  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:記錄檔 bucket 的名稱,例如://logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID

  • LOCATION:記錄檔 bucket 的位置。

API

如要移除記錄檔 Bucket 的標記,請使用 tagBindings.delete 方法。

Terraform

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

限制

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

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

自訂角色和角色授權 (附有 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 條件,將授權限制為具有特定標記的資源。

後續步驟