管理資源的標記


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

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

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

如要將標記附加至資源,您必須建立 TagBinding 資源,將標記值連結至 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

權限

如要管理 Compute Engine 資源的標記,請授予使用者和服務帳戶 tagUser 角色。如要進一步瞭解 tagUser 角色,請參閱「必要權限」。

支援的資源

Compute Engine 支援下列資源的標記:

  • 僅在建立資源後

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

為資源新增標記

您可以使用下列操作說明,在建立資源後將現有標籤附加至特定資源。

主控台

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

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

    前往 VM 執行個體

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

  3. 在「Name」欄中,按一下要新增代碼的 VM 名稱。

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

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

gcloud

如要查看如何使用這些標記的詳細操作說明,請參閱資源管理工具說明文件中的「將標記附加至資源」。

舉例來說,下列指令會將標記附加至 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:目標資源的區域,例如 us-central1
  • TAGVALUE_ID:標記值的數字 ID
  • PROJECT_NUMBER:專案的數字 ID
  • ZONE:可用區名稱,例如 us-central1-a
  • VM_ID:VM 執行個體的數字 ID

API

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

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

POST https://LOCATION-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:目標資源所屬的位置
  • PROJECT_NUMBER:專案的數字 ID
  • ZONE:可用區名稱,例如 us-central1-a
  • VM_ID:VM 的數字 ID
  • TAGVALUE_ID:已附加的標記值的永久 ID,例如:4567890123
  • TAGVALUE_NAMESPACED_NAME 是附加的標記值的命名空間名稱,格式如下:parentNamespace/tagKeyShortName/tagValueShortName

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

在某些情況下,您可能會想在建立資源時標記資源,而不是在資源建立後標記。舉例來說,您可能會在建立 Cloud Next Generation Firewall 資源時,為網路政策套用防火牆標記。

主控台

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

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

    前往 VM 執行個體

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

  3. 點選「建立執行個體」

  4. 按一下「管理代碼和標籤」

  5. 按一下「新增代碼」

  6. 按照側邊面板中的操作說明,選取要新增至執行個體的代碼。

  7. 按一下 [儲存]

  8. 完成「建立並啟動 VM 執行個體」中的其他步驟,即可完成建立執行個體的作業。

gcloud

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

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

更改下列內容:

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

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

API

請對以下網址提出 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:執行個體名稱
  • TAGKEY_ID:標記鍵數字 ID
  • TAGVALUE_ID:已附加的標記值的永久數字 ID,例如:4567890123

從資源中分離標記

您可以刪除標籤繫結資源,將標籤從資源中分離。

如要查看如何卸除標記的操作說明,請參閱資源管理工具說明文件中的「從資源中卸除標記」。

主控台

視資源類型而定,具體步驟可能會有些不同。舉例來說,下列步驟會從 VM 中卸離標記:

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

    前往 VM 執行個體

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

  3. 在「Name」欄中,按一下要新增代碼的 VM 名稱。

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

    1. 按一下 [編輯]
    2. 在「基本」部分,按一下「管理標記」,然後移除要為執行個體設定的標記。
    3. 按一下 [儲存]

gcloud

以下範例會使用 gcloud CLI 從 VM 中分離標記:

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

更改下列內容:

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

如要更新或取代現有標記繫結,請分離舊的標記繫結,然後附加新的標記繫結。

API

如要刪除已附加至 VM 等資源的標記繫結,請使用 tagBindings.delete 方法,並搭配資源所在的地區端點。

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

其中:

  • TAGBINDINGS_NAME 是 TagBinding 的永久 ID,例如 tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F1234567890/tagValues/567890123456

  • LOCATION 是資源的地區端點,例如 us-central1

查看資源附加的標記

如要查看列出標記的詳細操作說明,請參閱資源管理工具文件中的列出資源附加的標記

主控台

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

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

    前往 VM 執行個體

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

  3. 在「Name」欄中,按一下要查看代碼的 VM 名稱。

  4. 在「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
  • PROJECT_NUMBER:專案的數字 ID
  • ZONE:可用區名稱,例如 us-central1-a
  • VM_ID:VM 執行個體的數字 ID

如果您將 --effective 標記新增至 tags bindings list 指令,系統也會傳回此資源繼承的所有標記清單。您應該會收到類似以下的回應:

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

如果在資源上評估的所有代碼都已直接附加,則 inherited 欄位為 false,並會省略。

API

如要列出附加至地區性資源 (例如 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

後續步驟