创建和管理标记

本指南介绍如何创建和管理标记。标记是一种可以关联到 Google Cloud 资源的键值对。您可以使用标记,根据受支持的资源是否有特定标记,有条件地允许或拒绝政策。

准备工作

如需详细了解标记及其工作原理,请参阅标记概览

所需的角色

如需获得管理标记所需的权限,请让您的管理员为您授予以下 IAM 角色:

  • 针对标记附加到的资源的 Tag Viewer (roles/resourcemanager.tagViewer)
  • 在组织级层查看和管理标记:针对组织的 Organization Viewer (roles/resourcemanager.organizationViewer)
  • 在资源中附加和移除标记:针对标记值以及您要为其附加或移除标记值的资源的 Tag User (roles/resourcemanager.tagUser)
  • 创建、更新和删除标记定义:针对您要为其创建、更新或删除标记的资源的 Tag Administrator (roles/resourcemanager.tagAdmin)

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

创建和定义新标记

标记是键值对,并附加到Google Cloud 层次结构中的资源。如需创建新标记,必须首先创建一个标记密钥,对所创建的标记进行说明。例如,您可能希望通过创建一个名为 environment 的键,为资源层次结构中的资源指定生产、测试和开发环境。

然后,您可以创建键可以具有的不同值。如果您创建了名为 environment 的标记键,则可能需要指定有三个可能的环境,然后为每个环境创建一个值:productiondevelopment、和 test

最后,您可以将这些标记关联到资源,后者随键值对携带关联。将标记键和值附加到资源也称为创建标记绑定。例如,您可以将 test 关联到组织中的多个测试环境文件夹,每个文件夹都将采用 environment: test 键值对。

您还可以创建标记键,以便用户在向资源添加标记绑定时动态指定值。这些值称为动态标记值(预览版)。 您可以为动态代码值配置验证规则,以便在用户附加资源时对他们创建的代码强制执行特定格式、值或限制。

如果无法预先定义每个可能的标记值,动态标记值就非常有用。例如,所有者应用 ID服务 ID成本中心等属性可以有数千个不同的值。手动预定义和维护如此庞大的标记值列表会带来巨大的管理负担。

代码键和值限制

您最多可以在给定组织或给定项目中创建 1,000 个标记键。这些限制是相互独立的;例如,在项目下创建的标记键不会计入组织节点的限制。如果您需要超出此默认值,可以提交支持请求,申请将每个组织或项目的标记键数量增加到 10,000 个。

对于预定义的标记值,默认情况下,您可以为每个标记键关联最多 1, 000 个值。您还可以通过支持请求将此限制提高到每个键 10,000 个标记值。不过,如果您使用的是动态标记值,则每个标记键允许的不同的标记值数量没有上限。

动态标记值不能用于 Identity and Access Management (IAM) 条件或组织政策服务限制条件。

创建标记键

首先,您需要创建一个标记键。

