Google Cloud 资源层次结构是一种将资源整理成树结构的方法。此层次结构可帮助您大规模管理资源,但它只能对少数几个业务维度进行建模,包括组织结构、区域、工作负载类型和成本中心。这种层次结构缺少将多个业务维度叠加到一起的灵活性。
标记提供了一种为资源创建注解的方法,并且在某些情况下,您可以根据资源是否具有特定的标记有条件地允许或拒绝政策。您可以使用标记并有条件地执行政策,以便在资源层次结构内进行精细控制。
标记和标签
标签是为资源创建注解的另一种方法。下表列出了标记和标签之间的一些差异:
标记 | 标签 | |
---|---|---|
资源结构 | 标记键、标记值和标记绑定都是独立的资源 | 不是资源本身,而是资源的元数据 |
定义 | 在组织或项目级别定义 | 由每个资源定义 |
访问权限控制 | 若要管理和附加标记,需要具备 Identity and Access Management (IAM) 角色 | 要附加标签,您需要具备 IAM 角色,该角色因服务资源而异 |
连接需满足的前提条件 | 必须先定义标记键和标记值,然后才能将标记附加到资源 | 连接没有前提条件 |
可否继承 | 标记绑定会被 Google Cloud 层次结构中资源的子级继承 | 不被资源的子项继承 |
删除要求 | 除非某个标记没有标记绑定,否则无法删除标记 | 可以随时从资源中移除 |
命名要求 | 针对标记值和标记键的要求 | 标签要求 |
键值对名称长度 | 最多可输入 256 个字符 | 最多可输入 63 个字符 |
IAM 政策支持 | 可通过 IAM 政策条件引用标记 | 无 IAM 政策支持 |
组织政策支持 | 某些资源上的标记可以通过组织政策条件限制条件引用 | 没有组织政策支持 |
Cloud Billing 集成 | 执行退款、审核和其他费用分配分析,将 Cloud Billing 费用数据导出至 BigQuery | 在 Cloud Billing 中按标签过滤资源,将 Cloud Billing 数据导出到 BigQuery |
如需详细了解标签,请参阅创建和管理标签。
创建标记
代码采用键值对的结构。标记键资源可以在您的组织或项目资源下创建,标记值是附加到密钥的资源。例如,标记键 environment
,其值为 production
和 development
。
标记管理
管理员可以限制谁可以创建、更新、删除标记以及将标记附加到资源,从而控制标记的使用。他们可以选择一个单独的标记进行修改,例如添加或移除值,以及更新说明。这有助于您对代码进行精细控制。
可以向标记提供说明,当检索标记相关信息时即会显示该说明。此说明可确保将标记附加到资源的人员了解该标记的用途。
对于特定资源,标记中的某个给定键只能有一个值。例如,标记键为 environment
且值为 production
的项目也不能有 environment
键的 development
值。
政策和标记
您可以使用将标记与政策配合使用,以支持标记有条件地强制执行这些政策。您可以将是否存在标记值作为该政策的条件。
例如,您可以有条件地授予 Identity and Access Management (IAM) 角色,并根据资源是否具有特定的标记有条件地拒绝 IAM 权限。
创建标记后,您可以将其应用于资源。然后,您可以根据标记是否附加到受支持的资源,创建有条件的政策。此政策的生效取决于资源是否附加了标记。
如需了解如何将标记与 Identity and Access Management (IAM) 搭配使用,以帮助控制对 Google Cloud 资源的访问权限,请参阅标记和访问权限控制。
标记继承
将标记键值对附加到资源时,相应资源的所有后代都会继承该标记。您可以替换后代资源上继承的标记。若要替换继承的标记,请使用与继承标记相同的键应用标记,但使用不同的值。
例如,假设您将标记 environment: development
应用于文件夹,并且该文件夹有两个名为 team-a
和 team-b
的子文件夹。您还可以将不同的标记 environment: test
应用于 team-b
文件夹。因此,team-a
文件夹中的项目和其他资源会继承该 environment: development
标记,team-b
文件夹的项目和其他资源会继承 environment: test
标记:
如果您从 team-b
文件夹中移除了 environment: test
标记,则该文件夹及其资源将继承 environment: development
标记。
附加到资源并由资源继承的所有标记统称为有效标记。资源的有效标记是直接附加到该资源的标记,以及附加到整个层次结构中该资源的所有祖先实体的所有标记的组合。
使用标记管理政策时,建议您创建安全的默认标记。这意味着在组织资源级层设置的标记随后将在整个资源层次结构中继承。例如,标记键的短名称为 enforcement
,值为 default
、on
或 off
。如果您在组织级层设置 enforcement: default
,则所有资源都将继承该标记,除非标记在较低级层被覆盖。
然后,您可以编写政策来解决 enforcement
标记键,其中的条件将影响资源(如果资源为 enforcement: on
或 enforcement: off
),如果资源为 enforcement: default
,则为安全情况。如果 enforcement
标记已从资源中移除,则它随后会从其父资源继承 enforcement
的标记值。如果没有父资源具有 enforcement
标记,则它将从组织资源继承 enforcement: default
。
使用安全的默认标记可能会有所帮助,但是为了防止意外行为,您应该在移动资源或移除标记之前查看标记和有条件的策略。
删除标记键和值
移除标记键或值定义时,如果该标记已附加到资源,则移除操作会失败。在删除标记定义本身之前,您必须先删除现有的标记连接(称为标记绑定)。
防止标记值被删除
通过将标记保全附加到标记值,您可以为标记值创建一层额外的保护。与标记绑定一样,标记保全可防止用户删除标记值。
某些资源会自动创建标记来保全附加到资源的每个标记值。必须先移除此标签保全,用户才能删除标签值。