CMEK 조직 정책

Google Cloud에서는 조직 내 CMEK 사용을 보장하기 위해 두 가지 조직 정책 제약조건이 사용됩니다.

  • constraints/gcp.restrictNonCmekServices는 CMEK 보호를 요구하기 위해 사용됩니다.
  • constraints/gcp.restrictCmekCryptoKeyProjects는 CMEK 보호에 사용되는 Cloud KMS 키를 제한하기 위해 사용됩니다.

CMEK 조직 정책은 지원되는 Google Cloud 서비스 내에서 새로 생성된 리소스에만 적용됩니다.

필요한 역할

리소스를 만들 때 각 사용자에게 조직 정책을 확인하는 데 필요한 권한이 있는지 확인하려면 관리자에게 각 사용자에게 조직에 대한 조직 정책 뷰어(roles/orgpolicy.policyViewer) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 리소스를 만들 때 조직 정책을 확인하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

리소스를 만들 때 조직 정책을 확인하려면 다음 권한이 필요합니다.

  • 전체 조직 정책 세부정보를 보려면 다음 권한이 필요합니다. orgpolicy.policy.get
  • 리소스를 만들 때 조직 정책을 확인하려면 다음 권한이 필요합니다. orgpolicy.policies.check

관리자는 커스텀 역할이나 다른 사전 정의된 역할을 사용하여 각 사용자에게 이러한 권한을 부여할 수도 있습니다.

조직 정책이 활성 상태인 경우 CMEK 키로 보호되는 리소스를 만드는 Google Cloud 콘솔 사용자에게 orgpolicy.policies.check 권한이 필요합니다. 이 권한이 없는 사용자는 Google Cloud 콘솔을 사용하여 CMEK로 보호되는 리소스를 만들 수 있지만 restrictCmekCryptoKeyProjects 제약조건에서 허용하지 않는 CMEK 키를 선택할 수 있습니다. 이 제약조건을 충족하지 않는 키를 선택하면 결과적으로 리소스 생성이 실패합니다.

CMEK 보호 요구

조직에 CMEK 보호를 요구하려면 constraints/gcp.restrictNonCmekServices 조직 정책을 구성합니다.

목록 제약조건으로서 이 제약조건에 허용되는 값은 Google Cloud 서비스 이름입니다(예: sqladmin.googleapis.com). Google Cloud 서비스 이름 목록을 제공하고 제약조건을 거부로 설정하여 이 제약조건을 사용합니다. 이 구성은 리소스가 CMEK로 보호되지 않는 경우 이러한 서비스에서 리소스가 생성되지 않도록 차단합니다. 즉, Cloud KMS 키를 지정하지 않으면 서비스에서 리소스 만들기 요청이 실패합니다. 또한 이 제약조건은 이러한 서비스의 리소스에서 CMEK 보호를 삭제하지 못하도록 차단합니다. 이 제약조건은 지원되는 서비스에만 적용될 수 있습니다.

CMEK에 대한 Cloud KMS 키 사용 제한

CMEK 보호를 위해 사용되는 Cloud KMS 키를 제한하려면 constraints/gcp.restrictCmekCryptoKeyProjects 제약조건을 구성합니다.

목록 제약조건으로서 허용되는 값은 리소스 계층 구조 표시기입니다(예:projects/PROJECT_ID ,under:folders/FOLDER_ID, under:organizations/ORGANIZATION_ID). 리소스 계층 구조 표시기 목록을 구성하고 제약조건을 허용으로 설정하여 이 제약조건을 사용합니다. 이 구성은 나열된 프로젝트, 폴더, 조직에서만 CMEK 키를 선택할 수 있도록 지원되는 서비스를 제한합니다. 허용되는 리소스 중 하나에서 Cloud KMS 키를 사용하지 않으면 구성된 서비스에서 CMEK로 보호되는 리소스를 만들기 위한 요청이 실패합니다. 구성된 경우에는 이 제약조건이 모든 지원되는 서비스에 적용됩니다.

지원되는 서비스

서비스 CMEK 요구 시의 제약조건 값
PostgreSQL용 AlloyDB alloydb.googleapis.com
Application Integration integrations.googleapis.com
Artifact Registry artifactregistry.googleapis.com
BigQuery bigquery.googleapis.com
Bigtable bigtable.googleapis.com
Cloud Composer composer.googleapis.com
Cloud Logging logging.googleapis.com
Cloud Run run.googleapis.com
Cloud Run 함수 cloudfunctions.googleapis.com
Cloud SQL sqladmin.googleapis.com
Cloud Storage storage.googleapis.com
Cloud Workstations workstations.googleapis.com
Colab Enterprise aiplatform.googleapis.com
Compute Engine compute.googleapis.com
Dataflow dataflow.googleapis.com
Dataproc dataproc.googleapis.com
Document AI documentai.googleapis.com
Filestore file.googleapis.com
Firestore(미리보기) firestore.googleapis.com
Google Kubernetes Engine(미리보기) container.googleapis.com
Redis용 Memorystore redis.googleapis.com
Pub/Sub pubsub.googleapis.com
Secret Manager secretmanager.googleapis.com
Secure Source Manager securesourcemanager.googleapis.com
Spanner spanner.googleapis.com
Vertex AI aiplatform.googleapis.com
Vertex AI Agent Builder discoveryengine.googleapis.com
Vertex AI Workbench 인스턴스 notebooks.googleapis.com

CMEK 조직 정책 및 Storage Transfer Service

