계층 구조 평가 이해

리소스 계층 구조 노드에서 조직 정책을 설정할 때 해당 리소스 계층 구조 노드의 모든 하위 항목은 기본적으로 조직 정책을 상속합니다. 루트 조직 노드에서 조직 정책을 설정하면 모든 하위 폴더, 프로젝트, 리소스는 이러한 제한사항을 상속합니다.

계층 구조 평가 규칙에 따라 상속된 정책을 덮어쓰거나 병합할 하위 노드에 커스텀 조직 정책을 설정할 수 있습니다.

시작하기 전에

계층 구조 예

아래의 리소스 계층 구조 다이어그램에서 각 노드는 커스텀 조직 정책을 설정하고 상위 노드의 정책을 상속할지 여부를 정의합니다. 색이 지정된 모양은 조직 정책에서 허용하거나 거부하는 값을 나타냅니다.

상속 다이어그램

제약조건은 조직 정책에 의해 제어되는 동작의 정의입니다. 위의 예시에서 제약조건은 모든 값을 허용하는 기본 동작을 가집니다. 아래의 노드는 값을 허용하거나 거부하여 이 동작을 덮어쓰는 커스텀 정책을 정의합니다.

각 노드의 효과적인 정책은 상속 규칙에 따라 평가됩니다. 커스텀 조직 정책이 설정되지 않은 경우 노드는 기본 제약조건 동작을 상속합니다. 조직 정책을 설정하면 커스텀 정책이 대신 사용됩니다. 위의 예에서 조직 노드는 빨간색 사각형과 녹색 원을 허용하는 정책을 정의합니다.

조직 노드 아래의 계층 구조에 있는 리소스 노드는 다음과 같이 평가됩니다.

  1. 리소스 1inheritFromParentTRUE로 설정하고 파란색 다이아몬드를 허용하는 커스텀 정책을 정의합니다. 조직 노드의 정책은 상속되고 커스텀 정책과 병합되며 유효 정책은 빨간색 사각형, 녹색 원, 파란색 다이아몬드를 허용하는 것으로 평가됩니다.

  2. 리소스 2inheritFromParentTRUE로 설정하고 녹색 원을 거부하는 커스텀 정책을 정의합니다. 거부 값은 정책 조정 중에 항상 우선 순위를 갖습니다. 조직 노드의 정책은 상속되고 커스텀 정책과 병합되며 유효 정책은 빨간색 사각형만 허용하는 것으로 평가됩니다.

  3. 리소스 3inheritFromParentFALSE로 설정하고 노란색 육각형을 허용하는 커스텀 정책을 정의합니다. 조직 노드의 정책은 상속되지 않으므로 유효 정책은 노란색 육각형만 허용하는 것으로 평가됩니다.

  4. 리소스 4inheritFromParentFALSE로 설정하고 restoreDefault 값을 포함하는 커스텀 정책을 정의합니다. 조직 노드의 정책은 상속되지 않고 기본 제약조건 동작이 사용되므로 유효 정책은 모두 허용하는 것으로 평가됩니다.

계층 구조 평가 규칙

다음 규칙은 조직 정책이 주어진 리소스에서 평가되는 방법을 제어합니다. 조직 정책을 설정하려면 조직 정책 관리자 역할이 필요합니다.

조직 정책 설정 없음

조직 정책을 설정하지 않으면 리소스 노드는 설정된 정책이 있는 가장 낮은 상위 항목에서 상속합니다. 상위 계층 구조에 설정된 정책이 없는 경우 제약조건의 기본 동작이 시행됩니다.

상속

기본적으로 조직 정책이 설정된 리소스 노드는 계층 구조의 상위 노드가 설정한 모든 정책을 대체합니다. 하지만 리소스 노드가 inheritFromParent = true로 설정하면 상위 리소스의 유효한 정책이 상속되고 병합되고 조정되어 그 결과로 나온 유효 정책을 평가합니다. 예를 들면 다음과 같습니다.

  • 폴더가 projects/123 값을 거부합니다.
  • 해당 폴더 아래의 프로젝트는 projects/456 값을 거부합니다.

이 두 정책은 병합되며, 이 경우 projects/123projects/456 모두를 거부하는 유효 정책이 됩니다.

상속 허용 안함

리소스 계층 구조 노드에 inheritFromParent = false가 포함된 정책이 있는 경우 상위의 조직 정책을 상속하지 않습니다. 대신 노드는 허용 또는 거부 값으로 정책을 설정하지 않는 한 제약조건의 기본 동작을 상속합니다.

정책 충돌 조정

하위 노드가 목록 제약조건을 기반으로 조직 정책을 상속하면 상속된 정책이 노드의 조직 정책과 병합되고 조정됩니다. 목록 정책 평가에서는 DENY 값이 항상 우선 순위를 갖습니다. 예를 들면 다음과 같습니다.

  • 폴더가 projects/123 값을 거부합니다.
  • 해당 폴더 아래의 프로젝트는 projects/123 값을 허용합니다.

정책이 병합되고 DENY 값이 우선 적용됩니다. 유효 정책은 모든 값을 거부하고 상위 노드 또는 하위 노드가 값을 거부하는지 여부를 동일한 방식으로 평가합니다. 허용 목록과 거부 목록 모두에 값을 포함하지 않는 것이 가장 좋습니다. 그렇게 하면 정책을 이해하기 더 어려워질 수 있습니다.

부울 제약조건에서 파생된 조직 정책은 정책을 병합하거나 조정하지 않습니다. 정책이 리소스 노드에 지정되면 TRUE 또는 FALSE 값은 유효 정책을 결정하는 데 사용됩니다. 예를 들면 다음과 같습니다.

  • 폴더가 constraints/compute.disableSerialPortAccessenforced: true를 설정합니다.

  • 해당 폴더 아래의 프로젝트는 constraints/compute.disableSerialPortAccessenforced: false를 설정합니다.

enforced: false가 프로젝트 자체에 정의되었기 때문에 폴더에 설정된 enforced: true 값은 무시됩니다. 조직 정책은 해당 프로젝트에 대한 제약조건을 적용하지 않습니다.

기본 정책으로 재설정

RestoreDefault를 설정하면 조직 정책은 이 리소스 계층 구조 노드에 대한 제약조건의 기본 동작을 사용합니다. 하위 노드도 이 동작을 상속합니다.