管理資源的標記


本指南說明如何建立及管理 Compute Engine 資源的標記。標記是可附加至資源的鍵/值組合。Google Cloud 標籤的用途包括:

  • 根據資源是否具備特定標記,有條件地允許或拒絕政策。
  • 在全域網路防火牆政策和區域網路防火牆政策中定義來源和目標。
  • 以邏輯方式整理資源。

建立標記並授予標記和資源適當的存取權後,即可將標記附加為鍵/值組合。針對特定鍵,您只能為資源附加一個值。舉例來說,如果您附加 environment: development 標記,就無法附加 environment: productionenvironment: test 標記。每個資源最多可附加 50 個鍵/值組合。

如要將標記附加至資源,您必須建立標記繫結資源,將標記值連結至 Google Cloud 資源。如要進一步瞭解標記及其運作方式,請參閱「標記總覽」一文。

事前準備

  • 請參閱 Resource Manager 說明文件中的標記總覽
  • 請參閱 Resource Manager 說明文件中的「建立及管理標記」。
  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,可以選取下列任一選項,向 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. 安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

    2. Set a default region and zone.

    REST

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

      安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

必要的角色

如要取得建立及管理 Compute Engine 資源標記所需的權限,請要求管理員在機構或專案中授予您下列 IAM 角色:

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

這些預先定義的角色具備建立及管理 Compute Engine 資源標記所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要建立及管理 Compute Engine 資源的標記,您必須具備下列權限:

  • 查看標記:
    • resourcemanager.tagKeys.get
    • resourcemanager.tagKeys.list
    • resourcemanager.tagValues.list
    • resourcemanager.tagValues.get
    • compute.instances.listTagBindings
    • compute.instances.listEffectiveTags
    • resourcemanager.projects.get
  • 建立代碼:
    • resourcemanager.tagKeys.create
    • resourcemanager.tagValues.create
    • resourcemanager.tagKeys.setIamPolicy
    • resourcemanager.tagValues.setIamPolicy
  • 管理標記:
    • resourcemanager.tagKeys.update
    • resourcemanager.tagValues.update
    • resourcemanager.tagKeys.delete
    • resourcemanager.tagValues.delete
    • resourcemanager.tagKeys.getIamPolicy
    • resourcemanager.tagValues.getIamPolicy
    • resourcemanager.tagKeys.setIamPolicy
    • resourcemanager.tagValues.setIamPolicy
  • 為運算執行個體新增或移除標記:
    • compute.instances.createTagBinding
    • compute.instances.deleteTagBinding
    • resourcemanager.tagValueBindings.create
    • resourcemanager.tagValueBindings.delete

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

支援的資源

Compute Engine 支援為下列資源加上標記:

  • 僅限資源建立後

    • 代管執行個體群組 (MIG)
    • 圖片
    • 快照
    • 大多數網路資源,例如網路、子網路、防火牆和健康狀態檢查資源。
  • 資源建立期間和之後:虛擬機器 (VM) 執行個體和磁碟

為資源新增標記

您可以將現有標記附加至特定資源。建立資源後,請按照下列操作說明為該資源附加標記。

主控台

視資源類型而定,實際步驟可能有所不同。舉例來說,下列步驟會將標記附加至 VM:

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 選取您的專案並點選 [繼續]

  3. 在「Name」(名稱) 欄中,按一下要新增標記的 VM 名稱。

  4. 在「VM 執行個體詳細資料」頁面上,完成下列步驟:

    1. 按一下 [編輯]
    2. 在「基本資訊」部分中,按一下「管理標記」,然後為執行個體新增所需標記。
    3. 按一下 [儲存]

gcloud

如要瞭解如何使用這些標記,請參閱 Resource Manager 說明文件中的「將標記附加至資源」。

舉例來說,下列指令會將標記附加至 VM:

gcloud resource-manager tags bindings create \
    --location LOCATION_NAME \
    --tag-value=tagValues/TAGVALUE_ID \
    --parent=//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID

更改下列內容:

  • LOCATION_NAME:包含目標資源的區域;在本例中,是 VM 執行個體的區域
  • TAGVALUE_ID:標記值的數值 ID
  • PROJECT_NUMBER:專案的數字 ID,其中包含目標資源
  • ZONE:包含目標資源的可用區;在本範例中,這是指 VM 執行個體的可用區
  • VM_IDVM 執行個體 ID

REST

