本指南介绍如何创建和管理标记。标记是一种可以附加到 Google Cloud 资源的键值对。您可以使用标记,根据受支持的资源是否有特定标记,有条件地允许或拒绝政策。
准备工作
如需详细了解标记及其工作原理,请参阅标记概览。
所需权限
如需获得管理标记所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
针对标记附加到的资源的 Tag Viewer (
roles/resourcemanager.tagViewer) -
在组织级层查看和管理标记:针对组织的 Organization Viewer (
roles/resourcemanager.organizationViewer) -
创建、更新和删除标记定义:针对您要为其创建、更新或删除标记的资源的 Tag Administrator (
roles/resourcemanager.tagAdmin) -
在资源中附加和移除标记:针对标记值以及您要为其附加或移除标记值的资源的 Tag User (
roles/resourcemanager.tagUser)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建和定义新标记
标记由键值对组成,并关联到Google Cloud 层次结构中的资源。如需创建新标记,必须首先创建一个标记密钥,对所创建的标记进行说明。例如,您可能希望通过创建一个名为 environment 的键,为资源层次结构中的资源指定生产、测试和开发环境。
然后,您可以创建键可以具有的不同值。如果您创建了名为 environment 的标记键,则可能需要指定有三个可能的环境,然后为每个环境创建一个值:production、development、和 test。
在给定的组织或项目下,您最多可以创建 1,000 个键,每个键总共可以创建 1,000 个值。
最后,您可以将这些值关联到层次结构中的资源,后者随键值对携带关联。例如,您可以将 test 关联到组织中的多个测试环境文件夹,每个文件夹都将采用 environment: test 键值对。
创建标记
首先,您需要创建一个标记键。
标记键的 shortName 长度上限为 256 个字符。shortName 允许使用的字符集包括 UTF-8 编码的 Unicode 字符,但不得包含英文单引号 (')、英文双引号 (")、反斜杠 (\) 和正斜杠 (/)。
shortName 创建后不可更改,并且在同一个命名空间中必须唯一。
控制台
如需创建标记键,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择要在其下创建标记键的组织或项目。
点击 创建。
在标记键框中,输入标记键的显示名。它会成为标记的命名空间名称的一部分。
在标记键说明框中,输入标记键的说明。
如果要向此键添加标记值,请为您要创建的每个标记值点击 添加值。
在标记值框中,输入标记值的显示名。它会成为标记的命名空间名称的一部分。
在标记值说明框中,输入标记值的说明。
添加完标记值后,点击创建标记键。
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/123456789012、projects/test-project123或projects/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
使用 google_tags_tag_key 资源。
在使用 Terraform 创建标记键之前,请启用 Cloud Resource Manager API。
以下示例创建了名为 env 和 department 的标记键:
如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。
准备 Cloud Shell
- 启动 Cloud Shell。
-
设置要应用 Terraform 配置的默认 Google Cloud 项目。
您只需为每个项目运行一次以下命令,即可在任何目录中运行它。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。
准备目录
每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。
-
在 Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有
.tf扩展名,例如main.tf。在本教程中,该文件称为main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。
将示例代码复制到新创建的
main.tf中。(可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。
- 查看和修改要应用到您的环境的示例参数。
- 保存更改。
-
初始化 Terraform。您只需为每个目录执行一次此操作。
terraform init
(可选)如需使用最新的 Google 提供程序版本,请添加
-upgrade选项:terraform init -upgrade
应用更改
-
查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
terraform plan
根据需要更正配置。
-
通过运行以下命令并在提示符处输入
yes来应用 Terraform 配置:terraform apply
等待 Terraform 显示“应用完成!”消息。
- 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。
API
如需创建标记键,请创建该键的 JSON 表示法。如需详细了解标记键的格式,请参阅 TagKey 参考文档。
然后使用 tagKeys.create 方法:
POST https://cloudresourcemanager.googleapis.com/v3/tagKeys/ -d
请求 JSON 正文:
{
"parent": RESOURCE_ID,
"shortName": SHORT_NAME,
"description": DESCRIPTION,
}
其中:
创建键后,您可以找到一个名为 namespacedName 的唯一人类可读的显示名,该名称在其父级资源中具有命名空间,以及一个名为 name 的全局唯一永久 ID。
查看标记键
您可以使用创建时所显示的永久 ID 或命名空间名称来查找特定标记键的信息。
控制台
如需查看已创建的标记,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择包含您的代码的组织或项目。
所选组织或项目中的所有标记都会显示在列表中。 点击要查看其标记键的标记。
gcloud
如需显示与给定标记键相关的信息,请使用 gcloud resource-manager tags keys describe 命令:
gcloud resource-manager tags keys describe TAGKEY_NAME
TAGKEY_NAME 是您要显示其信息的标记键的永久 ID 或命名空间名称,例如 tagKeys/123456789012 或 project-id/environment。
您应该会看到如下所示的响应:
name: tagKeys/123456789012 short_name: environment namespaced_name: 123456789012/environment parent: organizations/123456789012
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。
添加标记值
创建标记键后,您就可以为该键添加接受的值。
您的标记值的 shortName 必须满足以下要求:
shortName的最大长度为 256 个字符。shortName必须以字母数字字符开头。shortName可以包含 UTF-8 编码的 Unicode 字符,但不得包含英文单引号 (')、英文双引号 (")、反斜杠 (\) 和正斜杠 (/)。shortName一旦创建便无法更改,并且在同一命名空间内必须是唯一的。
控制台
如需创建标记值,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择要在其下创建标记值的组织或项目。
在标记列表中,点击要添加新值的标记。
点击 添加值。
在标记值框中,输入标记值的显示名。它会成为标记的命名空间名称的一部分。
在标记值说明框中,输入标记值的说明。
点击保存。
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。
以下示例创建了名为 prod 和 sales 的标记值:
如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。
准备 Cloud Shell
- 启动 Cloud Shell。
-
设置要应用 Terraform 配置的默认 Google Cloud 项目。
您只需为每个项目运行一次以下命令,即可在任何目录中运行它。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。
准备目录
每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。
-
在 Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有
.tf扩展名,例如main.tf。在本教程中,该文件称为main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。
将示例代码复制到新创建的
main.tf中。(可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。
- 查看和修改要应用到您的环境的示例参数。
- 保存更改。
-
初始化 Terraform。您只需为每个目录执行一次此操作。
terraform init
(可选)如需使用最新的 Google 提供程序版本,请添加
-upgrade选项:terraform init -upgrade
应用更改
-
查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
terraform plan
根据需要更正配置。
-
通过运行以下命令并在提示符处输入
yes来应用 Terraform 配置:terraform apply
等待 Terraform 显示“应用完成!”消息。
- 打开您的 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 或命名空间名称来查找特定标记值的信息。
控制台
如需查看已创建的标记,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择包含您的代码的组织或项目。
您在此组织或项目下创建的所有标记都会显示在列表中。点击要查看其标记值的标记。
gcloud
如需显示与给定标记值相关的信息,请使用 gcloud resource-manager tags values describe 命令:
gcloud resource-manager tags values describe TAGVALUE_NAME
TAGVALUE_NAME 是标记值的永久 ID 或命名空间名称,例如 tagValues/4567890123 或 123456789012/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。如需详细了解标记使用的标识符类型,请参阅标记定义和标识符。
更新现有标记
您可以通过更新与标记关联的键或值来修改现有标记。您可以更新标记说明,但无法更新简称。
控制台
如需更新标记键的说明,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择包含您的标记键的组织或项目。
点击要更新的标记键旁边的 操作,然后点击查看详情。
点击屏幕顶部附近的说明旁边的 修改。
更新标记键的说明。
点击保存。
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 个字符。
您还可以更改标记值的说明。
控制台
如需更新标记值的说明,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择包含您的标记值的组织或项目。
点击要更新的值的标记键旁边的 操作,然后点击查看详情。
点击您要更新的标记值旁边的 操作,然后点击查看详情。
点击屏幕顶部附近的说明旁边的 修改。
更新标记值的说明。
点击保存。
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 调用来列出与特定组织或项目资源关联的所有标记键。
控制台
如需查看所有标记,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择包含您的标记的组织或项目。
您在此组织或项目下创建的所有标记都会显示在列表中。
gcloud
如需返回组织或项目资源下创建的所有标记键的列表,请使用 gcloud resource-manager tags keys list 命令:
gcloud resource-manager tags keys list --parent=RESOURCE_ID
RESOURCE_ID 是您要查找其包含的标记密钥的组织或项目资源的 ID。
- 组织 ID 或项目 ID 应采用
organizations/ORGANIZATION_ID或projects/PROJECT_NAME格式,例如organizations/123456789012和projects/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/123456789012 和 projects/test-project123。
列出标记值
您可以使用Google Cloud 控制台、gcloud CLI 或调用 API 来列出与特定标记键关联的所有标记值。
控制台
如需查看附加到某个标记键的所有标记值,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择包含标记键的组织或项目。
点击包含要查找的标记值的标记键旁边的 操作,然后点击查看详情。
列在此标记键下创建的所有标记值都会显示在列表中。
gcloud
如需返回关联到键的所有标记值的列表,请使用 gcloud resource-manager tags values list 命令:
gcloud resource-manager tags values list --parent=TAGKEY_NAME
TAGKEY_NAME 是您要查找其关联值的标记键的永久 ID 或命名空间名称,例如 tagKeys/123456789012 或 1234567/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 控制台向用户授予特定访问权限,以管理标记并将标记值附加到资源。如需查看与标记相关的角色及其包含的权限的列表,请参阅所需权限。
标记键
如需管理使用标记键的用户的访问权限,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择包含您要管理访问权限的标记键的组织或项目。
点击要管理其访问权限的标记旁边的复选框。
点击 管理访问权限。
如需向主账号添加角色,请点击 添加主账号。
在新的主账号文本框中,输入要授予新角色的主账号的电子邮件地址。
从选择角色下拉菜单中选择角色。如果要添加多个角色,请点击 添加其他角色。
点击保存。
要修改主账号的角色,请点击要修改的主账号旁边的 修改。
您可以点击角色下拉菜单并选择新角色,以更改在此标记上分配给主账号的任何角色。
如果要添加更多角色,请点击 添加其他角色。
如需在此标记上删除此主账号的角色,请点击要删除的角色旁边的 删除角色。
点击保存。
如需删除主账号的角色,请点击要删除的角色旁边的 删除角色。
- 点击移除。
标记值
如需管理使用标记值的用户,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择包含您要管理访问权限的标记键的组织或项目。
点击要管理其访问权限的值所对应的标记键旁边的 操作,然后点击查看详细信息。
点击 管理访问权限。
如需向主账号添加角色,请点击 添加主账号。
在新的主账号文本框中,输入要授予新角色的主账号的电子邮件地址。
从选择角色下拉菜单中选择角色。如果要添加多个角色,请点击 添加其他角色。
点击保存。
要修改主账号的角色,请点击要修改的主账号旁边的 修改。
您可以点击角色下拉菜单并选择新角色,以更改在此标记上分配给主账号的任何角色。
如果要添加更多角色,请点击 添加其他角色。
如需在此标记上删除此主账号的角色,请点击要删除的角色旁边的 删除角色。
点击保存。
如需删除主账号的角色,请点击要删除的角色旁边的 删除角色。
- 点击移除。
将标记关联到资源
创建标记并为该标记和资源授予访问权限后,该标记可以键值对的形式关联到 Google Cloud 资源。对于给定键,只能将一个值关联到资源。例如,如果关联了 environment: development,则不能关联 environment: production 或 environment: test。每个资源最多可以关联 50 个键值对。
通过创建可将值关联到 Google Cloud 资源的标记绑定资源,系统会将标记附加到资源。以下工作流介绍了如何将标记附加到组织、文件夹或项目资源。如需详细了解如何将标记附加到其他类型的资源,请参阅支持标记的服务中相应资源的文档。
控制台
如需将标记附加到组织、文件夹或项目资源,请执行以下操作:
在 Google Cloud 控制台中打开管理资源页面。
点击要向其附加标记的组织、文件夹或项目。
点击标记。
在标记面板中,点击选择范围。
选择包含您的代码的组织或项目,然后点击打开。
在标记面板中,选择添加标记。
在键字段中,从列表中选择要附加的标记的键。您可以通过输入关键字来过滤列表。
在值字段中,从列表中选择要附加的标记的值。您可以通过输入关键字来过滤列表。
如果要附加更多标记,请点击 添加标记,然后为每个标记选择键和值。
点击保存。
在确认对话框中,点击确认以附加标记。
系统会显示一条通知以确认您的标记已更新。新标记会显示在管理资源页面上的标记列下。
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/4567890123或12345678/environment/production。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。
列出关联到资源的所有标记
您可以获取附加到资源的所有标记的列表,包括继承的标记和直接附加的标记。
控制台
如需查看附加到资源或由资源继承的所有标记,请执行以下操作:
在 Google Cloud 控制台中打开管理资源页面。
在资源列表中查找您的组织、文件夹或项目。
附加到资源的标记会显示在标记列下。继承的标记将标记为继承。
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/7890123456LOCATION是资源的位置。如果要列出附加到全球性资源(例如文件夹或项目)的标记,则应省略此标志。如需将标记附加到区域级资源(例如 Compute Engine 实例),则必须指定位置,例如us-central1。
您应该会看到如下所示的响应:
name: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F7890123456/tagValues/567890123456 tagValue: tagValues/567890123456 resource: //cloudresourcemanager.googleapis.com/projects/7890123456
如果将 --effective 标志添加到 tags bindings list 命令,则也将返回此资源继承的所有标记的列表。您应该会看到如下所示的响应:
namespacedTagKey: 961309089256/environment namespacedTagValue: 961309089256/environment/production tagKey: tagKeys/417628178507 tagValue: tagValues/247197504380 inherited: true
如果资源上评估的所有标记都直接附加,则 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 resource: //cloudresourcemanager.googleapis.com/projects/7890123456
从资源分离标记
您可以通过删除标记绑定资源,从资源分离标记。
控制台
如需将标记与组织、文件夹或项目资源分离,请执行以下操作:
在 Google Cloud 控制台中打开管理资源页面。
点击要从中分离标记的组织、文件夹或项目。
点击标记。
在标记面板中,点击要分离的标记旁边的 删除项。
点击保存。
在确认对话框中,点击确认以分离标记。
系统会显示一条通知以确认您的标记已更新。更新后的标记列表会显示在管理资源页面上的标记列下。
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。RESOURCE_ID是资源的完整 ID。例如//cloudresourcemanager.googleapis.com/projects/7890123456LOCATION是资源的位置。如果要删除附加到全球性资源(例如文件夹或项目)的标记绑定,则应省略此标志。如需删除附加到区域级资源(例如 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。LOCATION是资源的区域端点,例如us-central1。
强制要求资源具有标记
如需在资源上强制执行强制性标记,请创建自定义组织政策,并在组织、文件夹或项目资源上设置该政策,以强制执行自定义限制条件。
如需详细了解标记强制执行,请参阅使用组织政策实现强制性标记。
设置自定义限制条件以强制执行标记
控制台
在 Google Cloud 控制台中,转到组织政策页面。
选择页面顶部的项目选择器。
在项目选择器中,选择要强制执行自定义限制条件的组织。
使用以下参数设置自定义限制:
- 强制执行方法:
Govern tags - 资源类型:您要强制执行必需标记的 Google CloudREST 资源的完全限定名称,例如
file.googleapis.com/Instance - 条件:一种通用表达式语言 (CEL) 条件,用于指定您要对资源强制执行的标记键,例如
resource.hasDirectTagKey("1234567890/owner")用于对标记键1234567890/owner强制执行标记绑定。resource.hasDirectTagKeyCEL 函数仅匹配直接应用于资源的标记,而不考虑从资源层次结构中的祖先继承的标记。 - 操作:
Allow或Deny。- 允许:如果满足指定条件,则允许执行创建或更新资源的操作。
- 拒绝:如果满足指定条件,则创建或更新资源的操作会被阻止。
- 强制执行方法:
点击创建限制条件。
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时要执行的操作。可以是ALLOW或DENY。拒绝操作意味着,如果满足指定条件,则创建或更新资源的操作会被阻止。
允许操作意味着,如果满足指定条件,则允许执行创建或更新资源的操作。这也意味着,除了条件中明确列出的情况之外,其他所有情况都会被阻止。
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。
删除标记
如需删除标记,必须删除其定义的每个组件。首先,您必须删除将此标记关联到层次结构中资源的所有标记绑定。如需了解如何删除标记绑定,请参阅从资源分离标记。
如果该标记被其他资源使用,或者用户手动创建了标记保留,您可能需要先移除标记保留并删除标记绑定,然后才能删除标记值。如需了解如何移除标记保留,请参阅移除标记保留。
一旦您想要删除的标记值没有标记绑定,就可以删除这些值。
控制台
如需删除标记值,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择包含您的标记值的组织或项目。
点击包含要删除的标记值的标记键旁边的 操作,然后点击查看详情。
在与此标记键关联的标记值列表中,点击要删除的标记值。
点击要删除的标记值旁边的复选框,然后点击 删除值。
点击确认。
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。
删除与某个键关联的所有标记值后,您便可以删除该键。
控制台
如需删除代码键,请执行以下操作:
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择包含您的标记键的组织或项目。
点击要删除的标记键旁边的复选框。
点击 删除标记。
点击确认。
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 条件有条件地为层次结构中的用户授予角色。此过程将使用户无法访问资源,直到附加了与条件政策关联的标记。例如,您可能希望要求开发者先为资源分配成本中心,然后才能使用资源。
创建一个标记,您可以利用该标记将资源与其他内容关联,从而确定资源是否已应用适当的治理。例如,您可以创建键为
costCenter且值为0001和0002等等的标记,以将资源与您公司的各种成本中心相关联。创建组织级自定义角色,以允许用户为您要求标记的资源添加标记。这会将这些权限授予组织中任意位置的指定主账号。
例如,允许用户为项目添加标记的自定义角色将包括以下权限:
resourcemanager.projects.getresourcemanager.hierarchyNodes.createresourcemanager.hierarchyNodes.deleteresourcemanager.hierarchyNodes.list
为开发者创建项目时,请为他们分配项目的此自定义角色。
向开发者分配包含权限的任何其他角色,以便他们在该项目中执行所需的任何操作。为用户授予项目的角色时,这些角色应始终有条件地被授予角色,以要求附加
costCenter标记。resource.hasTagKey('123456789012/costCenter')
现在,无论何时创建项目,您的开发者都必须为项目附加 costCenter 标记,然后他们才能在被授予允许政策的项目中执行操作。
组织政策和标记
您可以使用标记并有条件地执行组织政策,以便集中控制层次结构中的资源。如需了解详情,请参阅设置带有标记的组织政策。
系统代码
系统标记是由 Google 管理的标记, Google Cloud 服务可以将其绑定到资源。这些系统标记可以像资源上的任何其他标记绑定一样查看和使用,但无法在资源中进行修改或移除。系统标记键的短名称中包含 system: 前缀,并且在以 google 前缀开头的标记命名空间中进行管理。
| 标记键(命名空间名称) | 标记值 | 说明 |
|---|---|---|
google/system:sdp-data-sensitivity |
HIGH, MODERATE, LOW, UNKNOWN |
Sensitive Data Protection 服务可配置为自动附加到其分析的资源上的标记,用于指示所发现的资源数据敏感度级别。如需了解详情,请参阅在发现配置中启用自动添加标记功能。 |
支持的服务
如需查看支持标记的服务列表,请参阅支持标记的服务。