이 페이지에서는 Cloud SQL 인스턴스에서 커스텀 제약조건을 만들고 설정하고 관리하는 방법을 설명합니다. 커스텀 조직 정책에 대한 개요는 커스텀 조직 정책을 참조하세요.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- IAM 및 관리자 페이지에서 사용자 또는 서비스 계정에 조직 정책 관리자 역할(
roles/orgpolicy.policyAdmin
)을 추가합니다. - 이 절차를 수행하기 전에 제한사항을 참조하세요.
커스텀 제약조건에 지원되는 필드
다음 필드에 커스텀 제약조건을 설정할 수 있습니다.
필드 | 사용 사례 |
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를 참조하세요.
콘솔
Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.
페이지 상단의 프로젝트 선택 도구를 선택합니다.
프로젝트 선택 도구에서 조직 정책을 설정할 리소스를 선택합니다.
커스텀 제약조건을 클릭합니다.
표시 이름 상자에 제약조건 이름을 입력합니다. 이 필드의 최대 길이는 200자(영문 기준)입니다.
제약조건 ID 상자에 새 커스텀 제약조건에 사용하려는 이름을 입력합니다. 커스텀 제약조건은
custom.
으로 시작해야 하며 대문자, 소문자 또는 숫자만 포함할 수 있습니다(예:custom.requireCloudSqlPasswordMinLength
). 이 필드의 최대 길이는 프리픽스를 제외하고 70자입니다(예:organizations/123456789/customConstraints/custom.
).설명 상자에 정책을 위반할 때 오류 메시지로 표시할 제약조건에 대해 사용자 친화적인 설명을 입력합니다. 이 필드의 최대 길이는 2,000자(영문 기준)입니다.
리소스 유형 상자에서 제한하려는 객체 및 필드가 포함된 Google Cloud REST 리소스 이름을 선택합니다(예:
sqladmin.googleapis.com/Instance
). 리소스 유형별 커스텀 제약조건은 최대 20개입니다. 이미 20개의 커스텀 제약조건이 있는 리소스 유형에 대해 커스텀 제약조건을 만들려고 하면 작업이 실패합니다.적용 방법 아래에서 REST
CREATE
메서드에 제약조건을 적용할지 또는CREATE
및UPDATE
메서드 모두에 제약조건을 적용할지를 선택합니다.조건을 수정하고 다음을 수행합니다.
조건 추가 패널에서 지원되는 서비스 리소스를 참조하는 CEL 조건을 만듭니다(예:
resource.settings.passwordValidationPolicy.minLength > 10
). 이 필드의 최대 길이는 1000자(영문 기준)입니다. CEL 사용법에 대한 자세한 내용은 Common Expression Language를 참조하세요. 커스텀 제약조건에 사용할 수 있는 서비스 리소스에 대한 자세한 내용은 커스텀 제약조건 지원 서비스를 참조하세요.저장을 클릭합니다.
작업에서 이전 조건이 충족될 경우 평가된 메서드를 허용하거나 거부할지를 선택합니다.
거부는 조건이 true로 평가되는 경우 리소스를 만들거나 업데이트하는 작업을 차단합니다.
허용은 조건이 true로 평가되는 경우 리소스를 만들거나 업데이트하는 작업을 허용합니다. 조건에 명시적으로 나열된 경우를 제외한 다른 모든 사례는 차단됩니다.
제약조건 만들기를 클릭합니다.
각 필드에 값을 입력하면 이 커스텀 제약조건에 해당하는 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 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 리소스에 적용하여 불리언 제약조건을 적용할 수 있습니다.콘솔
불리언 제약조건을 적용하려면 다음 안내를 따르세요.
- Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.
- 페이지 상단의 프로젝트 선택 도구를 선택합니다.
- 프로젝트 선택 도구에서 조직 정책을 설정할 프로젝트를 선택합니다.
- 조직 정책 페이지의 목록에서 제약조건을 선택합니다. 해당 제약조건의 정책 세부정보 페이지가 표시되어야 합니다.
- 이 리소스의 조직 정책을 구성하려면 정책 관리를 클릭합니다.
- 정책 수정 페이지에서 상위 정책 재정의를 선택합니다.
- 규칙 추가를 클릭합니다.
- 시행에서 이 조직 정책 시행을 사용 설정할지 여부를 선택합니다.
- 필요에 따라 태그로 조직 정책을 조건부로 만들려면 조건 추가를 클릭합니다. 조건부 규칙을 조직 정책에 추가하면 비조건부 규칙을 최소 하나 이상 추가해야 합니다. 그렇지 않으면 정책을 저장할 수 없습니다. 자세한 내용은 태그를 사용하여 조직 정책 설정을 참조하세요.
- 커스텀 제약조건인 경우 변경사항 테스트를 클릭하여 이 조직 정책의 효과를 시뮬레이션할 수 있습니다. 자세한 내용은 정책 시뮬레이터로 조직 정책 변경사항 테스트를 참조하세요.
- 조직 정책을 완료하고 적용하려면 정책 설정을 클릭합니다. 정책이 적용되는 데 최대 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 명령어를 다시 사용하여 커스텀 제약조건을 업데이트할 수 있습니다. 커스텀 제약조건의 버전 관리가 없으므로 기존 커스텀 제약조건을 덮어씁니다. 커스텀 제약조건이 이미 시행된 경우 업데이트된 커스텀 제약조건이 즉시 적용됩니다.
콘솔
Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.
페이지 상단의 프로젝트 선택 도구를 선택합니다.
프로젝트 선택 도구에서 조직 정책을 업데이트할 리소스를 선택합니다.
조직 정책 페이지의 목록에서 수정할 제약조건을 선택합니다. 해당 제약조건의 정책 세부정보 페이지가 표시되어야 합니다.
제약조건 수정을 클릭합니다.
표시 이름, 설명, 적용 방법, 조건, 작업을 변경합니다. 제약조건을 만든 다음에는 제약조건 ID 또는 리소스 유형을 변경할 수 없습니다.
변경사항 저장을 클릭합니다.
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
또는CREATE
과UPDATE
일 수 있습니다. 모든 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를 사용하여 커스텀 제약조건을 삭제할 수 있습니다.
콘솔
Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.
페이지 상단의 프로젝트 선택 도구를 선택합니다.
프로젝트 선택 도구에서 조직 정책을 삭제할 리소스를 선택합니다.
조직 정책 페이지의 목록에서 삭제할 제약조건을 선택합니다. 해당 제약조건의 정책 세부정보 페이지가 표시되어야 합니다.
삭제를 클릭합니다.
제약조건 삭제를 확인하기 위해 삭제를 클릭합니다.
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 사용 적용
다음과 같이
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
이렇게 하면 인스턴스의 모든
CREATE
및UPDATE
메서드가SSD
인dataDiskType
의 제약조건을 충족합니다. 따라서HDD
와 관련된 모든 인스턴스는 거부됩니다.조직 수준에서 커스텀 제약조건을 설정합니다.
gcloud org-policies set-custom-constraint dataDiskType.yaml
다음과 같이 `enforceDataDiskType.yaml'을 만듭니다.
name: projects/custom-constraints-cloudsql3/policies/custom.dataDiskType spec: rules: - enforce: true
프로젝트 수준에서 커스텀 제약조건을 적용합니다.
gcloud org-policies set-policy enforceDataDiskType.yaml
다음 단계
- 조직 정책 알아보기
- Cloud SQL에서 비공개 IP가 작동하는 방식 알아보기
- Cloud SQL의 비공개 IP를 구성하는 방법 알아보기
- 조직 정책 서비스 알아보기
- 조직 정책 제약조건 알아보기
- 커스텀 조직 정책 만들기 및 관리 알아보기