如要將標記附加至資源,您必須先建立標記繫結的 JSON 表示法,其中包含標記值的永久 ID 或命名空間名稱,以及資源的永久 ID。如要進一步瞭解標記繫結的格式,請參閱tagBindings 參考資料

如要將標記附加至區域資源 (例如 VM 執行個體),請使用 tagBindings.create 方法,並搭配資源所在的區域端點。例如:

POST https://LOCATION_NAME-cloudresourcemanager.googleapis.com/v3/tagBindings

要求主體可以是下列其中一個選項:

{
  "parent": "//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID",
  "tagValue": "tagValue/TAGVALUE_ID"
}
{
  "parent": "//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID",
  "tagValueNamespacedName": TAGVALUE_NAMESPACED_NAME
}

更改下列內容:

  • LOCATION_NAME:包含目標資源的區域;在本範例中,為 VM 執行個體的區域
  • PROJECT_NUMBER:專案的數字 ID,其中包含目標資源
  • ZONE:包含目標資源的可用區;在本例中,這是指 VM 執行個體的可用區
  • VM_IDVM 執行個體 ID
  • TAGVALUE_ID:附加的標記值永久 ID,例如:4567890123
  • TAGVALUE_NAMESPACED_NAME:附加標記的值的命名空間名稱,格式為: parentNamespace/tagKeyShortName/tagValueShortName

在建立資源時為資源新增標記

在某些情況下,您可能想在建立資源時標記資源,而不是在資源建立後標記。

主控台

視資源類型而定,確切步驟可能會有所不同。以下步驟適用於 VM:

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 選取您的專案並點選 [繼續]

  3. 按一下「Create instance」(建立執行個體)。「建立執行個體」頁面隨即顯示,並顯示「機器設定」窗格。

  4. 在導覽選單中,按一下「進階」。在隨即顯示的「進階」窗格中,執行下列操作:

    1. 展開「管理標記和標籤」部分。
    2. 按一下「新增標記」
    3. 在隨即開啟的「標記」窗格中,按照操作說明將標記新增至執行個體。
    4. 按一下 [儲存]
  5. 指定執行個體的其他設定選項。詳情請參閱「建立執行個體時的設定選項」。

  6. 如要建立並啟動 VM,請按一下 [Create] (建立)

gcloud

如要在建立資源時附加標記,請使用相應的 create 指令新增 --resource-manager-tags 旗標。舉例來說,如要將標記附加至 VM,請使用下列指令:

  gcloud compute instances create INSTANCE_NAME \
      --zone=ZONE \
      --resource-manager-tags=tagKeys/TAGKEY_ID=tagValues/TAGVALUE_ID

更改下列內容:

  • INSTANCE_NAME:VM 執行個體的名稱
  • ZONE:包含 VM 執行個體的可用區
  • TAGKEY_ID:標記鍵編號數值 ID
  • TAGVALUE_ID:附加標記值的永久數字 ID,例如:4567890123

如要指定多個標記,請以半形逗號分隔,例如 TAGKEY1=TAGVALUE1,TAGKEY2=TAGVALUE2

REST

請對以下網址提出 POST 要求:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances

加入下列 JSON 要求內文:

{
  "name": INSTANCE_NAME,
  "params": {
    "resourceManagerTags": {
      "tagKeys/TAGKEY_ID": "tagValues/TAGVALUE_ID",
    },
  }
  // other fields omitted
}

更改下列內容:

  • INSTANCE_NAME:VM 執行個體的名稱
  • TAGKEY_ID:標記鍵編號數值 ID
  • TAGVALUE_ID:附加標記值的永久數字 ID,例如:4567890123

搭配防火牆規則使用標記

如要安全地啟用特定 Compute Engine 執行個體的網路流量,您可以將網路標記或安全標記套用至該執行個體。然後,您可以建立指定該標記的防火牆規則。這有助於大規模管理執行個體的存取權。

舉例來說,假設您有一個執行網路伺服器的運算執行個體,且您建立了一個新的網路應用程式,需要透過標準 HTTP 連接埠 (80) 公開存取。您可以使用網路或安全標記,導入防火牆規則,只允許網路伺服器執行的運算執行個體存取 HTTP。

如需瞭解如何建立標記以用於防火牆政策,請參閱下列內容:

  • 如要將網路標記與虛擬私有雲防火牆規則搭配使用,請參閱「新增網路標記」。
  • 如要搭配階層式防火牆政策、全域和區域網路防火牆政策使用安全標記,或是搭配使用虛擬私有雲網路對等互連連線的來源,請參閱「建立及管理安全標記」。

