커스텀 조직 정책 추가

이 페이지에서는 Cloud SQL 인스턴스에서 커스텀 제약조건을 만들고 설정하고 관리하는 방법을 설명합니다. 커스텀 조직 정책에 대한 개요는 커스텀 조직 정책을 참조하세요.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. IAM 및 관리자 페이지에서 사용자 또는 서비스 계정에 조직 정책 관리자 역할(roles/orgpolicy.policyAdmin)을 추가합니다.

    IAM 계정 페이지로 이동

  11. 이 절차를 수행하기 전에 제한사항을 참조하세요.

커스텀 제약조건에 지원되는 필드

다음 필드에 커스텀 제약조건을 설정할 수 있습니다.

필드 사용 사례
SqlDatabaseVersion 특정 데이터베이스 버전 사용 적용
region 인스턴스 생성을 특정 리전으로 제한
availabilityType 고가용성 적용
ipConfiguration > pscConfig > allowedConsumerProjects PSC의 소비자 프로젝트 허용 목록을 특정 프로젝트로 제한
ipConfiguration > sslMode SSL 모드를 ENCRYPTED_ONLY 또는 TRUSTED_CLIENT_CERTIFICATE_REQUIRED로 적용합니다. Google Cloud 콘솔에서 Cloud SQL 인스턴스를 만드는 동안에는 SSL 모드를 선택할 수 없습니다. 따라서 이 커스텀 조직 정책을 만드는 경우 gcloud CLI, API 또는 Terraform을 사용하여 Cloud SQL 인스턴스를 만들어야 합니다.
dataDiskType SSD 또는 HDD 사용 적용
backupConfiguration > location 자동 백업 위치를 특정 위치로 제한
backupConfiguration > pointInTimeRecoveryEnabled PITR을 사용 설정하도록 모든 인스턴스 적용
backupConfiguration > transactionLogRetentionDays 트랜잭션 로그 보관에 특정 보관 기간을 사용하도록 모든 인스턴스 적용
backupConfiguration > backupRetentionSettings > retentionUnit 모든 백업에 보관 기간(일) 적용
passwordValidationPolicy > minLength 최소 길이에 대한 비밀번호 정책 적용
passwordValidationPolicy > complexity 복잡성에 대한 비밀번호 정책 적용
passwordValidationPolicy > reuseInterval 특정 재사용 간격에 대한 비밀번호 정책 적용
passwordValidationPolicy > disallowUsernameSubstring 사용자 이름을 비밀번호로 허용하지 않도록 비밀번호 정책 적용
버전 Enterprise Plus 버전을 사용하도록 모든 인스턴스 적용
connectorEnforcement 모든 연결에 Cloud SQL 커넥터를 사용하도록 요청
dataCacheConfig 모든 인스턴스에 데이터 캐시를 사용하도록 요청

커스텀 제약조건 만들기 및 설정

커스텀 제약조건은 조직 정책을 적용하는 서비스에서 지원되는 리소스, 메서드, 조건, 작업을 사용하여 YAML 파일에서 정의됩니다. 커스텀 제약조건의 조건은 Common Expression Language(CEL)를 사용하여 정의됩니다. CEL을 사용하여 커스텀 제약조건에서 조건을 빌드하는 방법에 대한 자세한 내용은 Common Expression Language를 참조하세요.

