本页面介绍了 Google Cloud 标记及其如何与 Pub/Sub 搭配使用。标记可以应用于 Pub/Sub 主题、订阅和快照。我们计划支持将标记应用于 Pub/Sub 架构。
关于标记
标记是一种可附加到Google Cloud中的资源的键值对。您可以使用标记,根据资源是否有特定标记,有条件地允许或拒绝政策。例如,您可以根据资源是否具有特定标记,有条件地授予 Identity and Access Management (IAM) 角色。如需详细了解标记,请参阅标记概览。
通过创建可将值关联到 Google Cloud 资源的标记绑定资源,系统会将标记附加到资源。
所需权限
如需获得管理标记所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
针对标记附加到的资源的 Tag Viewer (
roles/resourcemanager.tagViewer) -
在组织级层查看和管理标记:针对组织的 Organization Viewer (
roles/resourcemanager.organizationViewer) -
创建、更新和删除标记定义:针对您要为其创建、更新或删除标记的资源的 Tag Administrator (
roles/resourcemanager.tagAdmin) -
在资源中附加和移除标记:针对标记值以及您要为其附加或移除标记值的资源的 Tag User (
roles/resourcemanager.tagUser)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
如需将标记附加到 Pub/Sub 主题、订阅或快照,您需要具有 Pub/Sub Editor 角色 (roles/pubsub.editor)。
创建标记键和标记值
在附加标记之前,您需要创建标记并配置其值。如需创建标记键和标记值,请参阅创建标记和添加标记值。
在创建资源期间添加标记
您可以在创建主题、订阅或快照时添加标记。在创建资源期间添加标记,可以立即为资源提供必要的元数据,同时有助于更好地进行组织管理、费用跟踪和自动应用政策。
控制台
- 前往 Google Cloud 控制台中的 Pub/Sub 页面。
- 选择用于创建新主题、订阅或快照的选项。
- 点击管理标签。
- 如果您的组织未显示在管理标记面板中,请点击选择标记范围。选择添加在组织级或项目级定义的标记,然后输入相应 ID。
- 点击添加标记。
- 从列表中选择要附加的标记的键。您可以通过输入关键字来过滤列表。
- 从列表中选择要附加的标记的值。您可以通过输入关键字来过滤列表。
- 点击保存。系统会使用标记信息更新标记部分。
- 创建主题、订阅或快照。系统会使用提供的标记创建新主题、订阅或快照。
gcloud
如需在创建主题、订阅或快照期间添加标记,请运行以下命令:
gcloud pubsub topics create TOPIC_ID --tags=TAG_KEY=TAG_VALUE
替换以下内容:
- TOPIC_ID:主题的 ID
- TAG_KEY:所附加的标记键的永久 ID 或命名空间名称,例如 tagKeys/567890123456
- TAG_VALUE:所附加的标记值的永久 ID 或命名空间名称,例如 tagValues/567890123456
要指定多个标记,请使用英文逗号分隔标记,例如 TAGKEY1=TAGVALUE1,TAGKEY2=TAGVALUE2
API
向以下网址发送 POST 请求:
https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID在请求正文中提供以下 JSON:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID"
"tags": {
"TAGKEY_NAME": "TAGVALUE_NAME"
}
}
替换以下内容:
- PROJECT_ID:项目的 ID
- TOPIC_ID:主题的 ID
- TAGKEY_NAME:所附加的标记键的永久 ID 或命名空间名称,例如 tagKeys/567890123456
- TAGVALUE_NAME:所附加的标记值的永久性 ID 或命名空间名称,例如 tagValues/567890123456
强制实施强制性标记
您可以对资源强制执行必需标记,以确保在创建资源时存在特定标记(例如“成本中心”标记),从而保持与组织政策的一致性。您可以使用组织政策和自定义限制条件来实现此目的。系统会在创建资源时强制执行此政策,从而防止在没有必需标记的情况下预配资源。如需了解详情,请参阅使用组织政策实现强制性标记。
设置自定义限制条件以强制执行标记
控制台
在 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 个字符。
设置自定义限制条件,以使其可用于组织中的组织政策。
定义自定义限制条件后,您可以测试和分析组织政策更改,并强制执行限制条件。
为现有资源添加标记
如需为现有主题、订阅或快照添加标记,请按照以下步骤操作:
控制台
- 前往 Google Cloud 控制台中的 Pub/Sub 页面。
- 选择要附加标记的资源对应的页面。 例如,如需将标记关联到某个主题,请前往主题页面。
- 点击 标记。
- 如果您的组织未显示在标记面板中,请点击选择范围。选择您的组织,然后点击打开。
- 点击添加标记。
- 从列表中选择要附加的标记的键。您可以通过输入关键字来过滤列表。
- 从列表中选择要附加的标记的值。您可以通过输入关键字来过滤列表。
- 点击保存。
- 在确认对话框中,点击确认以附加标记。
系统会显示一条通知以确认您的标记已更新。
gcloud
如需将标记附加到主题、订阅或快照,您必须使用 gcloud resource-manager tags bindings create 命令创建标记绑定资源:
gcloud resource-manager tags bindings create \
--tag-value=TAGVALUE_NAME \
--parent=RESOURCE_ID
替换以下内容:
TAGVALUE_NAME是所附加的标记值的永久 ID 或命名空间名称,例如tagValues/567890123456。-
RESOURCE_ID是资源的完整 ID,包括用于标识资源类型的 API 域名 (//pubsub.googleapis.com/)。例如,如需将标记关联到/projects/PROJECT_ID/topics/TOPIC_ID,则完整 ID 为//pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID。
列出附加到资源的标记
您可以查看直接附加到主题、订阅或快照或由主题、订阅或快照继承的标记绑定列表。
控制台
- 前往 Google Cloud 控制台中的 Pub/Sub 页面。
选择要查看标记的资源对应的页面。 例如,如需查看主题的标记,请前往主题页面。
标签会显示在控制台主题页面的标签部分。
gcloud
如需获取附加到资源的标记绑定列表,请使用 gcloud resource-manager tags bindings list 命令:
gcloud resource-manager tags bindings list \
--parent=RESOURCE_ID
替换以下内容:
-
RESOURCE_ID是资源的完整 ID,包括用于标识资源类型的 API 域名 (//pubsub.googleapis.com/)。例如,如需将标记关联到/projects/PROJECT_ID/topics/TOPIC_ID,则完整 ID 为//pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID。
您应该会看到如下所示的响应:
name: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F7890123456/tagValues/567890123456
tagValue: tagValues/567890123456
resource: //pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
将标记与资源分离
您可以分离直接附加到主题、订阅或快照的标记。可以通过附加具有相同键和不同值的标记来替换继承的标记,但不能分离这些标记。
控制台
- 前往 Google Cloud 控制台中的 Pub/Sub 页面。
- 选择要从中移除标记的资源对应的页面。 例如,如需从主题中移除标签,请前往主题页面。
- 点击 标记。
- 在标记面板中,点击要分离的标记旁边的 删除项。
- 点击保存。
- 在确认对话框中,点击确认以分离标记。
系统会显示一条通知以确认您的标记已更新。
gcloud
如需删除标记绑定,请使用 gcloud resource-manager tags bindings delete 命令:
gcloud resource-manager tags bindings delete \
--tag-value=TAGVALUE_NAME \
--parent=RESOURCE_ID
替换以下内容:
TAGVALUE_NAME是所附加的标记值的永久 ID 或命名空间名称,例如tagValues/567890123456。-
RESOURCE_ID是资源的完整 ID,包括用于标识资源类型的 API 域名 (//pubsub.googleapis.com/)。例如,如需将标记关联到/projects/PROJECT_ID/topics/TOPIC_ID,则完整 ID 为//pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID。
删除标记键和标记值
移除标记键或值定义时,请确保标记已与主题、订阅或快照分离。在删除标记定义本身之前,您必须先删除现有的标记连接(称为标记绑定)。如需删除标记键和标记值,请参阅删除标记。
Identity and Access Management 条件和标记
您可以使用标记和 IAM 条件来有条件地向层次结构中的用户授予角色绑定。如果应用了具有条件角色绑定的 IAM 政策,则更改或删除附加到资源的标记可能会移除用户对该资源的访问权限。如需了解详情,请参阅 Identity and Access Management 条件和标记。