管理資源的標記

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

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

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

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

事前準備

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

    選取這個頁面上的分頁,瞭解如何使用範例:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。

    gcloud

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

      gcloud init

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

  • 設定預設地區和區域
  • REST

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

      安裝 Google Cloud CLI。

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

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

必要的角色

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

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

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

所需權限

如要建立及管理 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) 執行個體
    • 磁碟
    • 圖片
    • 快照
    • 虛擬私有雲網路
    • 虛擬私有雲子網路
    • 虛擬私有雲防火牆規則
    • 虛擬私有雲路徑
    • Cloud Router

為資源新增標記

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

控制台

視資源類型而定,實際步驟可能有所不同。舉例來說,下列步驟會將標記附加至 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=FULL_RESOURCE_NAME

更改下列內容:

  • LOCATION_NAME:執行個體所在的可用區。如果是全域性資源,請省略 --location 旗標。
  • TAGVALUE_ID:標記值的數值 ID
  • FULL_RESOURCE_NAME:目標資源的完整資源名稱。在本範例中,VM 執行個體的完整資源名稱為:

    //compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID
    

    更改下列內容:

    • PROJECT_NUMBER:包含目標資源的專案數值 ID
    • ZONE:包含執行個體的可用區
    • INSTANCE_IDVM 執行個體 ID

REST

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

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

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

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

{
  "parent": "FULL_RESOURCE_NAME",
  "tagValue": "tagValue/TAGVALUE_ID"
}
{
  "parent": "FULL_RESOURCE_NAME",
  "tagValueNamespacedName": TAGVALUE_NAMESPACED_NAME
}

更改下列內容:

  • LOCATION_NAME:資源的可用區或區域位置。如果是 VM 執行個體,請指定可用區。如果是全域性資源,請省略 LOCATION_NAME- 參數
  • FULL_RESOURCE_NAME:目標資源的完整資源名稱。在本範例中,VM 執行個體的完整資源名稱為:

    //compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID
    

    更改下列內容:

    • PROJECT_NUMBER:包含目標資源的專案數值 ID
    • ZONE:包含執行個體的可用區
    • INSTANCE_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. 在導覽選單中,按一下「進階」。在隨即顯示的「Advanced」(進階) 窗格中,執行下列操作:

    1. 展開「管理標記和標籤」部分。
    2. 按一下「新增標記」
    3. 在隨即開啟的「Tags」(標記) 窗格中,按照操作說明將標記新增至執行個體。
    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. 如要移除網路標記,請前往「網路」部分,然後從「網路標記」清單中移除標記。
    4. 按一下 [儲存]

gcloud

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

gcloud resource-manager tags bindings delete \
    --location=LOCATION_NAME \
    --tag-value=tagValues/TAGVALUE_ID \
    --parent=FULL_RESOURCE_NAME

更改下列內容:

  • LOCATION_NAME:執行個體所在的可用區。如果是全域性資源,請省略 --location=LOCATION_NAME \ 旗標
  • TAGVALUE_ID:標記值的數值 ID
  • FULL_RESOURCE_NAME:目標資源的完整資源名稱,在本例中為執行個體的完整資源名稱:

    //compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID
    

    更改下列內容:

    • PROJECT_NUMBER:包含目標資源的專案數值 ID
    • ZONE:包含執行個體的可用區
    • INSTANCE_ID執行個體 ID

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

REST

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

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

更改下列內容:

  • LOCATION_NAME:資源的可用區或區域位置。如果是執行個體,請指定區域。如果是全域性資源,請省略 LOCATION_NAME- 參數
  • TAGBINDINGS_NAME:TagBinding 的永久 ID,例如: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F1234567890/tagValues/567890123456

查看附加至資源的標記

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

控制台

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

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

    前往 VM 執行個體

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

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

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

gcloud

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

gcloud resource-manager tags bindings list \
    --location=LOCATION_NAME \
    --parent=FULL_RESOURCE_NAME

更改下列內容:

  • LOCATION_NAME:執行個體所在的可用區。如果是全域性資源,請省略 --location=LOCATION_NAME \ 旗標
  • FULL_RESOURCE_NAME:目標資源的完整資源名稱,在本例中為執行個體的完整資源名稱:

      //compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID
      

    更改下列內容:

    • PROJECT_NUMBER:包含目標資源的專案數值 ID
    • ZONE:包含執行個體的可用區
    • INSTANCE_ID執行個體 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": "FULL_RESOURCE_NAME"
}

更改下列內容:

  • LOCATION_NAME:資源的可用區或區域位置。如果是執行個體,請指定區域。如果是全域性資源,請省略 LOCATION_NAME- 參數
  • FULL_RESOURCE_NAME:目標資源的完整資源名稱,在本例中為執行個體的完整資源名稱:

      //compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID
      

    更改下列內容:

    • PROJECT_NUMBER:包含目標資源的專案數值 ID
    • ZONE:包含執行個體的可用區
    • INSTANCE_ID執行個體 ID

後續步驟