了解限制条件

限制条件是针对某项 Google Cloud 服务或一组 Google Cloud 服务的限制类型。您可以将限制条件视为定义受控行为的蓝图,然后将该蓝图作为组织政策应用于资源层次结构节点,以实施限制条件中定义的规则。随后,映射到该限制条件并与该资源层次结构节点相关联的 Google Cloud 服务便会实施组织策略中配置的限制。

限制条件具有类型,决定了可输入且可用于检查强制执行情况的组织政策值。实施的 GCP 服务将评估限制条件类型和值以确定限制。如需了解详情,请参阅组织政策限制条件

层次结构评估期间,在当前资源层次结构节点上设置的组织政策生效。如果 inheritFromParent 设为 TRUE,则系统会启用组织政策继承与合并机制。

限制条件特性

每个限制条件都由以下特性定义:

  • 名称:限制条件的唯一名称。
    • 例如 constraints/compute.disableSerialPortAccess
  • 显示名:限制条件的易记名称。
  • 说明:有关哪些 Google Cloud 服务实施哪些限制的详细信息。
  • 默认行为:当政策中缺少用户定义的配置时的行为。

限制条件的类型

列表限制条件

列表限制条件允许或禁止组织政策中定义的值列表。该值列表以层次结构子树字符串的形式表示。子树字符串指定了其适用的资源类型。例如,对于 constraints/compute.trustedImageProjects,项目 ID 列表以 projects/PROJECT_ID 形式表示。

下表介绍了实施政策方面的一些常见限制条件配置:

政策 限制条件配置
允许一组特定的值 将允许值字段 (ListPolicy.allowed_values) 设置为一组字符串
ListPolicy.all_values 设置为 ALL_VALUES_UNSPECIFIED
拒绝一组特定的值 将拒绝值字段 (ListPolicy.denied_values) 设置为一组字符串
ListPolicy.all_values 设置为 ALL_VALUES_UNSPECIFIED
拒绝某个值及其所有子值 将拒绝值字段 (ListPolicy.denied_values) 设置为子树字符串,例如 organizations/1234
ListPolicy.all_values 设置为 ALL_VALUES_UNSPECIFIED
允许所有的有效值 ListPolicy.all_values 设置为 ALLOW
不设置 ListPolicy.allowed_valuesListPolicy.denied_values
拒绝所有值 ListPolicy.all_values 设置为 DENY
不设置 ListPolicy.allowed_valuesListPolicy.denied_values

您也可以为值添加 prefix:value 形式的前缀,然后为值赋予其他含义:

  • is: - 针对确切的值应用比较。此行为与未加前缀时的行为一样;当值包含冒号时,必需使用此前缀。
  • under: - 针对值及其所有子值应用比较。如果允许或拒绝使用该前缀的资源,则其子资源也会遭到拒绝。提供的值必须是层次结构子树字符串,如以下示例所示:
    • organizations/ORGANIZATION_ID
    • folders/FOLDER_ID
    • projects/PROJECT_ID

一些限制条件与使用层次结构子树字符串作为值不兼容。如需了解支持使用层次结构子树值前缀的限制条件,请参阅组织政策限制条件

层次结构子树值前缀是测试版功能,可能会以不向后兼容的方式更改,并且不在任何服务等级协议 (SLA) 或弃用政策的涵盖范围内。如需详细了解如何在限制条件中使用带前缀的值,请参阅针对层次结构子树设置强制执行

如果您未提供值列表,则系统会根据具体的限制条件使用以下可能的默认值:

  • ALLOW - 允许任何有效值。
  • DENY - 拒绝所有值。

布尔值限制条件

boolean constraint可能会实施,也可能不会实施。将 Policy.enforced 设置为 True 时,系统就会实施此政策。

例如,constraints/compute.disableSerialPortAccess 有两种可能的状态:

  • TRUE - 实施 disableSerialPortAccess 限制条件,并且不允许串行端口访问。
  • FALSE - 不实施或检查 disableSerialPortAccess 限制条件,因此允许串行端口访问。

如果您未设置政策,或者将政策设置为 RestoreDefault,则允许串行端口访问,因为限制条件默认值为允许。