管理资源标记


本指南介绍如何创建和管理 Compute Engine 资源的标记。标记是一种可以附加到 Google Cloud Platform 资源的键值对。标记具有多种用途,包括:

  • 根据资源是否有特定标记,视条件允许或拒绝政策。
  • 在全球网络防火墙政策和区域级网络防火墙政策中定义来源和目标。
  • 按逻辑组织资源

创建标记并向该标记和资源授予相应的访问权限后,您能够以键值对的形式附加该标记。对于给定键,您只能将一个值附加到资源。例如,如果您附加了 environment: development 标记,则无法附加 environment: productionenvironment: test 标记。每个资源最多可以关联 50 个键值对。

如需将标记附加到资源,您必须创建将标记值关联到 Google Cloud 资源的 TagBinding 资源。如需详细了解标记及其工作原理,请参阅标记概览

准备工作

  • 阅读 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
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

权限

如需管理 Compute Engine 资源的标记,用户和服务账号应具有 tagUser 角色。如需详细了解 tagUser 角色,请参阅所需权限

支持的资源

以下资源仅在创建资源支持标记:

  • 虚拟机实例
  • 磁盘
  • 托管式实例组
  • 映像
  • 快照
  • 大多数网络资源,例如网络、子网、防火墙和 HealthCheck 资源。

以下资源还支持在资源创建期间进行标记:

  • 虚拟机实例
  • 磁盘

向资源添加标记

创建资源后,您可以按照以下说明将现有标记附加到某些资源。

控制台

根据资源类型,确切的步骤可能略有不同。例如,以下步骤会将标记附加到虚拟机:

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

  2. 选择您的项目并点击继续

  3. 名称列中,点击要为其添加标记的虚拟机的名称。

  4. 虚拟机实例详情页面中,完成以下步骤:

    1. 点击修改
    2. 基本部分中,点击管理标记并为实例添加所需的标记。
    3. 点击保存

gcloud

如需查看有关如何使用这些标志的详细说明,请参阅 Resource Manager 文档中的将标记附加到资源

例如,以下命令会将标记附加到虚拟机:

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:虚拟机实例的数字 ID

API

要将标记附加到资源,必须首先创建标记绑定的 JSON 表示法,其中包含标记值的永久 ID 或命名空间名称以及资源的永久 ID。如需详细了解标记绑定的格式,请参阅 TagBinding 参考文档

如需将标记附加到可用区级资源(例如虚拟机实例),请将 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:虚拟机的数字 ID
  • TAGVALUE_ID:所附加的标记值的永久 ID,例如 4567890123
  • TAGVALUE_NAMESPACED_NAME 是所附加的标记值的命名空间名称,格式为 parentNamespace/tagKeyShortName/tagValueShortName

在创建资源期间向资源添加标记

在某些情况下,建议您在创建资源期间标记资源,而不是在创建资源之后。例如,建议您在创建 Cloud 新一代防火墙资源时为网络政策应用防火墙标记。

控制台

根据资源类型,确切的步骤可能略有不同。 以下步骤适用于虚拟机:

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

  2. 选择您的项目并点击继续

  3. 点击创建实例

  4. 点击管理标记和标签

  5. 点击添加标记

  6. 按照侧边栏中的说明选择要添加到实例的标记。

  7. 点击保存

  8. 完成创建并启动虚拟机实例中的其他步骤,以完成实例的创建。

gcloud

如需在资源创建期间将标记附加到资源,请在相应的 create 命令后添加 --resource-manager-tags 标志。例如,如需将标记附加到虚拟机,请使用以下命令:

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

从资源分离标记

您可以通过删除标记绑定资源,从资源分离标记。

如需查看有关如何分离标记的说明,请参阅 Resource Manager 文档中的从资源分离标记

控制台

根据资源类型,确切的步骤可能略有不同。例如,以下步骤可将标记与虚拟机分离:

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

  2. 选择您的项目并点击继续

  3. 名称列中,点击要为其添加标记的虚拟机的名称。

  4. 虚拟机实例详情页面中,完成以下步骤:

    1. 点击修改
    2. 基本部分中,点击管理标记并为实例移除所需标记。
    3. 点击保存

gcloud

以下示例使用 gcloud CLI 从虚拟机分离标记:

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:虚拟机实例的数字 ID

如需将现有标记绑定更新或替换为其他标记绑定,请分离旧标记绑定并附加新标记绑定。

API

如需删除附加到资源(例如虚拟机)的标记绑定,请将 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

查看附加到资源的标记

如需查看有关如何列出标记的详细说明,请参阅 Resource Manager 文档中的列出附加到资源的标记

控制台

根据资源类型,确切的步骤可能略有不同。例如,以下步骤展示了如何查看虚拟机的标记:

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

  2. 选择您的项目并点击继续

  3. 名称列中,点击要查看其标记的虚拟机的名称。

  4. 虚拟机实例详情页面中的标记部分下,查找标记。

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:虚拟机实例的数字 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:虚拟机实例的数字 ID

后续步骤