Storage Transfer Service에는 CMEK 통합이 없지만 CMEK 조직 정책과 함께 사용할 수 있습니다. Storage Transfer Service를 사용 중이고 Secret Manager에 저장된 데이터베이스 사용자 인증 정보를 CMEK로 보호하려면 storagetransfer.googleapis.comsecretmanager.googleapis.com을 모두 constraints/gcp.restrictNonCmekServices 제약 조건에 추가해야 합니다. 자세한 내용은 Storage Transfer Service CMEK 문서를 참조하세요.

리소스 유형별 적용 예외

CMEK 조직 정책 제약조건은 새 리소스를 만들 때나 기존 리소스의 Cloud KMS 키를 변경할 때(지원되는 경우) 적용됩니다. 일반적으로는 CMEK를 지원하는 서비스의 모든 리소스 유형에 적용되며 리소스의 구성만을 기준으로 합니다. 다음과 같은 몇 가지 예외에 주의하시기 바랍니다.

리소스 유형 적용 예외
bigquery.googleapis.com/Dataset 데이터 세트 기본 Cloud KMS 키에 부분적으로 적용됨(gcp.restrictCmekCryptoKeyProjects만 해당)
bigquery.googleapis.com/Job 쿼리 작업만: 쿼리와 함께 제공된 Cloud KMS 키 또는 결제 프로젝트의 기본값에 적용되며 프로젝트 기본 Cloud KMS 키의 별도 구성도 참조하세요.
bigquerydatatransfer.googleapis.com/TransferConfig 전송 구성은 CMEK 조직 정책 제약조건에 Data Transfer Service(bigquerydatatransfer.googleapis.com)의 서비스 이름을 사용합니다.
container.googleapis.com/Cluster (미리보기) 노드 부팅 디스크에 대해서만 Cloud KMS 키에 적용됩니다. 애플리케이션 레이어의 보안 비밀에는 적용되지 않습니다.
logging.googleapis.com/LogBucket 명시적으로 생성된 로그 버킷에 적용됩니다. 기본 제공 로그 버킷의 규정 준수를 확인하는 데 필요한 별도 구성도 참조하세요.
storage.googleapis.com/Bucket 버킷 기본 Cloud KMS 키에 적용됩니다.
storage.googleapis.com/Object 버킷과 독립적으로 적용됩니다. 버킷 기본 Cloud KMS 키의 별도 구성도 참조하세요.

구성 예

구성 예시에서는 샘플 조직의 리소스 계층 구조가 다음과 같다고 가정합니다.

조직 리소스 계층 구조의 다이어그램

CMEK 요구 및 프로젝트의 키 제한

projects/5 아래의 모든 Cloud Storage 리소스에 대해 CMEK 보호를 요구하고 projects/4의 키만 사용되도록 보장한다고 가정해보세요.

모든 새로운 Cloud Storage 리소스에 CMEK 보호를 요구하려면 다음 조직 정책 설정을 사용합니다.

  • 조직 정책: constraints/gcp.restrictNonCmekServices
  • 바인딩 위치: projects/5
  • 정책 유형: 거부
  • 정책 값: storage.googleapis.com

projects/4의 키만 사용되도록 다음 구성을 사용합니다.

  • 조직 정책: constraints/gcp.restrictCmekCryptoKeyProjects
  • 바인딩 위치: projects/5
  • 정책 유형: 허용
  • 정책 값: projects/4

CMEK 요구 및 폴더 내부로 키 제한

또는 이후에 folders/2의 Cloud KMS 프로젝트를 더 추가하고 보다 포괄적으로 folders/3 내에서 CMEK를 요구해야 한다고 가정해보세요. 이 시나리오에서는 약간 다른 구성이 필요합니다.

folders/3 아래의 어디에서든 새 Cloud SQL 및 Cloud Storage 리소스에 대해 추가 CMEK 보호를 요구하려면 다음 안내를 따르세요.

  • 조직 정책: constraints/gcp.restrictNonCmekServices
  • 바인딩 위치: folders/3
  • 정책 유형: 거부
  • 정책 값: sqladmin.googleapis.com, storage.googleapis.com

folders/2 아래의 Cloud KMS 프로젝트의 키만 사용되도록 보장하려면 다음 안내를 따르세요.

  • 조직 정책: constraints/gcp.restrictCmekCryptoKeyProjects
  • 바인딩 위치: folders/3
  • 정책 유형: 허용
  • 정책 값: under:folders/2

조직에 CMEK 요구

조직 어디에서든 CMEK를 요구하려면(지원되는 서비스) 다음 설정을 사용해서 constraints/gcp.restrictNonCmekServices 제약조건을 구성합니다.

  • 조직 정책: constraints/gcp.restrictNonCmekServices
  • 바인딩 위치: organizations/1
  • 정책 유형: 거부
  • 정책 값: (모든 지원되는 서비스)

제한사항

Google Cloud 콘솔을 사용하여 리소스를 만들려면 프로젝트 및 서비스에 대해 constraints/gcp.restrictNonCmekServices가 구성되었을 때 CMEK 이외의 다른 암호화 옵션을 사용할 수 없다는 것을 확인할 수 있습니다. 고객 계정에 프로젝트에 대해 orgpolicy.policy.get IAM 권한이 부여된 경우에만 CMEK 조직 정책 제한이 표시됩니다.

다음 단계

조직 정책의 이점 및 일반적인 사용 사례에 대해 자세히 알아보려면 조직 정책 서비스 소개를 참조하세요.

특정 제약조건이 있는 조직 정책을 만드는 방법에 대한 더 많은 예시는 제약조건 사용을 참조하세요.