정책 시뮬레이터를 사용하여 조직 정책 변경사항 테스트

조직 정책에 대한 정책 시뮬레이터를 사용하면 프로덕션 환경에 적용하기 전 커스텀 제약조건을 시행하는 새 커스텀 제약조건 또는 조직 정책의 영향을 미리 볼 수 있습니다. 정책 시뮬레이터는 시행되기 전에 제안된 정책을 위반하는 리소스 목록을 제공하므로 개발 작업을 중단하거나 환경을 종료하지 않고 리소스를 다시 구성하거나 예외를 요청하고 조직 정책의 범위를 변경할 수 있습니다.

이 페이지에서는 정책 시뮬레이터를 사용하여 조직 정책 변경사항을 테스트하는 방법을 설명합니다. 또한 선택하는 경우 시뮬레이션 결과를 해석하는 방법과 테스트를 거친 조직 정책을 적용하는 방법도 설명합니다.

시작하기 전에

  • Google Cloud CLI를 사용하는 경우 API 호출에 사용할 프로젝트를 설정합니다.

    gcloud config set project PROJECT_ID

    PROJECT_ID를 프로젝트 이름 또는 ID로 바꿉니다.

  • API Policy Simulator and Resource Manager 사용 설정

    API 사용 설정

  • 선택사항: 조직 정책 서비스에 대한 소개를 확인해 보세요.

필요한 역할

시뮬레이션을 실행하고 액세스하는 데 필요한 권한을 얻으려면 관리자에게 조직 정책 시뮬레이터 관리자(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

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

정책 변경 테스트

커스텀 제약조건 또는 커스텀 제약조건을 시행하는 조직 정책 또는 둘을 동시에 테스트할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.

    조직 정책으로 이동

  2. 페이지 상단의 프로젝트 선택 도구를 선택합니다.

  3. 프로젝트 선택 도구에서 조직 정책의 변경사항을 테스트할 리소스를 선택합니다. 커스텀 제약조건의 변경사항을 테스트하려면 조직 리소스를 선택해야 합니다.

  4. 새 커스텀 제약조건을 테스트하려면 커스텀 제약조건을 클릭합니다. 기존 커스텀 제약조건을 변경하려면 조직 정책 페이지의 목록에서 제약조건을 선택한 후 제약조건 수정을 클릭합니다.

  5. 테스트할 커스텀 제약조건을 만들거나 업데이트합니다.

    예를 들어 Binary Authorization이 사용 설정되지 않은 Google Kubernetes Engine 클러스터 리소스 생성을 제한하는 커스텀 제약조건을 정의하려면 다음을 수행합니다.

    1. 리소스 유형 상자에서 container.googleapis.com/Cluster를 선택합니다.

    2. 적용 방법에서 생성 시 적용을 선택합니다.

    3. 조건 수정을 클릭합니다.

    4. 조건 추가 패널에서 resource.binaryAuthorization.enabled == true를 입력합니다.

    5. 저장을 클릭합니다.

    6. 작업에서 허용을 선택합니다.

    자세한 내용은 커스텀 역할 생성 및 관리를 참조하세요.

  6. 제약조건 테스트를 클릭합니다.

  7. 새로운 제약조건이거나 조직 정책에 의해 시행되지 않는 제약조건인 경우 조직 정책을 정의해야 합니다.

    1. 범위 선택 상자에서 이 커스텀 제약조건을 테스트할 리소스를 선택합니다.

    2. 맞춤설정을 클릭합니다.

    3. 규칙 추가를 클릭합니다.

    4. 시행에서 사용을 선택한 후 완료를 클릭합니다.

    5. 계속을 클릭합니다.

지난 14일 동안 사용자가 수행한 시뮬레이션 목록이 포함된 시뮬레이션 기록 페이지가 표시됩니다. 자세한 내용은 이 페이지의 정책 시뮬레이터 결과를 참조하세요.

gcloud

  1. 커스텀 제약조건을 테스트하려면 테스트할 커스텀 제약조건을 정의하는 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)로 바꿉니다.

    커스텀 제약조건을 만드는 방법에 대한 자세한 내용은 커스텀 제약조건 만들기 및 관리를 참조하세요.

  2. 특정 태그의 존재에 따라 커스텀 제약조건을 조건부로 적용하는 조직 정책을 테스트하려면 테스트할 조직 정책을 정의하는 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)로 바꿉니다.

    조건부 조직 정책에 대한 자세한 내용은 태그를 사용하여 조직 정책 설정을 참조하세요.

  3. 커스텀 제약조건을 시행하는 조직 정책을 테스트하려면 테스트할 조직 정책을 정의하는 JSON 또는 YAML 파일을 만듭니다.

    예를 들어 Binary Authorization이 사용 설정되지 않은 Google Kubernetes Engine 클러스터 리소스 생성을 제한하는 조직 정책은 다음과 비슷합니다.

    name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz"
    spec:
        rules:
        - enforce: true
    

    ORGANIZATION_ID를 조직 ID(예: 1234567890123)로 바꿉니다.

  4. 커스텀 제약조건을 시행하는 조직 정책 삭제를 테스트하려면 조직 정책을 정의하지만 규칙을 설정하지 않고 상위 리소스에서 정책을 상속하는 JSON 또는 YAML 파일을 만듭니다.

    예를 들어 다음 조직 정책은 기존 custom.EnforceGKEBinaryAuthz 커스텀 제약조건 삭제를 시뮬레이션합니다.

    name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz"
    spec:
          inheritFromParent: true
    
  5. 다음 명령어를 실행하여 커스텀 제약조건, 조직 정책 또는 둘 다에 대한 변경사항을 시뮬레이션합니다.

    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 플래그를 설정할 필요가 없습니다.