콘솔

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

    조직 정책으로 이동

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

  3. 프로젝트 선택 도구에서 조직 정책을 설정할 리소스를 선택합니다.

  4. 커스텀 제약조건을 클릭합니다.

  5. 표시 이름 상자에 제약조건 이름을 입력합니다. 이 필드의 최대 길이는 200자(영문 기준)입니다.

  6. 제약조건 ID 상자에 새 커스텀 제약조건에 사용하려는 이름을 입력합니다. 커스텀 제약조건은 custom.으로 시작해야 하며 대문자, 소문자 또는 숫자만 포함할 수 있습니다(예: custom.requireCloudSqlPasswordMinLength). 이 필드의 최대 길이는 프리픽스를 제외하고 70자입니다(예: organizations/123456789/customConstraints/custom.).

  7. 설명 상자에 정책을 위반할 때 오류 메시지로 표시할 제약조건에 대해 사용자 친화적인 설명을 입력합니다. 이 필드의 최대 길이는 2,000자(영문 기준)입니다.

  8. 리소스 유형 상자에서 제한하려는 객체 및 필드가 포함된 Google Cloud REST 리소스 이름을 선택합니다(예: sqladmin.googleapis.com/Instance). 리소스 유형별 커스텀 제약조건은 최대 20개입니다. 이미 20개의 커스텀 제약조건이 있는 리소스 유형에 대해 커스텀 제약조건을 만들려고 하면 작업이 실패합니다.

  9. 적용 방법 아래에서 REST CREATE 메서드에 제약조건을 적용할지 또는 CREATEUPDATE 메서드 모두에 제약조건을 적용할지를 선택합니다.

    조건을 수정하고 다음을 수행합니다.

    1. 조건 추가 패널에서 지원되는 서비스 리소스를 참조하는 CEL 조건을 만듭니다(예: resource.settings.passwordValidationPolicy.minLength > 10). 이 필드의 최대 길이는 1000자(영문 기준)입니다. CEL 사용법에 대한 자세한 내용은 Common Expression Language를 참조하세요. 커스텀 제약조건에 사용할 수 있는 서비스 리소스에 대한 자세한 내용은 커스텀 제약조건 지원 서비스를 참조하세요.

    2. 저장을 클릭합니다.

  10. 작업에서 이전 조건이 충족될 경우 평가된 메서드를 허용하거나 거부할지를 선택합니다.

    • 거부는 조건이 true로 평가되는 경우 리소스를 만들거나 업데이트하는 작업을 차단합니다.

    • 허용은 조건이 true로 평가되는 경우 리소스를 만들거나 업데이트하는 작업을 허용합니다. 조건에 명시적으로 나열된 경우를 제외한 다른 모든 사례는 차단됩니다.

  11. 제약조건 만들기를 클릭합니다.

각 필드에 값을 입력하면 이 커스텀 제약조건에 해당하는 YAML 구성이 오른쪽에 표시됩니다.

gcloud

커스텀 제약조건에 대해 YAML 파일을 만들려면 다음 형식을 사용합니다.

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- container.googleapis.com/RESOURCE_NAME
methodTypes:
- CREATE
- UPDATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

다음을 바꿉니다.

  • ORGANIZATION_ID: 조직 ID(예: 123456789)

  • CONSTRAINT_NAME: 새 커스텀 제약조건에 사용하려는 이름입니다. 커스텀 제약조건은 custom.으로 시작해야 하며 대문자, 소문자 또는 숫자만 포함할 수 있습니다(예: custom.enableGkeAutopilot). 이 필드의 최대 길이는 프리픽스를 제외하고 70자입니다(예: organizations/123456789/customConstraints/custom).

  • RESOURCE_NAME: 제한할 객체 및 필드가 포함된 GKE API REST 리소스의 이름입니다(URI 아님). 예를 들면 Cluster입니다.

  • CONDITION: 지원되는 서비스 리소스의 표현에 대해 작성된 CEL 조건입니다. 이 필드의 최대 길이는 1000자(영문 기준)입니다.

  • ACTION: condition이 충족될 때 수행할 작업입니다. ALLOW 또는 DENY일 수 있습니다.

    • 거부는 조건이 true로 평가되는 경우 리소스를 만들거나 업데이트하는 작업을 차단합니다.

    • 허용은 조건이 true로 평가되는 경우 리소스를 만들거나 업데이트하는 작업을 허용합니다. 조건에 명시적으로 나열된 경우를 제외한 다른 모든 사례는 차단됩니다.

  • DISPLAY_NAME: 제약조건의 이름입니다. 이 필드의 최대 길이는 200자(영문 기준)입니다.

  • DESCRIPTION: 정책이 위반되었을 때 오류 메시지로 표시할 제약조건에 대한 설명입니다. 이 필드의 최대 길이는 2,000자(영문 기준)입니다.

gcloud CLI를 사용하여 새 커스텀 제약조건을 만든 다음에는 조직에서 조직 정책에 사용할 수 있도록 설정해야 합니다. 커스텀 제약조건을 설정하려면 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 list-custom-constraints 명령어를 사용합니다.
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID를 조직 리소스의 ID로 바꿉니다. 자세한 내용은 조직 정책 보기를 참조하세요.

커스텀 조직 정책 적용

커스텀 제약조건은 설정된 다음 사전 정의된 불리언 제약조건과 동일하게 작동합니다. Google Cloud는 사용자 요청이 허용되는지 평가할 때 먼저 커스텀 제약조건을 확인합니다. 커스텀 조직 정책 중 하나라도 요청을 거부하면 요청이 거부됩니다. 그러면 Google Cloud가 해당 리소스에 적용된 사전 정의된 조직 정책을 확인합니다.

불리언 제약조건을 참조하는 조직 정책을 만들고 해당 조직 정책을 Google Cloud 리소스에 적용하여 불리언 제약조건을 적용할 수 있습니다.