如要瞭解是否應使用服務帳戶或網路標記,定義網路輸入規則的目標和來源,請參閱「依服務帳戶篩選與依網路標記篩選的比較」。

從資源中卸離標記

如要從資源卸離標籤,請刪除標籤繫結資源。

如要查看如何分離標記的操作說明,請參閱資源管理員文件中的「從資源分離標記」。

主控台

視資源類型而定,實際步驟可能略有不同。舉例來說,下列步驟會從 VM 中分離標記:

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 選取您的專案並點選 [繼續]

  3. 在「名稱」欄中,按一下要移除標記的執行個體名稱。

  4. 在「VM 執行個體詳細資料」頁面上,完成下列步驟:

    1. 按一下 [編輯]
    2. 如果是資源管理工具代碼,請在「基本資訊」部分,按一下「管理代碼」。移除執行個體所需的標記。 您只能移除直接新增至執行個體的標記。
    3. 如要移除網路標記,請前往「Networking」(網路) 專區,然後從「Network tags」(網路標記) 清單中移除標記。
    4. 按一下 [儲存]

gcloud

如要從運算執行個體卸離標記,請使用 resource-manager tags bindings delete 指令

gcloud resource-manager tags bindings delete \
    --location LOCATION_NAME \
    --tag-value=tagValues/TAGVALUE_ID \
    --parent //compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID

更改下列內容:

  • LOCATION_NAME:目標資源的可用區,例如 us-central1-a
  • TAGVALUE_ID:標記鍵的數值 ID
  • PROJECT_NUMBER:專案的數字 ID,其中包含目標資源
  • ZONE:可用區名稱,例如 us-central1-a
  • INSTANCE_ID:運算例項的數值 ID

如要更新或將現有標記繫結替換為其他標記繫結,請先卸離舊的標記繫結,然後附加新的標記繫結。

REST

如要刪除附加至資源 (例如 Compute 執行個體) 的標記繫結,請使用tagBindings.delete 方法,並搭配資源所在的區域端點。

DELETE https://LOCATION-cloudresourcemanager.googleapis.com/v3/{name=TAGBINDINGS_NAME}

更改下列內容:

  • LOCATION:資源的區域端點,例如 us-central1
  • TAGBINDINGS_NAME:TagBinding 的永久 ID,例如: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F1234567890/tagValues/567890123456

查看附加至資源的標記

如要查看列出標記的詳細操作說明,請參閱資源管理員說明文件中的「列出附加至資源的所有標記」。

主控台

視資源類型而定,實際步驟可能略有不同。舉例來說,下列步驟說明如何查看 VM 的標記:

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 選取您的專案並點選 [繼續]

  3. 在「Name」(名稱) 欄中,按一下要查看標記的 VM 名稱。

  4. 在「VM instance」(VM 執行個體)詳細資料頁面中,找出「Tags」(標記) 部分下方的標記。

gcloud

如要取得直接附加至資源的標記繫結清單,請使用 gcloud resource-manager tags bindings list 指令。如果您新增 --effective 旗標,系統也會傳回這個資源繼承的標記清單。例如:

gcloud resource-manager tags bindings list \
    --location=LOCATION_NAME \
    --parent //compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID

更改下列內容:

  • LOCATION_NAME:目標資源的可用區,例如 us-central1-a
  • PROJECT_NUMBER:專案的數值 ID,其中包含目標資源
  • ZONE:可用區名稱,例如 us-central1-a
  • VM_ID:VM 執行個體的數值 ID

如果您在 tags bindings list 指令中加入 --effective 標記,也會傳回這個資源沿用的所有標記清單。

輸出結果會與下列內容相似:

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

如果資源上評估的所有標記都是直接附加,則 inherited 欄位為 false,且會省略。

REST

如要列出附加至地區資源 (例如 Compute Engine 執行個體) 的標籤繫結,請使用 tagBindings.list 方法,並搭配資源所在的地區端點。例如:

GET https://LOCATION_NAME-cloudresourcemanager.googleapis.com/v3/tagBindings

{
    "parent": "//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID"
}

更改下列內容:

  • LOCATION_NAME:目標資源的區域,例如 us-central1
  • PROJECT_NUMBER:包含目標資源的專案數值 ID
  • ZONE:可用區名稱,例如 us-central1-a
  • VM_ID:VM 執行個體的數值 ID

後續步驟