本指南介绍如何创建和管理标记。标记是可以附加到 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 实例继承的所有标记。 如需查看组织级层的标记,您需要具有组织资源的 Organization Viewer 角色 (roles/resourcemanager.organizationViewer
)。
管理标记
如需创建、更新和删除标记定义,您需要拥有 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
如需管理组织级层标记,您需要具有组织资源的 Organization Viewer 角色 (roles/resourcemanager.organizationViewer
)。
管理资源上的标记
如需添加和移除附加至资源的标记,您需要对标记值以及您要附加标记值的资源都具有 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
的长度上限为 256 个字符。shortName
允许使用的字符集包含采用 UTF-8 编码的 Unicode 字符,但单引号 ('
)、双引号 ("
)、反斜杠 (\`),
and forward slashes (
/`) 除外。
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
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 字符,但英文单引号 ('
)、双引号 ("
)、反斜杠 (\`), and forward slashes (
/`) 除外。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
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.get 命名空间 d 方法:
GET https://cloudresourcemanager.googleapis.com/v3/tagValues/namespaced?name={TAGVALUE_NAMESPACED_NAME}
TAGVALUE_NAMESPACED_NAME
是标记值的命名空间名称,格式为 parentNamespace/tagKeyShortName/tagValueShortName
。
使用 Google Cloud CLI 引用标记时,您可以针对标记键和值使用命名空间名称或永久 ID。调用除 getNamespaced
之外的 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=RESOURCE_ID
RESOURCE_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/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 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.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
标志在命令行中指定条件表达式。