标记键的 shortName 长度上限为 256 个字符。shortName 允许使用的字符集包括 UTF-8 编码的 Unicode 字符,但不得包含英文单引号 (')、英文双引号 (")、反斜杠 (\) 和正斜杠 (/)。

shortName 创建后不可更改,并且在同一个命名空间中必须唯一。

控制台

如需创建标记键,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择要在哪个组织或项目下创建标记键。

  3. 点击 创建

  4. 标记键框中,输入标记键的显示名。它会成为标记的命名空间名称的一部分。

  5. 标记键说明框中,输入标记键的说明。

  6. 标记值部分,点击预定义的值以创建允许值的固定列表。

  7. 为您要创建的每个值点击 添加值

  8. 标记值框中,输入标记值的显示名。它会成为标记的命名空间名称的一部分。

  9. 标记值说明框中,输入标记值的说明。

  10. 添加完标记值后,点击创建标记键

gcloud

如需创建标记键,请使用 gcloud resource-manager tags keys create 命令:

gcloud resource-manager tags keys create SHORT_NAME \
    --parent=RESOURCE_ID

其中:

  • SHORT_NAME 是标记键的显示名,例如 environment

  • RESOURCE_ID 是相应标记键的父组织或项目资源的 ID,例如:organizations/123456789012projects/test-project123projects/234567890123。如需了解如何获取组织 ID,请参阅创建和管理组织。 如需了解如何获取项目 ID,请参阅创建和管理项目

您应该会看到如下所示的响应:

Creating tag key environment in organization 1234567890...
<blocking wait until creation completes>
name: tagKeys/123456789012
short_name: environment
namespaced_name: 123456789012/environment
parent: organizations/123456789012

Terraform

在使用 Terraform 创建标记键之前,请启用 Cloud Resource Manager API

您可以使用 google_tags_tag_key 资源创建标记键。

resource "google_tags_tag_key" "key" {
  parent = "<var>RESOURCE</var>"
  short_name = "<var>KEY_SHORT_NAME</var>"
  description = "<var>DESCRIPTION</var>"
}

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

API

如需创建标记键,请创建该键的 JSON 表示法。如需详细了解标记键的格式,请参阅 TagKey 参考文档

然后使用 tagKeys.create 方法:

POST https://cloudresourcemanager.googleapis.com/v3/tagKeys/ -d

请求 JSON 正文:

{
    "parent": RESOURCE_ID,
    "shortName": SHORT_NAME,
    "description": DESCRIPTION,
}

其中:

  • SHORT_NAME 是标记键的显示名,例如 environment

  • RESOURCE_ID 是相应标记键的父组织或项目资源的 ID,例如:organizations/123456789012projects/test-project123projects/234567890123。如需了解如何获取组织 ID,请参阅创建和管理组织。 如需了解如何获取项目 ID,请参阅创建和管理项目

  • DESCRIPTION 是键的说明,长度不超过 256 个字符。

创建键后,您可以找到一个名为 namespacedName 的唯一人类可读的显示名,该名称在其父级资源中具有命名空间,以及一个名为 name 的全局唯一永久 ID。

创建具有动态键值的标记键

如需创建支持动态值的标记键,请使用以下方法之一:

控制台

如需创建标记键,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择要在哪个组织或项目下创建标记键。

  3. 点击 创建

  4. 标记键框中,输入标记键的显示名。它会成为标记的命名空间名称的一部分。

  5. 标记键说明框中,输入标记键的说明。

  6. 标记值部分,点击动态值,然后点击 添加值限制

  7. 定义一个验证正则表达式,以检查动态创建的标记值的格式。仅允许使用与您提供的格式匹配的值。默认情况下,正则表达式会匹配所有值,例如 .*

  8. 定义验证正则表达式后,点击创建标记键

gcloud

gcloud resource-manager tags keys create SHORT_NAME \
    --parent=RESOURCE_ID \
    --allowed-values-regex=VALID_REGEX

替换以下内容:

  • SHORT_NAME:标记键的显示名,例如 environment

  • RESOURCE_ID:相应标记键的父组织或项目资源的 ID;例如:organizations/123456789012projects/test-project123projects/234567890123。如需了解如何获取组织 ID,请参阅创建和管理组织。 如需了解如何获取项目 ID,请参阅创建和管理项目

  • VALID_REGEX:采用 RE2 语法的正则表达式,用于定义与新创建的标记键相关联的标记值的允许格式(仅用于验证动态值)。如需允许指定任何值,请使用正则表达式 .*

您应该会看到如下所示的响应:

allowedValuesRegex: '[abc]'
name: tagKeys/123456789012
shortName: environment
namespacedName: 123456789012/environment
parent: organizations/123456789012

Terraform

在使用 Terraform 创建标记键之前,请启用 Cloud Resource Manager API

您可以使用 google_tags_tag_key 资源创建支持动态值的标记键。

resource "google_tags_tag_key" "key" {
  parent = "organizations/123456789"
  short_name = "keyname"
  description = "For keyname resources."
  allowed_values_regex = "^[a-z]+$"
}

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

替换以下内容:

API

如需创建支持动态标记值的标记键,请创建该键的 JSON 表示法。如需详细了解标记键的格式,请参阅 TagKey 参考文档

然后使用 tagKeys.create 方法:

POST https://cloudresourcemanager.googleapis.com/v3/tagKeys/

请求 JSON 正文:

{
    "parent": RESOURCE_ID,
    "shortName": SHORT_NAME,
    "description": DESCRIPTION,
    "allowedValuesRegex": VALID_REGEX
}

替换以下内容:

  • RESOURCE_ID:相应标记键的父级组织或项目资源的 ID;例如:organizations/123456789012projects/test-project123projects/234567890123。如需了解如何获取组织 ID,请参阅创建和管理组织。 如需了解如何获取项目 ID,请参阅创建和管理项目

  • SHORT_NAME:标记键的显示名,例如:environment

  • DESCRIPTION:密钥的说明,长度不超过 256 个字符。

  • VALID_REGEX:一个正则表达式,用于定义与新创建的标记键关联的标记值的允许格式。

创建键后,您可以找到一个名为 namespacedName 的唯一人类可读的显示名,该名称在其父级资源中具有命名空间,以及一个名为 name 的全局唯一永久 ID。

查看标记键

您可以使用创建时所显示的永久 ID 或命名空间名称来查找特定标记键的信息。

控制台

如需查看已创建的标记,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择包含您的代码的组织或项目。

  3. 所选组织或项目中的所有标记都会显示在列表中。 点击要查看其标记键的标记。

gcloud

如需显示与给定标记键相关的信息,请使用 gcloud resource-manager tags keys describe 命令:

gcloud resource-manager tags keys describe TAGKEY_NAME

TAGKEY_NAME 是您要显示其信息的标记键的永久 ID 或命名空间名称,例如 tagKeys/123456789012project-id/environment

您应该会看到如下所示的响应:

name: tagKeys/123456789012
short_name: environment
namespaced_name: 123456789012/environment
parent: organizations/123456789012

对于具有动态值的标记,响应还包含 allowedValuesRegex 字段,该字段显示用于验证在将标记应用于资源时输入的任何动态标记值的 RE2 正则表达式。

API

如需显示与指定标记键相关的信息,请使用 tagKeys.get 方法:

GET https://cloudresourcemanager.googleapis.com/v3/{name=TAGKEY_NAME}

TAGKEY_NAME 是您要显示其信息的标记键的永久 ID,例如 tagKeys/123456789012

如需使用指定标记键的命名空间名称显示与该标记键相关的信息,请使用 tagKeys.getNamespaced 方法:

GET https://cloudresourcemanager.googleapis.com/v3/tagKeys/namespaced?name={TAGKEY_NAMESPACED_NAME}

TAGKEY_NAMESPACED_NAME 是标记键的命名空间名称,格式为 parentNamespace/tagKeyShortName

对于具有动态值的标记,响应还包含 allowedValuesRegex 字段,该字段显示用于验证在将标记应用于资源时输入的任何动态标记值的 RE2 正则表达式。

添加标记值

创建标记键后,您就可以为该键添加接受的值。

您的标记值的 shortName 必须满足以下要求:

  • shortName 的最大长度为 256 个字符。

  • shortName 必须以字母数字字符开头。

  • shortName 可以包含 UTF-8 编码的 Unicode 字符,但不得包含英文单引号 (')、英文双引号 (")、反斜杠 (\) 和正斜杠 (/)。

  • shortName 一旦创建便无法更改,并且在同一命名空间内必须是唯一的。

控制台

如需添加标记值,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择要在其下创建标记值的组织或项目。

  3. 在标记列表中,点击要添加新值的标记。

  4. 标记值部分,点击预定义的值以创建允许值的固定列表。

  5. 为您要创建的每个值点击 添加值

  6. 标记值框中,输入标记值的显示名。它会成为标记的命名空间名称的一部分。

  7. 标记值说明框中,输入标记值的说明。

  8. 点击保存

gcloud

如需创建标记键,请使用 gcloud resource-manager tags values create 命令。您必须指定创建此值所基于的键:

gcloud resource-manager tags values create TAGVALUE_SHORTNAME \
    --parent=TAGKEY_NAME

其中:

  • TAGVALUE_SHORTNAME 是新标记值的简称,例如 production

  • TAGKEY_NAME 是父标记键的永久 ID 或命名空间名称,例如 tagKeys/4567890123

您应该会看到如下所示的响应:

Creating tag value production in tag key 123456789012/environment...
<blocking wait until creation completes>
name: tagValues/7890123456
short_name: production
namespaced_name: 123456789012/environment/production
parent: tagKeys/123456789012

Terraform

使用 google_tags_tag_value 资源。

在使用 Terraform 创建标记值之前,请启用 Cloud Resource Manager API

以下示例创建了名为 prodsales 的标记值:

data "google_project" "default" {}

resource "google_tags_tag_key" "env_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "env1"
}

resource "google_tags_tag_key" "department_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "department1"
}

