创建和管理标记

本页面介绍了 Google Cloud 标记及其如何与 Cloud DNS 搭配使用。标记可以应用于 Cloud DNS 政策。

关于标记

标记是一种可附加到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)

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

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

如需将标记附加到 Cloud DNS 政策,您需要 Cloud DNS Admin 角色 (roles/dns.admin)。

创建标记键和标记值

在附加标记之前,您需要创建标记并配置其值。如需创建标记键和标记值,请参阅创建标记添加标记值

强制执行强制性标记

您可以对资源强制执行必需标记,以确保在创建资源时存在特定标记(例如“成本中心”标记),从而保持与组织政策的一致性。您可以使用组织政策和自定义限制条件来实现此目的。系统会在创建资源时强制执行此政策,从而防止预配没有所需标记的资源。如需了解详情,请参阅使用组织政策实现强制性标记

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

控制台

  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 个字符。

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

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

为现有资源添加标记

如需为现有政策添加标记,请按照以下步骤操作:

控制台

  1. 前往 Google Cloud 控制台中的 Cloud DNS 页面。
  2. 前往 Cloud DNS

  3. 选择要附加标记的资源对应的页面。 例如,如需将标记附加到政策,请前往政策页面。
  4. 点击 标记
  5. 如果您的组织未显示在标记面板中,请点击选择范围。选择您的组织,然后点击打开
  6. 点击添加标记
  7. 从列表中选择要附加的标记的键。您可以通过输入关键字来过滤列表。
  8. 从列表中选择要附加的标记的值。您可以通过输入关键字来过滤列表。
  9. 点击保存
  10. 确认对话框中,点击确认以附加标记。
  11. 系统会显示一条通知以确认您的标记已更新。

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 域名 (//dns.googleapis.com/)。例如,如需将标记附加到 /projects/PROJECT_ID/policies/POLICY_ID,则完整 ID 为 //dns.googleapis.com/projects/PROJECT_ID/policies/POLICY_ID

列出附加到资源的标记

您可以查看直接附加到政策或由政策继承的标记绑定列表。

控制台

  1. 前往 Google Cloud 控制台中的 Cloud DNS 页面。
  2. 前往 Cloud DNS

  3. 选择要查看标记的资源对应的页面。 例如,如需查看政策的标记,请前往政策页面。

    标记会显示在控制台的政策页面中的标记部分。

gcloud

如需获取附加到资源的标记绑定列表,请使用 gcloud resource-manager tags bindings list 命令:

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

替换以下内容:

  • RESOURCE_ID 是资源的完整 ID,包括用于标识资源类型的 API 域名 (//dns.googleapis.com/)。例如,如需将标记附加到 /projects/PROJECT_ID/policies/POLICY_ID,则完整 ID 为 //dns.googleapis.com/projects/PROJECT_ID/policies/POLICY_ID

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

name: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F7890123456/tagValues/567890123456
          tagValue: tagValues/567890123456
          resource: //dns.googleapis.com/projects/PROJECT_ID/policies/POLICY_ID
      

将标记与资源分离

您可以分离直接附加到政策的标记。可以通过附加具有相同键和不同值的标记来替换继承的标记,但不能分离这些标记。

控制台

  1. 前往 Google Cloud 控制台中的 Cloud DNS 页面。
  2. 前往 Cloud DNS

  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
      

替换以下内容:

  • TAGVALUE_NAME 是所附加的标记值的永久 ID 或命名空间名称,例如 tagValues/567890123456
  • RESOURCE_ID 是资源的完整 ID,包括用于标识资源类型的 API 域名 (//dns.googleapis.com/)。例如,如需将标记附加到 /projects/PROJECT_ID/policies/POLICY_ID,则完整 ID 为 //dns.googleapis.com/projects/PROJECT_ID/policies/POLICY_ID

删除标记键和标记值

移除标记键或值定义时,请确保标记已与政策分离。在删除标记定义本身之前,您必须先删除现有的标记连接(称为标记绑定)。如需删除标记键和标记值,请参阅删除标记

Identity and Access Management 条件和标记

您可以使用标记和 IAM 条件来有条件地向层次结构中的用户授予角色绑定。如果应用了具有条件角色绑定的 IAM 政策,则更改或删除附加到资源的标记可能会移除用户对该资源的访问权限。如需了解详情,请参阅 Identity and Access Management 条件和标记

后续步骤