조직 정책에 대한 정책 시뮬레이터를 사용하면 프로덕션 환경에 적용하기 전 커스텀 제약조건을 시행하는 새 커스텀 제약조건 또는 조직 정책의 영향을 미리 볼 수 있습니다. 정책 시뮬레이터는 시행되기 전에 제안된 정책을 위반하는 리소스 목록을 제공하므로 개발 작업을 중단하거나 환경을 종료하지 않고 리소스를 다시 구성하거나 예외를 요청하고 조직 정책의 범위를 변경할 수 있습니다.
이 페이지에서는 정책 시뮬레이터를 사용하여 조직 정책 변경사항을 테스트하는 방법을 설명합니다. 또한 선택하는 경우 시뮬레이션 결과를 해석하는 방법과 테스트를 거친 조직 정책을 적용하는 방법도 설명합니다.
시작하기 전에
-
Google Cloud CLI에서 API를 호출하는 데 사용할 프로젝트를 설정합니다.
gcloud config set project PROJECT_ID
PROJECT_ID
를 프로젝트 이름 또는 ID로 바꿉니다. -
API Policy Simulator and Resource Manager 사용 설정
- 선택사항: 조직 정책 서비스에 대한 소개를 확인해 보세요.
필요한 역할
시뮬레이션을 실행하고 액세스하는 데 필요한 권한을 얻으려면 관리자에게 조직 정책 시뮬레이터 관리자(roles/policysimulator.orgPolicyAdmin
) 조직 IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 시뮬레이션 실행 및 액세스에 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.
필수 권한
시뮬레이션을 실행하고 액세스하려면 다음 권한이 필요합니다.
-
orgpolicy.constraints.list
-
orgpolicy.customConstraints.get
-
orgpolicy.policies.list
-
cloudasset.assets.searchAllResources
-
cloudasset.assets.listResource
-
cloudasset.assets.listOrgPolicy
-
policysimulator.orgPolicyViolationsPreviews.list
-
policysimulator.orgPolicyViolationsPreviews.get
-
policysimulator.orgPolicyViolationsPreviews.create
-
policysimulator.orgPolicyViolations.list
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
정책 변경 테스트
커스텀 제약조건 또는 커스텀 제약조건을 시행하는 조직 정책 또는 둘을 동시에 테스트할 수 있습니다.
커스텀 제약조건을 테스트하려면 테스트할 커스텀 제약조건을 정의하는 JSON 또는 YAML 파일을 만듭니다.
예를 들어 Binary Authorization이 사용 설정되지 않은 Google Kubernetes Engine 클러스터 리소스 생성을 제한하는 커스텀 제약조건은 다음과 유사합니다.
name: "organizations/ORGANIZATION_ID/customConstraints/custom.EnforceGKEBinaryAuthz" resource_types: "container.googleapis.com/Cluster" method_types: CREATE condition: "resource.binaryAuthorization.enabled == true" action_type: ALLOW
ORGANIZATION_ID
를 조직 ID(예:1234567890123
)로 바꿉니다.커스텀 제약조건을 만드는 방법에 대한 자세한 내용은 커스텀 제약조건 만들기 및 관리를 참조하세요.
커스텀 제약조건을 시행하는 조직 정책을 테스트하려면 테스트하려는 조직 정책을 정의하는 JSON 또는 YAML 파일을 만듭니다.
예를 들어 Binary Authorization이 사용 설정되지 않은 Google Kubernetes Engine 클러스터 리소스의 생성을 제한하는 조직 정책은 다음과 유사합니다.
name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz" spec: rules: - enforce: true
ORGANIZATION_ID
를 조직 ID(예:1234567890123
)로 바꿉니다.특정 태그의 존재에 따라 커스텀 제약조건을 조건부로 시행하는 조직 정책을 테스트하려면 테스트할 조직 정책을 정의하는 JSON 또는 YAML 파일을 만듭니다.
예를 들어 다음 조직 정책은 Binary Authorization이 사용 설정되지 않은 Google Kubernetes Engine 클러스터 리소스 생성을 제한합니다. 단,
env=dev
태그가 연결된 리소스는 제외됩니다.name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz" spec: rules: - condition: expression: resource.matchTag('env', 'dev') enforce: false - enforce: true
ORGANIZATION_ID
를 조직 ID(예:1234567890123
)로 바꿉니다.조건부 조직 정책에 대한 자세한 내용은 태그를 사용하여 조직 정책 설정을 참조하세요.
커스텀 제약조건을 시행하는 조직 정책 삭제를 테스트하려면 조직 정책을 정의하지만 규칙을 설정하지 않고 상위 리소스에서 정책을 상속하는 JSON 또는 YAML 파일을 만듭니다.
예를 들어 다음 조직 정책은 기존
custom.EnforceGKEBinaryAuthz
커스텀 제약조건 삭제를 시뮬레이션합니다.name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz" spec: inheritFromParent: true
다음 명령어를 실행하여 커스텀 제약조건, 조직 정책 또는 둘 다에 대한 변경사항을 시뮬레이션합니다.
gcloud beta policy-intelligence simulate orgpolicy \ --organization=ORGANIZATION_ID \ --custom-constraints=CONSTRAINT_PATH \ --policies=POLICY_PATH
다음을 바꿉니다.
ORGANIZATION_ID
: 조직 ID입니다(예:1234567890123
). 여러 조직의 변경사항을 시뮬레이션하는 것은 지원되지 않습니다.CONSTRAINT_PATH
: 만들거나 업데이트한 커스텀 제약조건의 전체 경로입니다. 예를 들면tmp/constraint.yaml
입니다.--policies
플래그를 설정하면--custom-constraints
플래그를 설정할 필요가 없습니다.POLICY_PATH
: 만들거나 업데이트한 조직 정책의 전체 경로입니다. 예를 들면tmp/policy.yaml
입니다.--custom-constraints
플래그를 설정하면--policies
플래그를 설정할 필요가 없습니다.
몇 분 후에 이 명령어는 커스텀 제약조건, 조직 정책 또는 둘 다의 변경사항을 위반하는 리소스 목록을 출력합니다.
다음은 조직 정책 시뮬레이션의 샘플 응답입니다. 이 시뮬레이션에는 Binary Authorization이 사용 설정되지 않은 Google Kubernetes Engine 클러스터 리소스 생성을 제한하는 커스텀 제약조건이 포함됩니다. 이 경우 제안된 변경사항이 적용되면 두 개의 클러스터 리소스(
simulator-test-project
프로젝트의orgpolicy-test-cluster
,orgpolicy-test-0
프로젝트의autopilot-cluster-1
)가 정책을 위반하게 됩니다.Waiting for operation [organizations/012345678901/locations/global/orgPolic yViolationsPreviews/85be9a2d-8c49-470d-a65a-d0cb9ffa8f83/operations/1883a83 c-c448-42e5-a7c5-10a850928f06] to complete...done. --- customConstraint: actionType: ALLOW condition: resource.binaryAuthorization.enabled == true methodTypes: - CREATE name: organizations/012345678901/customConstraints/custom.EnforceGKEBinaryAuthz resourceTypes: - container.googleapis.com/Cluster name: organizations/012345678901/locations/global/orgPolicyViolationsPreviews/3dd47fd3-6df1-4156-8f10-413a3fc0ed83/orgPolicyViolations/b9fd23a5-7163-46de-9fec-7b9aa6af1113 resource: ancestors: - organizations/012345678901 - projects/456789012345 assetType: container.googleapis.com/Cluster resource: //container.googleapis.com/projects/simulator-test-project/locations/us-central1/clusters/orgpolicy-test-cluster --- customConstraint: actionType: ALLOW condition: resource.binaryAuthorization.enabled == true methodTypes: - CREATE name: organizations/012345678901/customConstraints/custom.EnforceGKEBinaryAuthz resourceTypes: - container.googleapis.com/Cluster name: organizations/012345678901/locations/global/orgPolicyViolationsPreviews/3dd47fd3-6df1-4156-8f10-413a3fc0ed83/orgPolicyViolations/e73896e6-7613-4a8d-8436-5df7a6455121 resource: ancestors: - organizations/012345678901 - folders/789012345678 - projects/456789012345 assetType: container.googleapis.com/Cluster resource: //container.googleapis.com/projects/orgpolicy-test-0/locations/us-central1/clusters/autopilot-cluster-1
테스트를 거친 정책 변경사항 적용
커스텀 제약조건, 조직 정책 또는 둘 다를 테스트한 후에는 커스텀 제약조건을 설정하고 일반 프로세스를 사용하여 조직 정책을 적용할 수 있습니다.
커스텀 제약조건을 시행하려면 조직의 조직 정책에서 사용할 수 있도록 설정해야 합니다. 커스텀 제약조건을 설정하려면 gcloud org-policies set-custom-constraint 명령어를 사용합니다.
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH
를 커스텀 제약조건 파일의 전체 경로로 바꿉니다. 예를 들면/home/user/customconstraint.yaml
입니다.이 작업이 완료되면 Google Cloud 조직 정책 목록에서 커스텀 제약조건을 사용할 수 있습니다.
커스텀 제약조건이 포함된 조직 정책을 시행하려면 gcloud org-policies set-policy 명령어를 사용합니다.
gcloud org-policies set-policy POLICY_PATH
POLICY_PATH
를 조직 정책 YAML 파일의 전체 경로로 바꿉니다.정책이 적용되는 데 최대 15분이 소요됩니다.
시뮬레이션 결과 저장
gcloud CLI를 사용하는 경우 정책 시뮬레이터 결과를 JSON 또는 YAML 파일로 저장할 수 있습니다.
기본적으로 Google Cloud CLI의 테스트 결과는 YAML 형식으로 출력됩니다. 테스트 결과를 YAML 파일로 저장하려면 시뮬레이션을 실행할 때 simulate orgpolicy
명령어의 출력을 리디렉션합니다.
> FILENAME
FILENAME
을 출력 파일 이름으로 바꿉니다.
테스트 결과를 JSON 파일로 저장하려면 시뮬레이션을 실행할 때 simulate orgpolicy
명령어에 다음 플래그를 추가합니다.
--format=json > FILENAME
FILENAME
을 출력 파일 이름으로 바꿉니다.