몇 분 후에 이 명령어는 커스텀 제약조건, 조직 정책 또는 둘 다의 변경사항을 위반하는 리소스 목록을 출력합니다.

결과는 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일 동안 사용자가 생성한 시뮬레이션 결과가 저장됩니다.

시뮬레이션 결과를 보려면 시뮬레이션 기록 페이지로 이동합니다.

시뮬레이션 기록으로 이동

시뮬레이션을 선택하여 세부정보를 확인합니다. 시뮬레이션 보고서 페이지에서 새로운 커스텀 제약조건이나 조직 정책으로 인해 발생한 총 위반 수, 시뮬레이션 범위에서 확인된 리소스 수, 시뮬레이션이 완료된 시간을 나열하는 위반 미리보기를 볼 수 있습니다.

커스텀 제약조건을 시뮬레이션한 경우 제약조건 세부정보를 클릭하여 시뮬레이션된 특정 구성을 볼 수 있습니다. 조직 정책을 시뮬레이션한 경우 정책 세부정보 탭에 시뮬레이션된 구성이 표시됩니다.

모든 위반이 리소스 표에 나열됩니다. 새 커스텀 제약조건 또는 조직 정책을 위반하는 각 리소스가 Cloud 애셋 인벤토리의 리소스 항목 링크와 함께 나열됩니다. 프로젝트, 폴더, 조직 리소스가 표시되며 계층 구조에서 리소스 아래에 새 커스텀 사용 지정 제약조건 또는 조직 정책을 위반하는 리소스 합계가 표시됩니다.

테스트를 거친 정책 변경사항 적용

커스텀 제약조건, 조직 정책 또는 둘 다를 테스트한 후 커스텀 제약조건을 설정하고 조직 정책을 시행할 수 있습니다. 정책 시뮬레이터의 생성 방식에 관계없이 Google Cloud 콘솔에서 모든 정책 시뮬레이터 결과를 볼 수 있습니다. 시뮬레이션 보고서에 조직 정책에 대한 변경사항이 2개 이하로 포함되어 있으면 시뮬레이션 결과를 통해 직접 조직 정책을 시행할 수 있습니다. 여러 조직 정책에서 테스트 변경사항을 적용하려면 Google Cloud CLI를 사용합니다.

콘솔

  1. 커스텀 제약조건 정책 시뮬레이터 결과를 적용하려면 시뮬레이션 기록 페이지로 이동합니다.

    시뮬레이션 기록으로 이동

  2. 적용하려는 커스텀 제약조건 또는 조직 정책에 대한 시뮬레이션 보고서를 선택합니다.

  3. 이 시뮬레이션 보고서에 커스텀 제약조건이 포함된 경우 제약조건 저장을 클릭합니다.

  4. 이 시뮬레이션 보고서에 조직 정책에 대한 변경사항이 2개 이상 포함된 경우 테스트 실행 정책 설정을 선택해 해당 조직 정책을 테스트 실행 정책으로 적용하여 위험을 초래하지 않고 프로덕션에서 동작을 모니터링할 수 있습니다. 새 조직 정책 페이지의 정책 세부정보 페이지가 나타납니다.

    를 클릭한 후 정책 설정을 선택하여 조직 정책을 즉시 시행할 수 있습니다.

gcloud

  1. 커스텀 제약조건을 시행하려면 조직의 조직 정책에 사용할 수 있도록 설정해야 합니다. 커스텀 제약조건을 설정하려면 gcloud org-policies set-custom-constraint 명령어를 사용합니다.

    gcloud org-policies set-custom-constraint CONSTRAINT_PATH
    

    CONSTRAINT_PATH를 커스텀 제약조건 파일의 전체 경로로 바꿉니다. 예를 들면 /home/user/customconstraint.yaml입니다.

    이 작업이 완료되면 Google Cloud 조직 정책 목록에서 커스텀 제약조건을 사용할 수 있습니다.

  2. 커스텀 제약조건이 포함된 조직 정책을 시행하려면 gcloud org-policies set-policy 명령어를 사용합니다.

    gcloud org-policies set-policy POLICY_PATH
    

    POLICY_PATH를 조직 정책 YAML 파일의 전체 경로로 바꿉니다.

    정책이 적용되는 데 최대 15분이 소요됩니다.

시뮬레이션 결과 저장

콘솔

Google Cloud 콘솔을 사용하는 경우 정책 시뮬레이터 결과를 CSV 파일로 저장할 수 있습니다.

  1. 정책 시뮬레이터 결과를 저장하려면 시뮬레이션 기록 페이지로 이동합니다.

    시뮬레이션 기록으로 이동

  2. 저장할 시뮬레이션 보고서를 선택합니다.

  3. 전체 결과 내보내기를 클릭합니다.

gcloud

gcloud CLI를 사용하는 경우 정책 시뮬레이터 결과를 JSON 또는 YAML 파일로 저장할 수 있습니다.

기본적으로 Google Cloud CLI의 테스트 결과는 YAML 형식으로 출력됩니다. 테스트 결과를 YAML 파일로 저장하려면 시뮬레이션을 실행할 때 simulate orgpolicy 명령어의 출력을 리디렉션합니다.

> FILENAME

FILENAME을 출력 파일 이름으로 바꿉니다.

테스트 결과를 JSON 파일로 저장하려면 시뮬레이션을 실행할 때 simulate orgpolicy 명령어에 다음 플래그를 추가합니다.

--format=json > FILENAME

FILENAME을 출력 파일 이름으로 바꿉니다.

다음 단계