콘솔

불리언 제약조건을 적용하려면 다음 안내를 따르세요.

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

    조직 정책으로 이동

  2. 페이지 상단의 프로젝트 선택 도구를 선택합니다.
  3. 프로젝트 선택 도구에서 조직 정책을 설정할 프로젝트를 선택합니다.
  4. 조직 정책 페이지의 목록에서 제약조건을 선택합니다. 해당 제약조건의 정책 세부정보 페이지가 표시되어야 합니다.
  5. 이 리소스의 조직 정책을 구성하려면 정책 관리를 클릭합니다.
  6. 정책 수정 페이지에서 상위 정책 재정의를 선택합니다.
  7. 규칙 추가를 클릭합니다.
  8. 시행에서 이 조직 정책 시행을 사용 설정할지 여부를 선택합니다.
  9. 필요에 따라 태그로 조직 정책을 조건부로 만들려면 조건 추가를 클릭합니다. 조건부 규칙을 조직 정책에 추가하면 비조건부 규칙을 최소 하나 이상 추가해야 합니다. 그렇지 않으면 정책을 저장할 수 없습니다. 자세한 내용은 태그를 사용하여 조직 정책 설정을 참조하세요.
  10. 커스텀 제약조건인 경우 변경사항 테스트를 클릭하여 이 조직 정책의 효과를 시뮬레이션할 수 있습니다. 자세한 내용은 정책 시뮬레이터로 조직 정책 변경사항 테스트를 참조하세요.
  11. 조직 정책을 완료하고 적용하려면 정책 설정을 클릭합니다. 정책이 적용되는 데 최대 15분이 소요됩니다.

gcloud

불리언 제약조건을 시행하는 조직 정책을 만들려면 제약조건을 참조하는 정책 YAML 파일을 만듭니다.

      name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
    

다음을 바꿉니다.

  • PROJECT_ID: 제약조건을 시행할 프로젝트
  • CONSTRAINT_NAME: 커스텀 제약조건에 대해 정의된 이름. 예를 들면 custom.enableGkeAutopilot입니다.

제약조건이 포함된 조직 정책을 시행하려면 다음 명령어를 실행합니다.

    gcloud org-policies set-policy POLICY_PATH
    

POLICY_PATH를 조직 정책 YAML 파일의 전체 경로로 바꿉니다. 정책이 적용되는 데 최대 15분이 소요됩니다.

커스텀 제약조건 업데이트

Google Cloud 콘솔에서 제약조건을 수정하거나 새 YAML 파일을 만들고 set-custom-constraint gcloud CLI 명령어를 다시 사용하여 커스텀 제약조건을 업데이트할 수 있습니다. 커스텀 제약조건의 버전 관리가 없으므로 기존 커스텀 제약조건을 덮어씁니다. 커스텀 제약조건이 이미 시행된 경우 업데이트된 커스텀 제약조건이 즉시 적용됩니다.

콘솔

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

    조직 정책으로 이동

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

  3. 프로젝트 선택 도구에서 조직 정책을 업데이트할 리소스를 선택합니다.

  4. 조직 정책 페이지의 목록에서 수정할 제약조건을 선택합니다. 해당 제약조건의 정책 세부정보 페이지가 표시되어야 합니다.

  5. 제약조건 수정을 클릭합니다.

  6. 표시 이름, 설명, 적용 방법, 조건, 작업을 변경합니다. 제약조건을 만든 다음에는 제약조건 ID 또는 리소스 유형을 변경할 수 없습니다.

  7. 변경사항 저장을 클릭합니다.

gcloud

gcloud CLI를 사용하여 기존 커스텀 제약조건을 수정하려면 변경하려는 항목이 포함된 새 YAML 파일을 만듭니다.

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- RESOURCE_NAME
methodTypes:
- METHOD1
- METHOD2
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

