本指南介绍如何创建和管理标记。标记是一种可以附加到 Google Cloud 资源的键值对。您可以使用标记,根据资源是否有特定标记,有条件地允许或拒绝政策。
准备工作
如需详细了解标记及其工作原理,请参阅标记概览。
所需权限
您需要的权限取决于您需要执行的操作。
如需获得这些权限,请让您的管理员在资源层次结构的适当级层授予建议的角色。
查看标记
如需查看标记定义和附加到资源的标记,您需要 Tag Viewer 角色 (roles/resourcemanager.tagViewer
) 或包含以下权限的其他角色:
所需权限
resourcemanager.tagKeys.get
resourcemanager.tagKeys.list
resourcemanager.tagValues.list
resourcemanager.tagValues.get
- 相应资源类型的
listTagBindings
。例如,用于查看附加到 Compute Engine 实例的标记的compute.instances.listTagBindings
。 listEffectiveTags
相应的资源类型。例如,
compute.instances.listEffectiveTags
用于查看附加到 Compute Engine 实例或由 Compute Engine 实例继承的所有标记。 管理标记
如需创建、更新和删除标记定义,您需要拥有 Tag Administrator 角色 (roles/resourcemanager.tagAdmin
) 或具备以下权限的其他角色:
所需权限
resourcemanager.tagKeys.create
resourcemanager.tagKeys.update
resourcemanager.tagKeys.delete
resourcemanager.tagKeys.list
resourcemanager.tagKeys.get
resourcemanager.tagKeys.getIamPolicy
resourcemanager.tagKeys.setIamPolicy
resourcemanager.tagValues.create
resourcemanager.tagValues.update
resourcemanager.tagValues.delete
resourcemanager.tagValues.list
resourcemanager.tagValues.get
resourcemanager.tagValues.getIamPolicy
resourcemanager.tagValues.setIamPolicy
管理资源上的标记
如需添加和移除附加至资源的标记,您需要对标记值以及您要附加标记值的资源都具有 Tag User 角色 (roles/resourcemanager.tagUser
) 或具有同等权限的其他角色。Tag User 角色包含以下权限:
所需权限
- 您要将标记值附加到的资源所需的权限
- 特定于资源的
createTagBinding
权限,例如 Compute Engine 实例的compute.instances.createTagBinding
。 - 特定于资源的
deleteTagBinding
权限,例如 Compute Engine 实例的compute.instances.deleteTagBinding
。 - 标记值所需的权限:
resourcemanager.tagValueBindings.create
resourcemanager.tagValueBindings.delete
- 可让您查看项目和标记定义的权限:
resourcemanager.tagValues.get
resourcemanager.tagValues.list
resourcemanager.tagKeys.get
resourcemanager.tagKeys.list
resourcemanager.projects.get
创建和定义新标记
标记由键值对组成,并附加到 Google Cloud 层次结构中的资源。若要创建新代码,您必须先创建一个说明所创建代码的代码键。例如,您可能想通过创建一个名为 environment
的密钥来为资源层次结构中的资源指定生产、测试和开发环境。
然后,您可以创建键可以具有的不同值。如果您创建了名为 environment
的标记键,则可能需要指定有三个可能的环境,然后为每个环境创建一个值:production
、development
、和 test
。
您最多可以在给定组织下创建 1000 个键,并且每个键总共可以创建 1000 个值。
最后,您可以将这些值关联到层次结构中的资源,后者随键值对携带关联。例如,您可以将 test
关联到组织中的多个测试环境文件夹,每个文件夹都将采用 environment: test
键值对。
创建标记
首先,您需要创建一个标记键。
标记键的 shortName
长度上限为 63 个字符。shortName
允许使用的字符集包括大写和小写字母数字(未进行国际化)、连字符、下划线和句点。shortName
必须以字母数字字符开头和结尾。shortName
创建后不可更改,并且在同一个命名空间中必须唯一。
控制台
如需创建标记键,请执行以下操作:
打开 Google Cloud 控制台中的标记页面。
选择页面顶部的项目选择器。
从组织选择器中选择您的组织。
点击
创建标记。在标记名称框中,输入标记键的显示名。它会成为标记的命名空间名称的一部分。
在标记说明框中,输入标记键的说明。
如果要向此键添加标记值,请为您要创建的每个标记值点击
添加值。在标记值框中,输入标记值的显示名。它会成为标记的命名空间名称的一部分。
在标记值说明框中,输入标记值的说明。
添加完标记值后,点击创建标记。
gcloud
如需创建标记键,请使用 gcloud resource-manager tags keys create
命令:
gcloud resource-manager tags keys create SHORT_NAME \ --parent=organizations/ORGANIZATION_ID
其中:
SHORT_NAME
是标记键的显示名,例如environment
。ORGANIZATION_ID
是作为此标记键的父资源的组织的 ID,例如123456789012
。如需了解如何获取组织 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
API
如需创建标记键,请创建该键的 JSON 表示法。如需详细了解标记键的格式,请参阅 TagKey 参考文档。
然后使用 tagKeys.create 方法:
POST https://cloudresourcemanager.googleapis.com/v3/tagKeys/ -d
请求 JSON 正文:
{ "parent": ORGANIZATION_ID, "shortName": SHORT_NAME, "description": DESCRIPTION, }
其中:
SHORT_NAME
是标记键的显示名,例如environment
。ORGANIZATION_ID
是作为此标记键的父资源的组织的 ID,例如organizations/123456789012
。如需了解如何获取组织 ID,请参阅创建和管理组织。DESCRIPTION
是键的说明,长度不超过 256 个字符。
创建密钥后,您可以找到名为 namespacedName
的人类可读唯一显示名称,该命名空间位于其父资源中,而全局唯一 ID 则是 name
。
查看标记键
您可以使用创建时所显示的永久 ID 或命名空间名称来查找特定标记键的信息。
控制台
如需查看已创建的标记,请执行以下操作:
打开 Google Cloud 控制台中的标记页面。
选择页面顶部的项目选择器。
从组织选择器中选择您的组织。
此组织中的所有标记都会显示在列表中。点击要查看其标记键的标记。
gcloud
如需显示与给定标记键相关的信息,请使用 gcloud resource-manager tags keys describe
命令:
gcloud resource-manager tags keys describe TAGKEY_NAME
其中,TAGKEY_NAME
是您要显示其信息的标记键的永久 ID 或命名空间名称,例如 tagKeys/123456789012
。
您应该会看到如下所示的响应:
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
。
添加标记值
创建标记键后,您就可以为该键添加接受的值。
您的标记值的 shortName
必须满足以下要求:
shortName
的最大长度为 63 个字符。shortName
必须以字母数字字符开头和结尾。shortName
只能包含大写和小写字母数字字符(不具有国际化)、连字符 (-
)、下划线 (_
),英文句点 (.
)、符号 (@
)、百分号 (%
),等号 (=
)、加号 (+
)、冒号 (:
)、英文逗号 (,
)、星号 (*
)、井号 (#
)、和号 (&
)、括号((
或)
)、方括号([
或]
)、大括号({
或}
)和空格。shortName
一旦创建便无法更改,并且在同一命名空间内必须是唯一的。
控制台
如需创建标记值,请执行以下操作:
打开 Google Cloud 控制台中的标记页面。
选择页面顶部的项目选择器。
从组织选择器中选择您的组织。
在标记列表中,点击要添加新值的标记。
点击
添加值。在标记值框中,输入标记值的显示名。它会成为标记的命名空间名称的一部分。
在标记值说明框中,输入标记值的说明。
点击保存。
gcloud
如需创建标记键,请使用 gcloud resource-manager tags keys
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
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
的人类可读唯一显示名称,该命名空间位于其父资源中,而全局唯一 ID 名为 name
。
检索标记值
您可以使用创建时所显示的永久 ID 或命名空间名称来查找特定标记值的信息。
控制台
如需查看已创建的标记,请执行以下操作:
打开 Google Cloud 控制台中的标记页面。
选择页面顶部的项目选择器。
从组织选择器中选择您的组织。
您在此组织中创建的所有标记都将显示在列表中。点击要查看其标记值的标记。
gcloud
如需显示与给定标记值相关的信息,请使用 gcloud resource-manager tags values describe
命令:
gcloud resource-manager tags values describe TAGVALUE_NAME
其中,TAGVALUE_NAME
是标记值的命名空间名称,例如 123456789012/environment/production
。
您应该会看到如下所示的响应:
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
。
使用 Google Cloud CLI 引用标记时,您可以针对标记键和值使用命名空间名称或永久 ID。调用 API 只应使用永久 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=ORGANIZATION_ID
其中,ORGANIZATION_ID
是您要查找其包含的标记密钥的组织 ID。
- 组织 ID 应采用
organizations/ORGANIZATION_ID
格式,例如organizations/123456789012
。如需了解如何获取组织 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
。
列出标记值
您可以使用 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
。
您应该会看到如下所示的响应:
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 控制台中的管理资源页面。
点击要向其附加标记的组织、文件夹或项目。
点击
代码。在代码面板中,选择添加标签。
在密钥字段中,从列表中选择要附加的标记对应的密钥。您可以通过输入关键字来过滤列表。
在值字段中,从列表中选择要附加的标记的值。您可以通过输入关键字来过滤列表。
如果您想附加更多标记,请点击
Add Tag,然后为每个标记选择键和值。点击保存。
在确认对话框中,点击确认以附加代码。
系统会显示一则通知,确认您的代码已更新。新标记会显示在管理资源页面上的标记列下。
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
。RESOURCE_ID
是资源的完整 ID,包括用于标识资源类型的 API 域名 (//cloudresourcemanager.googleapis.com/
)。例如,如需将标记关联到projects/7890123456
,则完整 ID 将为//cloudresourcemanager.googleapis.com/projects/7890123456
。LOCATION
是资源的位置。如果要将标记附加到全球性资源(例如文件夹或项目),则应省略此标志。如需将标记附加到区域级资源(例如 Compute Engine 实例),则必须指定位置,例如us-central1
。
API
要将标记附加到资源,必须首先创建包含标记值和资源永久 ID 的标记绑定的 JSON 表示法。如需详细了解标记绑定的格式,请参阅 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, }
其中:
RESOURCE_ID
是资源的完整 ID,包括用于标识资源类型的 API 域名 (//cloudresourcemanager.googleapis.com/
)。例如,如需将标记关联到projects/7890123456
,则完整 ID 将为//cloudresourcemanager.googleapis.com/projects/7890123456
。TAGVALUE_NAME
是所附加的标记值的永久 ID,例如tagValues/4567890123
。
列出关联到资源的所有标记
对于继承或直接附加的标记,您可以获取附加到资源的所有标记的列表。
控制台
如需查看附加到资源或由资源继承的所有标记,请执行以下操作:
打开 Google Cloud 控制台中的管理资源页面。
在资源列表中查找您的组织、文件夹或项目。
附加到资源的标记会显示在标记列下。继承的标记将被标记为
Inherited。
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
。
您应该会看到如下所示的响应:
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/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
。LOCATION
是资源的区域端点,例如us-central1
。
使用代码保全保护代码值
标记保全是一种可供您创建的资源,用于保护标记值免遭删除。如果某个标记值带有标记保全,则用户必须先删除此标记,除非该标记保全首次被删除。
创建代码保全
您可以使用 gcloud CLI 或 API 手动创建代码保全。
gcloud
如需创建标记保全,请使用 gcloud alpha resource-manager tags holds create
gcloud CLI 命令:
gcloud alpha 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 alpha resource-manager tags holds list
gcloud CLI 命令:
gcloud alpha 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 alpha resource-manager tags holds delete
gcloud CLI 命令:
gcloud alpha 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.get
resourcemanager.hierarchyNodes.create
resourcemanager.hierarchyNodes.delete
resourcemanager.hierarchyNodes.list
为开发者创建项目时,请为他们分配项目的此自定义角色。
向开发者分配包含权限的任何其他角色,以便他们在该项目中执行所需的任何操作。为用户授予项目的角色时,这些角色应始终有条件地被授予角色,以要求附加
costCenter
标记。resource.hasTagKey('123456789012/costCenter')
现在,无论何时创建项目,您的开发者都必须为项目附加 costCenter
标记,然后他们才能在被授予 IAM 政策的项目中执行操作。
支持的服务
如需查看支持标记的服务列表,请参阅支持标记的服务。
排查已知问题
条件表达式失败
如果您使用 Google Cloud CLI 运行其中一个 add-iam-policy-binding
命令,并且该资源的 IAM 政策包含该角色的条件角色绑定,则 gcloud CLI 工具会提示您选择政策中存在的条件表达式之一。如果您选择包含英文逗号的条件表达式,该命令将失败。如需解决此问题,请使用 --condition
标志在命令行中指定条件表达式。