Google Cloud 资源层次结构是一种将资源整理成树结构的方法。此层次结构可帮助您大规模管理资源,但它仅围绕几个业务维度(包括组织结构、区域、工作负载类型和成本中心)进行建模。该层次结构缺乏将多个业务维度组合在一起的灵活性。
标记提供了一种根据资源是否有特定标记,有条件地允许或拒绝政策的方法。您可以使用标记并有条件地执行政策以便在资源层次结构内进行精细控制。
标记和标签
标签是为资源创建注解的单独方法。下表列出了标记与标签之间的一些区别:
标记 | 标签 | |
---|---|---|
资源结构 | 标记键、标记值和标记绑定都是独立的资源 | 本身并不是资源,而是资源的元数据 |
定义 | 在组织级别定义 | 由每项资源定义 |
访问权限控制 | 管理和附加代码需要 Identity and Access Management (IAM) 角色 | 必须为标签附加 IAM 角色,具体取决于服务资源 |
添加附件的前提条件 | 必须先定义标记键和标记值,然后才能将标记附加到资源 | 没有前提条件 |
可否继承 | Google Cloud 层次结构中资源的子项继承标记绑定 | 不由资源的子项继承 |
删除要求 | 除非存在任何标记绑定,否则无法删除标记 | 可以随时从资源中移除 |
命名要求 | 标记值和标记键的要求 | 标签要求 |
键/值名称长度 | 最多 63 个字符 | 最多 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
。
使用安全的默认标记可能会有所帮助,但是为了防止意外行为,您应该在移动资源或移除标记之前查看标记和有条件的策略。
删除标记键和值
移除标记键或值定义时,如果该标记已附加到资源,则移除操作会失败。在删除标记定义本身之前,您必须先删除现有的标记连接(称为标记绑定)。
保护标记值免遭删除
您可以通过为代码值附加代码保全,为代码值创建额外的保护层。代码保全(如代码绑定)可防止用户删除代码值。
某些资源会自动对附加到资源的每个标记值创建标记保全。必须先移除此代码保全,用户才能删除标签值。
后续步骤
如需了解如何使用标记,请参阅创建和管理标记页面。