resource "google_tags_tag_value" "env_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.env_tag_key.name}"
  short_name = "prod"
}

resource "google_tags_tag_value" "department_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.department_tag_key.name}"
  short_name = "sales"
}

如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。

准备 Cloud Shell

  1. 启动 Cloud Shell
  2. 设置要应用 Terraform 配置的默认 Google Cloud 项目。

    您只需为每个项目运行一次以下命令,即可在任何目录中运行它。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。

准备目录

每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。

  1. Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有 .tf 扩展名,例如 main.tf。在本教程中,该文件称为 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。

    将示例代码复制到新创建的 main.tf 中。

    (可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。

  3. 查看和修改要应用到您的环境的示例参数。
  4. 保存更改。
  5. 初始化 Terraform。您只需为每个目录执行一次此操作。
    terraform init

    (可选)如需使用最新的 Google 提供程序版本,请添加 -upgrade 选项:

    terraform init -upgrade

应用更改

  1. 查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
    terraform plan

    根据需要更正配置。

  2. 通过运行以下命令并在提示符处输入 yes 来应用 Terraform 配置:
    terraform apply

    等待 Terraform 显示“应用完成!”消息。

  3. 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。

API

如需创建标记值,请创建该值的 JSON 表示法。如需详细了解标记值的格式,请参阅 TagValue 参考

然后使用 tagValues.create 方法:

POST https://cloudresourcemanager.googleapis.com/v3/tagValues/ -d

请求 JSON 正文:

{
    "parent": TAGKEY_NAME,
    "shortName": SHORT_NAME,
    "description": DESCRIPTION,
}

其中:

  • TAGKEY_NAME 是父标记键的永久 ID,例如 tagKeys/4567890123

  • SHORT_NAME 是标记值的显示名,例如 environment

  • DESCRIPTION 是值的说明,长度不超过 256 个字符。

创建值后,您可以找到一个名为 namespacedName 的唯一人类可读的显示名,该名称在其父级资源中具有命名空间,以及一个名为 name 的全局唯一永久 ID。

向动态标记键添加标记值

对于支持动态标记值的标记键,请在将标记附加到资源时提供标记值。系统会根据为相应标记键定义的验证正则表达式检查动态值。如果您提供的值与配置的验证正则表达式不匹配,系统会显示错误。

资源会从其父资源继承动态标记值绑定。

请注意,支持动态标记值的标记键不能同时具有预定义的标记值。

检索标记值

您可以使用创建时所显示的永久 ID 或命名空间名称来查找特定标记值的信息。这仅适用于预定义的标记值,而不适用于动态标记值。

控制台

如需查看已创建的标记,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择包含您的代码的组织或项目。

  3. 您在此组织或项目下创建的所有标记都会显示在列表中。点击要查看其标记值的标记。

gcloud

如需显示与给定标记值相关的信息,请使用 gcloud resource-manager tags values describe 命令:

gcloud resource-manager tags values describe TAGVALUE_NAME

TAGVALUE_NAME 是标记值的永久 ID 或命名空间名称,例如 tagValues/4567890123123456789012/environment/production

您应该会看到如下所示的响应:

name: tagValues/456789012345
short_name: production
namespaced_name: 123456789012/environment/production
parent: tagKeys/123456789012

API

如需显示与给定标记值相关的信息,请使用 tagValues.get 方法:

GET https://cloudresourcemanager.googleapis.com/v3/{name=TAGVALUE_NAME}

TAGVALUE_NAME 是标记值的永久 ID,例如 tagValues/4567890123

如需使用给定标记值的命名空间名称显示与该标记值相关的信息,请使用 tagValues.getNamespaced 方法:

GET https://cloudresourcemanager.googleapis.com/v3/tagValues/namespaced?name={TAGVALUE_NAMESPACED_NAME}

TAGVALUE_NAMESPACED_NAME 是标记值的命名空间名称,格式为 parentNamespace/tagKeyShortName/tagValueShortName

使用 Google Cloud CLI 引用标记时,您可以针对标记键和值使用命名空间名称或永久 ID。对 API(getNamespaced 除外)的调用只应使用永久 ID。如需详细了解标记使用的标识符类型,请参阅标记定义和标识符

更新现有标记

您可以通过更新与标记关联的键或值来修改现有标记。您可以更新标记说明,但无法更新简称。对于具有动态值的标记,您可以更新说明和验证正则表达式,以定义与标记键关联的标记值的允许格式。对 allowed_values_regex 字段的更改不会追溯应用,也不会影响相应标记键的现有标记绑定。

控制台

如需更新标记键的说明,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择包含您的标记键的组织或项目。

  3. 点击要更新的标记键旁边的 操作,然后点击查看详情

  4. 点击屏幕顶部附近的说明旁边的 修改

  5. 根据您要更新的内容,选择以下选项之一:

    • 说明:点击说明旁边的 修改
    • 用于验证的正则表达式:点击用于验证的正则表达式旁边的 修改
  6. 在随即打开的编辑面板中,更新说明或在允许的值正则表达式字段中输入新模式。

  7. 点击保存

gcloud

要修改标记键说明,请使用 gcloud resource-manager tags keys update 命令:

gcloud resource-manager tags keys update TAGKEY_NAME \
    --description=NEW_DESCRIPTION

其中:

  • TAGKEY_NAME 是要更新的键的永久 ID 或命名空间名称,例如 tagKeys/123456789012

  • NEW_DESCRIPTION 是一个字符串,不超过 256 个字符,用作新说明。

您应该会看到如下所示的响应:

name: tagKeys/123456789012
short_name: environment
namespaced_name: 123456789012/environment
description: "new description"
parent: organizations/123456789012

API

如需修改标记键说明,请使用 tagKeys.patch 方法:

PATCH https://cloudresourcemanager.googleapis.com/v3/{tagKey.name=TAGKEY_NAME} -d

请求 JSON 正文:

{
    "description": DESCRIPTION,
}

其中:

  • TAGKEY_NAME 是标记键的永久 ID,例如 tagKeys/123456789012

  • DESCRIPTION 是键的说明,长度不超过 256 个字符。

您还可以更改标记值的说明。

控制台

如需更新标记值的说明,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择包含您的标记值的组织或项目。

  3. 点击要更新的值的标记键旁边的 操作,然后点击查看详情

  4. 点击您要更新的标记值旁边的 操作,然后点击查看详情

  5. 点击说明旁边的 修改,然后修改标记值的说明。

  6. 点击保存

gcloud

要修改标记值说明,请使用 gcloud resource-manager tags values update 命令:

gcloud resource-manager tags values update TAGVALUE_NAME \
    --description="NEW_DESCRIPTION"

其中:

  • TAGVALUE_NAME 是要更新的标记值的永久 ID 或命名空间名称,例如 tagValues/4567890123

  • NEW_DESCRIPTION 是一个字符串,不超过 256 个字符,用作新说明。

您应该会看到如下所示的响应:

short_name: production
namespaced_name: 123456789012/environment/production
parent: tagKeys/123456789012
description: "new description"

API

如需修改标记值说明,请使用 tagValues.patch 命令:

PATCH https://cloudresourcemanager.googleapis.com/v3/{tagKey.name=TAGVALUE_NAME} -d

请求 JSON 正文:

{
    "description": DESCRIPTION,
}

其中:

  • TAGVALUE_NAME 是标记值的永久 ID 名称,例如 tagValues/4567890123

  • DESCRIPTION 是键的说明,长度不超过 256 个字符。

列出标记键

您可以使用 Google Cloud 控制台、gcloud CLI 或通过调用 API 来列出与特定组织或项目资源关联的所有标记键。

控制台

如需查看所有标记,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择包含您的标记的组织或项目。

  3. 您在此组织或项目下创建的所有标记都会显示在列表中。

gcloud

如需返回组织或项目资源下创建的所有标记键的列表,请使用 gcloud resource-manager tags keys list 命令:

gcloud resource-manager tags keys list --parent=RESOURCE_ID

RESOURCE_ID 是您要查找其包含的标记密钥的组织或项目资源 ID。

  • 组织 ID 或项目 ID 应采用 organizations/ORGANIZATION_IDprojects/PROJECT_NAME 格式,例如 organizations/123456789012projects/test-project123。如需了解如何获取组织 ID,请参阅创建和管理组织。 如需了解如何获取项目 ID,请参阅创建和管理项目。 您应该会看到如下所示的响应:
NAME                     SHORT_NAME      DESCRIPTION
tagKeys/123456789012     environment     description of tag key

API

如需返回给定资源的所有标记键的列表,请使用 tagKeys.list 方法,并在查询中指定父资源:

GET https://cloudresourcemanager.googleapis.com/v3/tagKeys

{
    "parent": "RESOURCE_ID"
}

RESOURCE_ID 是您要查找其关联标记键的组织或项目资源的 ID,例如:organizations/123456789012projects/test-project123

列出标记值

您可以使用Google Cloud 控制台、gcloud CLI 或调用 API 来列出与特定标记键关联的所有标记值。

对于支持动态值的标记键,控制台会显示用户定义的验证正则表达式,而不是在标记键下创建的标记值列表。

gcloud CLI 命令和 REST API 仅提取预定义的标记值,而不提取动态标记值。

控制台

如需查看附加到某个标记键的所有标记值,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择包含标记键的组织或项目。

  3. 点击包含要查找的标记值的标记键旁边的 操作,然后点击查看详情

  4. 您在此标记键下创建的所有标记值都会显示在列表中。 对于动态标记键,您将看到为此标记键定义的验证正则表达式,而不是单个值的列表。

gcloud

如需返回关联到键的所有标记值的列表,请使用 gcloud resource-manager tags values list 命令:

gcloud resource-manager tags values list --parent=TAGKEY_NAME

TAGKEY_NAME 是您要查找其关联值的标记键的永久 ID 或命名空间名称,例如 tagKeys/1234567890121234567/environment

您应该会看到如下所示的响应:

NAME                     SHORT_NAME
tagValues/123456789012   production

API

如需返回关联到键的所有标记值的列表,请使用 tagValues.list 方法,并在查询中指定父标记键:

GET https://cloudresourcemanager.googleapis.com/v3/tagValues

{
    "parent": "TAGKEY_NAME"
}

TAGKEY_NAME 是标记键的永久 ID 名称,例如 tagKeys/123456789012

管理对标记的访问权限

您可以使用 Google Cloud 控制台向用户授予特定访问权限,以管理标记并将标记值附加到资源。如需查看与标记相关的角色及其包含的权限的列表,请参阅所需权限

标记键

如需管理使用标记键的用户的访问权限,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择包含您要管理访问权限的标记键的组织或项目。

  3. 点击要管理其访问权限的标记旁边的复选框。

  4. 点击 管理访问权限

  5. 如需向主账号添加角色,请点击 添加主账号

    1. 新的主账号文本框中,输入要授予新角色的主账号的电子邮件地址。

    2. 选择角色下拉菜单中选择角色。如果要添加多个角色,请点击 添加其他角色

    3. 点击保存

  6. 要修改主账号的角色,请点击要修改的主账号旁边的 修改

    1. 您可以点击角色下拉菜单并选择新角色,以更改在此标记上分配给主账号的任何角色。

    2. 如果要添加更多角色,请点击 添加其他角色

    3. 如需在此标记上删除此主账号的角色,请点击要删除的角色旁边的 删除角色

    4. 点击保存

  7. 如需删除主账号的角色,请点击要删除的角色旁边的 删除角色

    1. 点击移除

标记值

如需管理使用标记值的用户,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择包含您要管理访问权限的标记键的组织或项目。

  3. 点击要管理其访问权限的值所对应的标记键旁边的 操作,然后点击查看详细信息

  4. 点击 管理访问权限

  5. 如需向主账号添加角色,请点击 添加主账号

    1. 新的主账号文本框中,输入要授予新角色的主账号的电子邮件地址。

    2. 选择角色下拉菜单中选择角色。如果要添加多个角色,请点击 添加其他角色

    3. 点击保存

  6. 要修改主账号的角色,请点击要修改的主账号旁边的 修改

    1. 您可以点击角色下拉菜单并选择新角色,以更改在此标记上分配给主账号的任何角色。

    2. 如果要添加更多角色,请点击 添加其他角色

    3. 如需在此标记上删除此主账号的角色,请点击要删除的角色旁边的 删除角色

    4. 点击保存

  7. 如需删除主账号的角色,请点击要删除的角色旁边的 删除角色

    1. 点击移除

将标记附加到资源

创建标记并为该标记和资源授予访问权限后,该标记可以键值对的形式关联到 Google Cloud 资源。对于给定键,只能将一个值关联到资源。例如,如果关联了 environment: development,则不能关联 environment: productionenvironment: test。每个资源最多可以关联 50 个键值对。

通过创建可将值关联到 Google Cloud 资源的标记绑定资源,系统会将标记附加到资源。以下工作流介绍了如何将标记附加到组织、文件夹或项目资源。如需详细了解如何将标记附加到其他类型的资源,请参阅支持标记的服务中相应资源的文档。

控制台

如需将标记附加到组织、文件夹或项目资源,请执行以下操作:

  1. 在 Google Cloud 控制台中打开管理资源页面。

    打开“管理资源”页面

  2. 点击要向其附加标记的组织、文件夹或项目。

  3. 点击标记

  4. 标记面板中,点击选择范围

  5. 选择包含代码的组织或项目,然后点击打开

  6. 标记面板中,选择添加标记

  7. 字段中,从列表中选择要附加的标记的键。您可以通过输入关键字来过滤列表。

  8. 对于具有预定义值的标记,请从下拉菜单中选择要附加的值。您可以通过输入关键字来过滤列表。

  9. 对于具有动态值的标记,请输入与为相应标记键配置的验证正则表达式匹配的字符串。

  10. 如果要附加更多标记,请点击 添加标记,然后为每个标记选择键和值。

  11. 点击保存

  12. 确认对话框中,点击确认以附加标记。

  13. 系统会显示一条通知以确认您的标记已更新。新标记会显示在管理资源页面上的标记列下。

gcloud

如需将标记关联到资源,您必须使用 gcloud resource-manager tags bindings create 命令创建标记绑定资源:

gcloud resource-manager tags bindings create \
--tag-value=TAGVALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION

其中:

  • TAGVALUE_NAME 是要附加的标记值的永久 ID 或命名空间名称,例如 tagValues/456789012312345678/environment/production。对于具有动态值的标记,请仅提供命名空间名称,因为动态标记值没有 ID。

  • RESOURCE_ID 是资源的完整 ID,包括用于标识资源类型的 API 域名 (//cloudresourcemanager.googleapis.com/)。例如,如需将标记关联到 projects/7890123456,则完整 ID 将为 //cloudresourcemanager.googleapis.com/projects/7890123456

  • LOCATION 是资源的位置。如果要将标记附加到全球性资源(例如文件夹或项目),则应省略此标志。如需将标记附加到区域级资源(例如 Compute Engine 实例),则必须指定位置,例如 us-central1

API

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

如果要将标记附加到全球性资源(例如组织),请使用带有全球端点主机名的 tagBindings.create 方法:

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

如需将标记附加到区域级资源(例如 Compute Engine 实例),请使用 tagBindings.create 方法并使用资源所在的区域端点。

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

请求 JSON 正文:

{
    "parent": RESOURCE_ID,
    "tagValue": TAGVALUE_NAME,
}

{
    "parent": RESOURCE_ID,
    "tagValueNamespacedName": TAGVALUE_NAMESPACED_NAME,
}

其中:

  • RESOURCE_ID 是资源的完整 ID,包括用于标识资源类型的 API 域名 (//cloudresourcemanager.googleapis.com/)。例如,如需将标记关联到 projects/7890123456,则完整 ID 将为 //cloudresourcemanager.googleapis.com/projects/7890123456

  • TAGVALUE_NAME 是所附加的标记值的永久 ID,例如 tagValues/4567890123

  • TAGVALUE_NAMESPACED_NAME 是所附加的标记值的命名空间名称,格式为 parentNamespace/tagKeyShortName/tagValueShortName。只能使用命名空间名称附加具有动态值的标记,因为动态标记值没有 ID。

修改资源上的标记

您可以通过以下方式执行批量操作来修改标记:

  • 清除所有标记绑定:从资源中移除所有现有标记绑定。
  • 替换标记绑定:将资源上的所有现有标记绑定替换为一组新的键值对。
  • 移除标记绑定:从资源中移除特定标记绑定。

如需清除、替换和移除标记绑定,您可以使用 gcloud CLI 中的 gcloud alpha resource-manager tags bindings update 命令,也可以使用 API 中的 locations.tagBindingCollections.patch 方法。

使用 gcloud CLI

gcloud CLI 提供了以下用于修改标记绑定的选项:

从资源中移除所有标记

如需从资源中移除所有标记,请将 --clear-tags 标志与 gcloud alpha resource-manager tags bindings update 命令结合使用。

gcloud

gcloud alpha resource-manager tags bindings update \
    --resource-name=RESOURCE_NAME \
    --clear-tags

RESOURCE_NAME 替换为资源的完整资源名称。

从资源中移除特定标记

如需从资源中移除特定标记,请将 --remove-tags 标志与 gcloud alpha resource-manager tags bindings update 命令搭配使用。

gcloud

gcloud alpha resource-manager tags bindings update \
    --resource-name=RESOURCE_NAME \
    --remove-tags=TAG_KEY_NAMESPACED_NAME

替换以下内容:

  • RESOURCE_NAME:要移除的标记绑定的完整资源名称。
  • TAG_KEY_NAMESPACED_NAME:标记键的命名空间名称(例如 123456789012/environmentmy-project-123/cost-center)。

您可以采用英文逗号分隔列表的形式指定多个标记键命名空间名称。例如:--remove-tags=123456789012/environment,my-project-123/cost-center

替换代码

如需将资源上的所有现有标记绑定替换为新的键值对,请将 --replace-tags 标志与 gcloud alpha resource-manager tags bindings update 命令搭配使用。

gcloud

gcloud alpha resource-manager tags bindings update \
    --resource-name=RESOURCE_NAME \
    --replace-tags=TAG_KEY_NAMESPACED_NAME=TAG_VALUE_SHORT_NAME

替换以下内容:

  • RESOURCE_NAME:资源的完整资源名称。
  • TAG_KEY_NAMESPACED_NAME:标记键的命名空间名称(例如 123456789012/environmentmy-project-123/cost-center)。
  • TAG_VALUE_SHORT_NAME:标记值的简称。

您可以采用英文逗号分隔列表的形式指定多个键值对。例如:--replace-tags=123456789012/environment=dev,my-project-123/cost-center=frontend

使用 API

locations.tagBindingCollections.patch 方法的请求正文接受表示标记映射的 JSON 对象,其中键和值均为字符串。API 使用此映射执行所有标记操作(包括清除、替换和移除),作为单个批量操作。该 API 仅支持 PUT 语义。当您发送请求时,API 会将附加到资源的所有当前绑定替换为您在请求映射中提供的新绑定集。

当您向 API 发送标记映射时,API 会根据资源的当前标记对其进行处理,如下所示:

  • 清除:发送空标记映射 ({}) 会从资源中移除所有现有标记绑定。
  • 移除:系统会移除资源上未包含在您提供的标记映射中的任何现有键值对。
  • 替换:非空标记映射会将资源上的所有现有标记替换为您提供的新标记。

列出附加到资源的所有标记

您可以获取附加到资源的所有标记的列表,包括继承的标记和直接附加的标记。

控制台

如需查看附加到资源或由资源继承的所有标记,请执行以下操作:

  1. 在 Google Cloud 控制台中打开管理资源页面。

    打开“管理资源”页面

  2. 在资源列表中查找您的组织、文件夹或项目。

  3. 附加到资源的标记会显示在标记列下。继承的标记将标记为已继承

gcloud

如需获取直接附加到资源的标记绑定列表,请使用 gcloud resource-manager tags bindings list 命令。如果添加 --effective 标志,您还会返回此资源继承的标记列表。

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

其中:

  • RESOURCE_ID 是资源的完整 ID,例如 //cloudresourcemanager.googleapis.com/projects/7890123456

  • LOCATION 是资源的位置。如果要列出附加到全球性资源(例如文件夹或项目)的标记,则应省略此标志。如需将标记附加到区域级资源(例如 Compute Engine 实例),则必须指定位置,例如 us-central1

您应该会看到如下所示的响应:

对于预定义代码:

tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2FPROJECT_NUMBER%2Flocations%2FLOCATION%2Fresources%2FRESOURCE_ID/tagValues/TAG_VALUE_ID
parent: //cloudresourcemanager.googleapis.com/projects/123456789012/locations/us-central1/example-resource/res-01
tagValue: tagValues/987654321098
tagValueNamespacedName: 961309089256/environment/production

对于具有动态值的标记:

tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2FPROJECT_NUMBER%2Flocations%2FLOCATION%2Fresources%2FRESOURCE_ID/tagKeys/TAG_KEY_ID
parent: //cloudresourcemanager.googleapis.com/projects/123456789012/locations/us-central1/example-resource/res-01
tagValueNamespacedName: your-org-id/environment/staging

对于具有动态值的标记,响应中不包含 tagValue 字段,仅填充 tagValueNamespacedName

如果将 --effective 标志添加到 tags bindings list 命令,则也将返回此资源继承的所有标记的列表。您应该会看到如下所示的响应:

对于预定义代码:

inherited: true
namespacedTagKey: 433637338589/environment
namespacedTagValue: 433637338589/environment/production
tagKey: tagKeys/162008917964
tagKeyParentName: organizations/433637338589
tagValue: tagValues/281482214193975

对于具有动态值的标记:

inherited: true
namespacedTagKey: my-sample-org/dynamic-key
namespacedTagValue: my-sample-org/dynamic-key/staging
tagKey: tagKeys/281476834141096
tagKeyParentName: projects/357710452272

如果资源上评估的所有标记都直接附加,则 inherited 字段为 false 且被省略。

API

如需获取直接附加到全球性资源(例如组织)的标记绑定列表,请使用 tagBindings.list 方法,并在查询中指定父级资源:

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

{
    "parent": "RESOURCE_ID"
}

如需列出附加到区域级资源(例如 Compute Engine 实例)的标记绑定,请使用 tagBindings.list 方法并使用资源所在的区域端点。

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

{
    "parent": "RESOURCE_ID"
}

其中:

  • RESOURCE_ID 是资源的完整 ID,例如 //cloudresourcemanager.googleapis.com/projects/7890123456

  • LOCATION 是资源的区域端点,例如 us-central1

如果成功,则响应正文应包含 TagBinding 对象的列表。例如:

name: tagBindings/cloudresourcemanager.googleapis.com/projects/7890123456/567890123456
tagValue: tagValues/567890123456
tagValueNamespacedName: example-org/cost-center/1000
resource: //cloudresourcemanager.googleapis.com/projects/7890123456

对于具有动态值的标记,响应中不包含 tagValue 字段,仅填充 tagValueNamespacedName

将标记与资源分离

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

控制台

如需将标记与组织、文件夹或项目资源分离,请执行以下操作:

  1. 在 Google Cloud 控制台中打开管理资源页面。

    打开“管理资源”页面

  2. 点击要从中分离标记的组织、文件夹或项目。

  3. 点击标记

  4. 标记面板中,点击要分离的标记旁边的 删除项

  5. 点击保存

  6. 确认对话框中,点击确认以分离标记。

  7. 系统会显示一条通知以确认您的标记已更新。更新后的标记列表会显示在管理资源页面上的标记列下。

gcloud

如需删除标记绑定,请使用 gcloud resource-manager tags bindings delete 命令:

gcloud resource-manager tags bindings delete \
--tag-value=TAGVALUE_NAME \
--parent=RESOURCE_ID \
--location=LOCATION

其中:

  • TAGVALUE_NAME 是所附加的标记值的永久 ID 或命名空间名称,例如 tagValues/567890123456。对于具有动态值的标记,请仅提供命名空间名称,因为动态标记值没有 ID。

  • RESOURCE_ID 是资源的完整 ID。例如 //cloudresourcemanager.googleapis.com/projects/7890123456

  • LOCATION 是资源的位置。如果要删除附加到全球性资源(例如文件夹或项目)的标记绑定,则应省略此标志。如需删除附加到区域级资源(例如 Compute Engine 实例)的标记绑定,则必须指定位置,例如 us-central1

API

如需删除附加到全球性资源(例如组织)的标记绑定,请使用 tagBindings.delete 方法:

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

如需删除附加到区域级资源(例如 Compute Engine 实例)的标记绑定,请使用 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。对于具有动态值的标记,格式为 tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F1234567890/tagKeys/12345678

  • LOCATION 是资源的区域端点,例如 us-central1

强制要求资源具有标记

如需在资源上强制执行标记,请创建自定义组织政策,并在组织、文件夹或项目资源上设置该政策,以强制执行自定义限制条件。

如需详细了解标记强制执行,请参阅使用组织政策实现强制性标记

设置自定义限制条件以强制执行标记

控制台

  1. 在 Google Cloud 控制台中,转到组织政策页面。

    转到组织政策

  2. 选择页面顶部的项目选择器。

  3. 在项目选择器中,选择要强制执行自定义限制条件的组织。

  4. 使用以下参数设置自定义限制

    • 强制执行方法Govern tags
    • 资源类型:您要强制执行必需标记的 Google CloudREST 资源的完全限定名称,例如 file.googleapis.com/Instance
    • 条件:一种通用表达式语言 (CEL) 条件,用于指定您要对资源强制执行的标记键,例如 resource.hasDirectTagKey("1234567890/owner") 用于对标记键 1234567890/owner 强制执行标记绑定。resource.hasDirectTagKey CEL 函数仅匹配直接应用于资源的标记,而不考虑从资源层次结构中的祖先继承的标记。
    • 操作AllowDeny
      • 允许:如果满足指定条件,则允许执行创建或更新资源的操作。
      • 拒绝:如果满足指定条件,则创建或更新资源的操作会被阻止。
  5. 点击创建限制条件

gcloud

为自定义限制条件创建 YAML 文件:

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- RESOURCE_NAME
methodTypes:
- GOVERN_TAGS
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

请替换以下内容:

  • ORGANIZATION_ID:您的组织 ID,例如 1234567890

  • CONSTRAINT_NAME:新的自定义限制条件的名称。 自定义限制条件必须以 custom. 开头,只能包含大写字母、小写字母或数字,例如 custom.enforceMandatoryTags

  • RESOURCE_NAME:要强制执行必需标记的Google Cloud REST 资源的完全限定名称,例如 file.googleapis.com/Instance

  • CONDITION:一种通用表达式语言 (CEL) 条件,用于指定您要对资源强制执行的标记键,例如 resource.hasDirectTagKey("1234567890/owner") 用于对标记键 1234567890/owner 强制执行标记绑定。

  • ACTION:满足 condition 时要执行的操作。可以是 ALLOWDENY

    拒绝操作意味着,如果满足指定条件,则创建或更新资源的操作会被阻止。

    允许操作意味着,如果满足指定条件,则允许执行创建或更新资源的操作。这也意味着,除了条件中明确列出的情况之外,其他所有情况都会被阻止。

  • DISPLAY_NAME:限制条件的直观易记名称。 此字段的最大长度为 200 个字符。

  • DESCRIPTION:直观易懂的限制条件说明,在违反政策时显示为错误消息。 此字段的最大长度为 2,000 个字符。

设置自定义限制条件,以使其可用于组织中的组织政策。

定义自定义限制条件后,您可以测试和分析组织政策更改,并强制执行限制条件

使用标记保留功能保护标记值

标记保留是一种资源,您可以创建该资源来防止标记值被删除。如果标记值具有标记保留,则用户无法删除该标记值,除非先删除标记保留。

标记保留不能应用于动态标记值。

创建标记保留

您可以使用 gcloud CLI 或 API 手动创建标记保留。

gcloud

如需创建标记保留,请使用 gcloud resource-manager tags holds create gcloud CLI 命令:

  gcloud resource-manager tags holds create TAGVALUE_NAME \
  --holder=HOLDER_NAME \
  --location=LOCATION

其中:

  • TAGVALUE_NAME 是要为其创建相应标记保留的标记值的永久 ID 或命名空间名称,例如 tagValues/567890123456

  • HOLDER_NAME 是附加标记值的资源的名称。必须少于 200 个字符。

  • LOCATION 是资源的位置。如果您要为全球性资源(例如Google Cloud 项目)创建标记保留,则应省略此标志。如果您要为区域级或可用区级资源创建标记保留,则必须指定位置,例如:us-central1

API

如需为标记值创建标记保留,您必须先创建标记保留的 JSON 表示法。此 JSON 引用必须包含对附加了相应标记值的资源的引用。如需详细了解标记保留的格式,请参阅 TagHolds 参考文档

如果您要为附加到全球性资源(例如组织)的标记值创建标记保留,请使用带有全球端点主机名的 tagHolds.create 方法:

POST https://cloudresourcemanager.googleapis.com/v3/tagValues/TAGVALUE_NAME/tagHolds

如果您要为附加到区域级资源(例如 Compute Engine 实例)的标记值创建标记保留,请使用 tagHolds.create 方法并使用资源所在的区域端点。

POST https://LOCATION-cloudresourcemanager.googleapis.com/v3/TAGVALUE_NAME/tagHolds

请求 JSON 正文:

{
    "holder":HOLDER_NAME,
    "origin":ORIGIN_NAME
}

其中:

  • TAGVALUE_NAME 是所附加的标记值的永久 ID,例如 tagValues/4567890123

  • HOLDER_NAME 是附加标记值的资源的名称。必须少于 200 个字符。

  • ORIGIN_NAME 是一个可选字符串,表示相应请求的来源。此字段应包含人类可理解的信息,以便区分各个来源。必须少于 200 个字符。

列出标记保留

您可以使用 gcloud CLI 或 API 列出特定标记值下的所有标记保留。

gcloud

如需列出标记值下的标记保留,请使用 gcloud resource-manager tags holds list gcloud CLI 命令:

  gcloud resource-manager tags holds list TAGVALUE_NAME \
  --location=LOCATION

其中:

  • TAGVALUE_NAME 是标记值的永久 ID 或命名空间名称,例如 tagValues/567890123456

  • LOCATION 是资源的位置。如果您要查找全局创建的标记保留,则应省略此标志。如果您要查找区域级或可用区级资源下的标记保留,则必须指定位置,例如:us-central1

API

如需获取标记值下的标记保留列表,请使用 tagHolds GET 方法,并在网址中指定父标记值:

GET https://cloudresourcemanager.googleapis.com/v3/{TAGVALUE_NAME}/tagHolds

其中:

  • TAGVALUE_NAME 是标记值的永久 ID 或命名空间名称,例如 tagValues/567890123456

移除标记保留

您可以使用 gcloud CLI 或 API 移除针对特定标记值创建的标记保留。

某些资源会向附加到该资源的标记值添加标记保留。如果您将标记附加到此类资源,资源会创建标记保留,以防止用户删除附加的标记值。

您可以使用 gcloud CLI 或 API 删除标记保留。

gcloud

如需删除标记保留,请使用 gcloud resource-manager tags holds delete gcloud CLI 命令:

  gcloud resource-manager tags holds delete TAGHOLD_NAME \
  --location=LOCATION

其中:

  • TAGHOLD_NAME 是标记保留的命名空间名称,可以使用 list 命令找到。 例如:tagValues/1012910994523/tagHolds/d1c8f5e2-2954-43d6-8f46-5f812ab48c37

  • LOCATION 是资源的位置。如果要删除附加到全球性资源(例如文件夹或项目)的标记值下的标记保留,则应省略此标志。如果要删除通过区域级或可用区级流程创建的标记保留,则必须指定位置,例如:us-central1

API

如需删除标记值,请使用 tagHolds.delete 方法:

DELETE https://cloudresourcemanager.googleapis.com/v3/{TAGVALUE_NAME}/tagHolds/{TAGHOLD_NAME}

其中:

  • TAGVALUE_NAME 是您要删除的标记保留所附加的标记值的永久 ID,例如 tagValues/567890123456

  • TAGHOLD_NAME 是您要删除的标记保留的命名空间名称,可以使用 list 命令找到该名称。例如:tagValues/1012910994523/tagHolds/d1c8f5e2-2954-43d6-8f46-5f812ab48c37

删除标记

如需删除标记,必须删除其定义的每个组件。首先,您必须删除将此标记关联到层次结构中资源的所有标记绑定。如需了解如何删除标记绑定,请参阅从资源分离标记

如果该标记被其他资源使用,或者用户手动创建了标记保留,您可能需要先移除标记保留并删除标记绑定,然后才能删除标记值。如需了解如何移除标记保留,请参阅移除标记保留

一旦您想要删除的标记值没有标记绑定,就可以删除这些值。

控制台

如需删除标记值,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择包含您的标记值的组织或项目。

  3. 点击包含要删除的标记值的标记键旁边的 操作,然后点击查看详情

  4. 在与此标记键关联的标记值列表中,点击要删除的标记值。

  5. 点击要删除的标记值旁边的复选框,然后点击 删除值

  6. 点击确认

gcloud

如需删除标记值,请使用 gcloud resource-manager tag values delete 命令:

gcloud resource-manager tags values delete TAGVALUE_NAME

TAGVALUE_NAME 是您要删除的标记值的永久 ID 或命名空间名称,例如 tagValues/567890123456

API

如需删除标记值,请使用 tagValues.delete 方法:

DELETE https://cloudresourcemanager.googleapis.com/v3/{name=TAGVALUE_NAME}

TAGVALUE_NAME 是您要删除的标记值的永久 ID,例如 tagValues/567890123456

删除与某个键关联的所有标记值后,您便可以删除该键。对于具有动态值的标记,必须先删除所有关联的绑定,然后才能删除标记键。

控制台

如需删除代码键,请执行以下操作:

  1. 在 Google Cloud 控制台中打开标记页面。

    打开“标记”页面

  2. 在页面顶部的范围选择器中,选择包含您的标记键的组织或项目。

  3. 点击要删除的标记键旁边的复选框。

  4. 点击 删除标记

  5. 点击确认

gcloud

如需删除标记键,请使用 gcloud resource-manager tags keys delete 命令:

gcloud resource-manager tags keys delete TAGKEYS_NAME

TAGKEYS_NAME 是您要删除的标记键的永久 ID 或命名空间名称,例如 tagKeys/123456789012

API

如需删除标记键,请使用 tagKeys.delete 方法:

DELETE https://cloudresourcemanager.googleapis.com/v3/{name=TAGKEYS_NAME}

TAGKEYS_NAME 是您要删除的标记键的永久 ID,例如 tagKeys/123456789012

政策和标记

您可以使用将标记与政策配合使用,以支持标记有条件地强制执行这些政策。您可以将是否存在标记值作为该政策的条件。

例如,您可以根据资源是否具有特定标记,有条件地授予 Identity and Access Management (IAM) 角色

Identity and Access Management 条件和标记

您可以使用标记和 Identity and Access Management 条件有条件地为层次结构中的用户授予角色。此过程将使用户无法访问资源,直到附加了与条件政策关联的标记。例如,您可能希望要求开发者先为资源分配成本中心,然后才能使用资源。

  1. 创建一个标记,您可以利用该标记将资源与其他内容关联,从而确定资源是否已应用适当的治理。例如,您可以创建键为 costCenter 且值为 00010002 等等的标记,以将资源与您公司的各种成本中心相关联。

  2. 创建组织级自定义角色,以允许用户为您要求标记的资源添加标记。这会将这些权限授予组织中任意位置的指定主账号。

    例如,允许用户为项目添加标记的自定义角色将包括以下权限:

    • resourcemanager.projects.get
    • resourcemanager.hierarchyNodes.create
    • resourcemanager.hierarchyNodes.delete
    • resourcemanager.hierarchyNodes.list
  3. 为开发者创建项目时,请为他们分配项目的此自定义角色。

  4. 向开发者分配包含权限的任何其他角色,以便他们在该项目中执行所需的任何操作。为用户授予项目的角色时,这些角色应始终有条件地被授予角色,以要求附加 costCenter 标记。

    resource.hasTagKey('123456789012/costCenter')
    

现在,无论何时创建项目,您的开发者都必须为项目附加 costCenter 标记,然后他们才能在被授予允许政策的项目中执行操作。

组织政策和标记

您可以使用标记并有条件地执行组织政策,以便集中控制层次结构中的资源。如需了解详情,请参阅设置带有标记的组织政策

系统代码

系统标记是由 Google 管理的标记, Google Cloud 服务可以将其绑定到资源。这些系统标记可以像资源上的任何其他标记绑定一样进行查看和使用,但无法修改或从资源中移除。系统标记键的简称中包含 system: 前缀,并且在以 google 前缀开头的标记命名空间中进行管理。

标记键(命名空间名称) 标记值 说明
google/system:sdp-data-sensitivity HIGH, MODERATE, LOW, UNKNOWN Sensitive Data Protection 服务可配置为自动附加到其分析的资源上的标记,用于指示所发现的资源数据敏感度级别。如需了解详情,请参阅在发现配置中启用自动添加标记功能

支持的服务

如需查看支持标记的服务列表,请参阅支持标记的服务