조직 정책에 대한 정책 시뮬레이터를 사용하면 프로덕션 환경에 적용하기 전 커스텀 또는 관리형 제약조건을 시행하는 새 커스텀 제약조건 또는 조직 정책의 영향을 미리 볼 수 있습니다. 정책 시뮬레이터는 시행되기 전에 제안된 정책을 위반하는 리소스 목록을 제공하므로 개발 작업을 중단하거나 환경을 종료하지 않고 리소스를 다시 구성하거나 예외를 요청하고 조직 정책의 범위를 변경할 수 있습니다.
이 페이지에서는 정책 시뮬레이터를 사용하여 조직 정책에 대한 변경사항을 테스트하는 방법을 설명합니다. 또한 선택하는 경우 시뮬레이션 결과를 해석하는 방법과 테스트를 거친 조직 정책을 적용하는 방법도 설명합니다.
시작하기 전에
-
Google Cloud CLI를 사용하는 경우 API를 호출하는 데 사용할 프로젝트를 설정합니다.
gcloud config set project PROJECT_ID
PROJECT_ID
를 프로젝트 이름 또는 ID로 바꿉니다. -
Enable the Policy Simulator and Resource Manager APIs.
- 선택사항: 조직 정책 서비스에 대한 소개를 확인해 보세요.
필요한 역할
시뮬레이션을 실행하고 액세스하는 데 필요한 권한을 얻으려면 관리자에게 조직 정책 시뮬레이터 관리자(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
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
정책 변경사항 테스트
커스텀 제약조건 또는 커스텀 또는 관리형 제약조건을 시행하는 조직 정책 또는 둘을 동시에 테스트할 수 있습니다.
커스텀 제약조건 변경사항 테스트
콘솔
Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.
페이지 상단의 프로젝트 선택 도구를 선택합니다.
프로젝트 선택 도구에서 조직 리소스를 선택합니다.
새 커스텀 제약조건을 테스트하려면
커스텀 제약조건을 클릭합니다. 기존 커스텀 제약조건을 변경하려면 조직 정책 페이지의 목록에서 제약조건을 선택한 후 제약조건 수정을 클릭합니다.테스트할 커스텀 제약조건을 만들거나 업데이트합니다.
예를 들어 Binary Authorization이 사용 설정되지 않은 Google Kubernetes Engine 클러스터 리소스의 생성을 제한하는 커스텀 제약 조건을 정의하려면 다음 단계를 따르세요.
리소스 유형 상자에서
container.googleapis.com/Cluster
를 선택합니다.적용 방법에서 생성 시 적용을 선택합니다.
조건 수정을 클릭합니다.
조건 추가 패널에서
resource.binaryAuthorization.enabled == true
를 입력합니다.저장을 클릭합니다.
작업에서 허용을 선택합니다.
자세한 내용은 커스텀 역할 생성 및 관리를 참조하세요.
제약조건 테스트를 클릭합니다.
새로운 제약조건이거나 조직 정책이 적용되지 않는 제약조건인 경우 조직 정책을 정의해야 합니다.
범위 선택 상자에서 커스텀 제약조건을 테스트할 리소스를 선택합니다.
맞춤설정을 클릭합니다.
규칙 추가를 클릭합니다.
시행에서 사용을 선택한 후 완료를 클릭합니다.
계속을 클릭합니다.
지난 14일 동안 수행된 시뮬레이션 목록과 함께 요약 기록 페이지가 표시됩니다. 자세한 내용은 이 페이지의 정책 시뮬레이터 결과를 참조하세요.
gcloud
커스텀 제약조건을 테스트하려면 테스트하려는 커스텀 제약조건을 정의하는 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 파일에 조건을 포함하여 특정 태그의 유무에 따라 커스텀 제약조건을 선택적으로 적용하는 조직 정책을 테스트할 수 있습니다.
예를 들어 다음 조직 정책은
env=dev
태그가 연결된 리소스를 제외하고 Binary Authorization이 사용 설정되지 않은 Google Kubernetes Engine 클러스터 리소스의 생성을 제한합니다.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 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
플래그를 설정할 필요가 없습니다.
몇 분 후에 이 명령어는 커스텀 제약조건, 조직 정책 또는 둘 다의 변경사항을 위반하는 리소스 목록을 출력합니다.
Google Cloud 콘솔에서도 결과를 볼 수 있습니다. 결과를 읽는 방법은 이 페이지의 정책 시뮬레이터 결과를 참조하세요.
다음은 조직 정책 시뮬레이션의 샘플 응답입니다.
이 시뮬레이션에는 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
관리형 제약조건 변경사항 테스트
콘솔
- Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.
프로젝트 선택 도구에서 조직 정책을 수정하려는 프로젝트, 폴더, 조직을 선택합니다.
조직 정책 페이지에 이 리소스에 사용 가능하고 필터링 가능한 조직 정책 제약조건 목록이 표시됩니다.
목록에서 조직 정책을 업데이트하려는 관리형 제약조건을 선택합니다. 정책 세부정보 페이지에서 이 조직 정책의 소스, 이 리소스의 유효 정책 평가, 관리형 제약조건의 세부정보를 볼 수 있습니다.
이 리소스의 조직 정책을 업데이트하려면 정책 관리를 클릭합니다.
정책 수정 페이지에서 상위 정책 재정의를 선택합니다.
규칙 추가를 선택합니다.
시행에서 이 조직 정책 시행을 사용 설정할지 여부를 선택합니다.
필요에 따라 태그로 조직 정책을 조건부로 만들려면 조건 추가를 클릭합니다. 조건부 규칙을 조직 정책에 추가하는 경우 비조건부 규칙을 최소 하나 이상 추가해야 합니다. 그렇지 않으면 정책을 저장할 수 없습니다. 자세한 내용은 태그를 사용하여 조직 정책 설정을 참조하세요.
변경사항 테스트를 클릭합니다.
지난 14일 동안 수행된 시뮬레이션 목록과 함께 요약 기록 페이지가 표시됩니다. 자세한 내용은 이 페이지의 정책 시뮬레이터 결과를 참조하세요.
gcloud
관리형 제약조건에 대한 변경사항을 테스트하려면 테스트하려는 관리형 제약조건을 정의하는 JSON 또는 YAML 파일을 만듭니다.
name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: ENFORCEMENT_STATE
다음을 바꿉니다.
RESOURCE_TYPE
:organizations
,folders
또는projects
RESOURCE_ID
:RESOURCE_TYPE
에 지정된 리소스 유형에 따라 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호CONSTRAINT_NAME
을 테스트하려는 관리형 제약조건의 이름으로 바꿉니다. 예를 들면iam.managed.disableServiceAccountKeyCreation
입니다.설정 시에 이 조직 정책을 적용하려면
ENFORCEMENT_STATE
를true
로 바꾸고, 설정 시에 사용 중지하려면false
로 바꿉니다.
필요에 따라 태그에 따라 조직 정책을 조건부로 설정하려면
condition
블록을rules
에 추가합니다. 조건부 규칙을 조직 정책에 추가하는 경우 비조건부 규칙을 최소 하나 이상 추가해야 합니다. 그렇지 않으면 정책을 저장할 수 없습니다. 자세한 내용은 태그를 사용하여 조직 정책 설정을 참조하세요.관리형 제약조건을 적용하는 조직 정책의 삭제를 테스트하려면 조직 정책을 정의하는 JSON 또는 YAML 파일에 상위 리소스에서 정책을 상속할 때를 제외하고 설정된 규칙이 없어야 합니다.
예를 들어 다음 조직 정책은 기존
iam.managed.disableServiceAccountKeyCreation
관리형 제약조건 삭제를 시뮬레이션합니다.name: organizations/ORGANIZATION_ID/policies/iam.managed.disableServiceAccountKeyCreation spec: inheritFromParent: true
policy-intelligence simulate orgpolicy
명령어를 실행합니다.gcloud policy-intelligence simulate orgpolicy \ --organization=ORGANIZATION_ID \ --policies=POLICY_PATH
다음을 바꿉니다.
ORGANIZATION_ID
를 조직 ID(예:1234567890123
)로 바꿉니다. 여러 조직에 대한 변경사항 시뮬레이션은 지원되지 않습니다.POLICY_PATH
: 조직 정책 YAML 파일의 전체 경로
몇 분 후에 이 명령어는 커스텀 제약조건, 조직 정책 또는 둘 다의 변경사항을 위반하는 리소스 목록을 출력합니다.
Google Cloud 콘솔에서도 결과를 볼 수 있습니다. 결과를 읽는 방법은 이 페이지의 정책 시뮬레이터 결과를 참조하세요.
정책 시뮬레이터 결과
정책 시뮬레이터는 커스텀 제약조건 또는 조직 정책 변경의 결과를 시뮬레이션된 정책 위반 목록으로 보고합니다. Google Cloud 콘솔에는 지난 14일 동안 생성된 시뮬레이션 결과가 저장됩니다.
시뮬레이션 결과를 보려면 시뮬레이션 기록 페이지로 이동합니다.
시뮬레이션을 선택하여 세부정보를 확인하세요. 시뮬레이션 보고서 페이지에서 새로운 커스텀 제약조건이나 조직 정책으로 인해 발생한 총 위반 수, 시뮬레이션 범위에서 확인된 리소스 수, 시뮬레이션이 완료된 시간을 나열하는 위반 미리보기를 볼 수 있습니다.
커스텀 제약조건을 시뮬레이션한 경우 제약조건 세부정보를 클릭하여 시뮬레이션된 특정 구성을 확인할 수 있습니다. 조직 정책을 시뮬레이션한 경우 정책 세부정보 탭에 시뮬레이션된 구성이 표시됩니다.
모든 위반사항은 리소스 표에 나열됩니다. 새 커스텀 제약조건 또는 조직 정책을 위반하는 각 리소스가 Cloud 애셋 인벤토리의 리소스 항목 링크와 함께 나열됩니다. 프로젝트, 폴더, 조직 리소스가 표시되며 계층 구조에서 리소스 아래에 새 커스텀 사용 지정 제약조건 또는 조직 정책을 위반하는 리소스 합계가 표시됩니다.
테스트를 거친 정책 변경사항 적용
커스텀 제약조건, 조직 정책 또는 둘 다 테스트한 후에는 커스텀 제약조건을 설정하고 조직 정책을 시행할 수 있습니다. 생성 방법에 관계없이 Google Cloud 콘솔에서 모든 정책 시뮬레이터 결과를 볼 수 있습니다. 시뮬레이션 보고서에 조직 정책에 대한 변경사항이 2개 이상 포함된 경우 시뮬레이션 결과를 통해 조직 정책을 직접 적용할 수 있습니다. 여러 조직 정책에 테스트 변경사항을 적용하려면 Google Cloud CLI를 사용합니다.
콘솔
커스텀 제약조건 정책 시뮬레이터 결과를 적용하려면 시뮬레이션 기록 페이지로 이동합니다.
적용하려는 커스텀 제약조건 또는 조직 정책의 시뮬레이션 보고서를 선택합니다.
이 시뮬레이션 보고서에 커스텀 제약조건이 포함된 경우 제약조건 저장을 클릭합니다.
이 시뮬레이션 보고서에 조직 정책에 대한 변경사항이 2개 이상 포함된 경우 테스트 실행 정책 설정을 선택해 해당 조직 정책을 테스트 실행 정책으로 적용하여 위험을 초래하지 않고 프로덕션에서 동작을 모니터링할 수 있습니다. 새 조직 정책 페이지에 대한 정책 세부정보 페이지가 표시됩니다.
를 클릭한 다음 정책 설정을 선택하면 조직 정책을 즉시 적용할 수 있습니다.
gcloud
커스텀 제약조건을 시행하려면 조직에서 조직 정책에 사용할 수 있도록 설정해야 합니다. 커스텀 제약조건을 설정하려면 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분이 소요됩니다.
시뮬레이션 결과 저장
콘솔
Google Cloud 콘솔을 사용하는 경우 정책 시뮬레이터 결과를 CSV 파일로 저장할 수 있습니다.
정책 시뮬레이터 결과를 저장하려면 시뮬레이션 기록 페이지로 이동합니다.
저장하려는 시뮬레이션 보고서를 선택합니다.
전체 결과 내보내기를 클릭합니다.
gcloud
gcloud CLI를 사용하는 경우 정책 시뮬레이터 결과를 JSON 또는 YAML 파일로 저장할 수 있습니다.
기본적으로 Google Cloud CLI의 테스트 결과는 YAML 형식으로 출력됩니다. 테스트 결과를 YAML 파일로 저장하려면 시뮬레이션을 실행할 때 simulate orgpolicy
명령어의 출력을 리디렉션합니다.
> FILENAME
FILENAME
을 출력 파일의 이름으로 바꿉니다.
테스트 결과를 JSON 파일로 저장하려면 시뮬레이션을 실행할 때 simulate orgpolicy
명령어에 다음 플래그를 추가합니다.
--format=json > FILENAME
FILENAME
을 출력 파일의 이름으로 바꿉니다.