다음을 바꿉니다.

  • ORGANIZATION_ID: 조직 ID(예: 123456789)

  • CONSTRAINT_NAME: 새 커스텀 제약조건에 사용하려는 이름입니다. 커스텀 제약조건은 custom.으로 시작해야 하며 대문자, 소문자 또는 숫자만 포함할 수 있습니다(예: custom.disableGkeAutoUpgrade). 이 필드의 최대 길이는 프리픽스를 제외하고 70자입니다(예: organizations/123456789/customConstraints/custom.).

  • RESOURCE_NAME: 제한하려는 객체 및 필드가 포함된 Google Cloud REST 리소스의 정규화된 이름입니다. 예를 들면 container.googleapis.com/NodePool입니다. 커스텀 제약조건에 사용할 수 있는 서비스 리소스에 대한 자세한 내용은 커스텀 제약조건 지원 서비스를 참조하세요.

  • METHOD1,METHOD2: 제약조건을 시행할 RESTful 메서드 목록입니다. CREATE 또는 CREATEUPDATE일 수 있습니다. 모든 Google Cloud 서비스가 두 메서드를 모두 지원하지는 않습니다. 각 서비스에 지원되는 메서드를 보려면 지원되는 서비스에서 해당 서비스를 찾으세요.

  • CONDITION: 지원되는 서비스 리소스를 참조하는 CEL 조건입니다(예: "resource.management.autoUpgrade == false"). 이 필드의 최대 길이는 1000자(영문 기준)입니다. CEL 사용법에 대한 자세한 내용은 Common Expression Language를 참조하세요.

  • ACTION: condition이 충족될 때 수행할 작업입니다. ALLOW 또는 DENY일 수 있습니다.

  • DISPLAY_NAME: 제약조건의 이름입니다. 이 필드의 최대 길이는 200자(영문 기준)입니다.

  • DESCRIPTION: 정책을 위반할 때 오류 메시지로 표시할 제약조건에 대한 사용자 친화적인 설명입니다. 이 필드의 최대 길이는 2,000자(영문 기준)입니다.

gcloud CLI를 사용하여 새 커스텀 제약조건을 만든 다음에는 조직에서 조직 정책에 사용할 수 있도록 설정해야 합니다. 커스텀 제약조건을 설정하려면 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 list-custom-constraints 명령어를 사용합니다.
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID를 조직 리소스의 ID로 바꿉니다. 자세한 내용은 조직 정책 보기를 참조하세요.

커스텀 제약조건 삭제

Google Cloud 콘솔 또는 gcloud CLI를 사용하여 커스텀 제약조건을 삭제할 수 있습니다.

콘솔

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

    조직 정책으로 이동

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

  3. 프로젝트 선택 도구에서 조직 정책을 삭제할 리소스를 선택합니다.

  4. 조직 정책 페이지의 목록에서 삭제할 제약조건을 선택합니다. 해당 제약조건의 정책 세부정보 페이지가 표시되어야 합니다.

  5. 삭제를 클릭합니다.

  6. 제약조건 삭제를 확인하기 위해 삭제를 클릭합니다.

gcloud

커스텀 제약조건을 삭제하려면 org-policies delete-custom-constraint gcloud CLI 명령어를 사용합니다.

gcloud org-policies delete-custom-constraint custom.CONSTRAINT_NAME \
  --organization=ORGANIZATION_ID

다음을 바꿉니다.

  • ORGANIZATION_ID: 조직 ID입니다(예: 123456789).

  • CONSTRAINT_NAME: 커스텀 제약조건의 이름입니다. 예를 들면 custom.disableGkeAutoUpgrade입니다.

출력은 다음과 비슷합니다.

Deleted custom constraint [organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade]

커스텀 제약조건을 삭제하면 해당 제약조건을 사용하여 생성된 모든 정책이 계속 존재하지만 무시됩니다. 삭제된 커스텀 제약조건과 동일한 이름으로 다른 커스텀 제약조건을 만들 수 없습니다.

예: 커스텀 제약조건을 사용하여 HDD 대신 SSD 사용 적용

  1. 다음과 같이 dataDiskType.yaml 파일을 만듭니다.

    name: organizations/651333429324/customConstraints/custom.dataDiskType
    resourceTypes:
    - sqladmin.googleapis.com/Instance
    methodTypes:
    - CREATE
    - UPDATE
    condition: resource.settings.dataDiskType == "PD_SSD"
    actionType: ALLOW
    displayName: dataDiskType must be PD_SDD
    description: dataDiskType must be PD_SSD
    

    이렇게 하면 인스턴스의 모든 CREATEUPDATE 메서드가 SSDdataDiskType의 제약조건을 충족합니다. 따라서 HDD와 관련된 모든 인스턴스는 거부됩니다.

  2. 조직 수준에서 커스텀 제약조건을 설정합니다.

    gcloud org-policies set-custom-constraint dataDiskType.yaml
    
  3. 다음과 같이 `enforceDataDiskType.yaml'을 만듭니다.

    name: projects/custom-constraints-cloudsql3/policies/custom.dataDiskType
    spec:
    rules:
    - enforce: true
    
  4. 프로젝트 수준에서 커스텀 제약조건을 적용합니다.

    gcloud org-policies set-policy enforceDataDiskType.yaml
    

다음 단계