了解层次结构评估

在资源层次结构节点上设置组织政策时,默认情况下,该资源层次结构节点的所有后代都会继承该组织政策。如果您在根组织节点设置组织政策,则所有子文件夹、项目和资源都会继承这些限制。

您可以在子节点上设置具有不同配置的相同组织政策,根据层次结构评估规则,该组织政策将覆盖或与继承的政策合并。

准备工作

示例层次结构

在下面的资源层次结构图中,每个节点设置一个组织政策,并定义其是否继承父节点的政策。彩色形状代表组织政策允许或拒绝的值。

继承关系图

限制条件定义组织政策所控制的行为。在上面的示例中,Constraint 代表限制条件默认值,用于定义没有限制条件组织政策时的行为。在此示例中,限制条件默认允许 所有值。限制条件下面的节点定义了组织政策,这些组织政策通过允许或拒绝值来覆盖限制条件的默认值。

每个节点上的有效政策根据继承规则进行评估。如果未设置组织政策,则节点将继承默认限制条件行为。如果您设置了组织政策,则将改用您的政策。在上面的示例中,组织节点定义的政策允许 红色方形和 绿色圆圈。

在该层次结构中,组织节点以下的资源节点会按如下方式进行评估:

  1. 资源 1 定义了将 inheritFromParent 设为 TRUE 且允许 蓝色菱形的政策。该资源会继承组织节点中的政策并将其与资源 1 上设置的政策合并。有效政策的评估结果为允许红色方形、绿色圆形和蓝色菱形。

  2. 资源 2 定义了将 inheritFromParent 设置为 TRUE 且拒绝 绿色圆形的政策。在协调政策时,系统始终优先采用拒绝值。该资源会继承组织节点中的政策并将其与资源 2 上设置的政策合并。有效政策的评估结果为仅允许 红色方形。

  3. 资源 3 定义了将 inheritFromParent 设置为 FALSE 且允许 黄色六边形的政策。该资源不会继承组织节点中的政策,因此有效政策的评估结果为仅允许 黄色六边形。

  4. 资源 4 定义了将 inheritFromParent 设置为 FALSE 且包含 restoreDefault 值的政策。该资源不会继承组织节点中的政策,而是使用默认限制行为,因此有效政策的评估结果为允许 所有值。

层次结构评估规则

下列规则管理如何在给定资源评估组织政策。您需要具备 Organization Policy Administrator 角色才能设置组织政策。

未设置组织政策

如果您未设置组织政策,则资源节点会从设置了政策的最小祖先实体继承。如果祖先层次结构中未设置政策,则强制执行限制条件的默认行为。

继承

默认情况下,资源节点设置的组织政策会取代层次结构中其父节点设置的任何政策。但是,如果资源节点设置了 inheritFromParent = true,则该节点的有效政策为父资源的有效政策经继承、合并和协调之后产生的结果。例如:

  • 某文件夹拒绝 projects/123 值。
  • 该文件夹下的项目拒绝 projects/456 值。

这两个政策会合并,因此本例中得到的有效政策为同时拒绝 projects/123projects/456

拒绝继承

如果某资源层次结构节点的政策包含 inheritFromParent = false,则该节点不会继承其父节点的组织政策。相反地,除非您设置了允许或拒绝值的政策,否则该节点会继承限制条件的默认行为。

协调政策冲突

当子节点根据列表限制条件继承组织政策时,继承的政策将与该节点的组织政策协调并合并。在评估列表政策时,系统会始终优先采用 DENY 值。例如:

  • 某文件夹拒绝 projects/123 值。
  • 该文件夹下的项目允许 projects/123 值。

在这种情况下,系统会合并这些政策并优先采用 DENY 值。有效政策会拒绝所有值,并以相同方式评估父节点或子节点是否拒绝值。最好不要在允许列表和拒绝列表中包含同一个值。否则,您的政策可能更难理解。

布尔值限制条件衍生的组织政策不会合并及协调政策。如果在资源节点上指定了政策,则使用 TRUEFALSE 值来确定有效政策。例如:

  • 某文件夹的 constraints/compute.disableSerialPortAccess 设为 enforced: true

  • 该文件夹下项目的 constraints/compute.disableSerialPortAccess 设为 enforced: false

系统会忽略在该文件夹上设置的 enforced: true 值,因为项目本身定义了 enforced: false。组织政策将不会对该项目实施限制条件。

重置为默认政策

调用 RestoreDefault 即可让组织政策针对该资源层次结构节点使用限制条件的默认行为。子节点也将继承该行为。