고객 관리 암호화 키(CMEK) 정보

이 페이지에서는 Memorystore for Redis에서 고객 관리 암호화 키(CMEK)가 작동하는 방식을 설명합니다. 이 기능을 즉시 사용하려면 고객 관리 암호화 키(CMEK) 사용을 참조하세요.

CMEK가 나에게 적합한가요?

고객 관리 암호화 키는 자체 암호화 키를 관리해야 하는 민감한 데이터 또는 규제 대상 데이터가 있는 조직을 위한 것입니다.

Google 관리 암호화와 고객 관리 암호화 비교

CMEK 기능을 사용하면 Memorystore for Redis의 저장 데이터에 자체 암호화 키를 사용할 수 있습니다. 고객 관리 암호화 키를 추가한 후 API 호출이 있을 때마다 Memorystore는 고객의 키를 사용하여 데이터에 액세스합니다.

Memorystore는 Google 관리 데이터 암호화 키(DEK)와 키 암호화 키(KEK)를 사용하여 Memorystore for Redis를 암호화합니다. 암호화에는 다음 두 가지 수준이 있습니다.

  • DEK는 데이터를 암호화합니다.
  • KEK는 DEK를 암호화합니다.

Memorystore 인스턴스는 암호화된 데이터와 함께 암호화된 DEK를 PD에 저장하고 Google은 Google KEK를 관리합니다. 고객 관리 암호화 키를 사용하여 Google KEK를 래핑하는 키를 만듭니다. 고객 관리 암호화 키를 사용하면 KEK를 생성, 취소, 삭제할 수 있습니다.

고객 관리 암호화 키는 Cloud Key Management Service API를 통해 관리됩니다.

아래 다이어그램은 기본 Google 암호화를 사용하는 경우와 고객 관리 암호화 키를 사용하는 경우에 Memorystore 인스턴스 내부에서 저장 데이터 암호화가 작동하는 방식을 비교해서 보여줍니다.

CMEK를 사용하지 않는 경우

데이터가 Google에 업로드된 다음 청크로 분할되고 각 청크가 자체 데이터 암호화 키로 암호화됩니다. 데이터 암호화 키가 키 암호화 키를 사용하여 래핑됩니다. 기본 Google 암호화를 사용하면 Google의 내부 키 저장소에서 키 암호화 키를 가져옵니다. 암호화된 청크와 래핑된 암호화 키가 Google 스토리지 인프라에 배포됩니다.

CMEK를 사용하는 경우

데이터가 Google에 업로드된 다음 청크로 분할되고 각 청크가 자체 데이터 암호화 키로 암호화됩니다. 데이터 암호화 키가 키 암호화 키를 사용하여 래핑됩니다. Cloud KMS를 사용하는 CMEK의 경우 Cloud KMS에서 키 암호화 키를 가져옵니다. 암호화된 청크와 래핑된 암호화 키가 Google 스토리지 인프라에 배포됩니다.

고객 관리 암호화 키로 래핑된 데이터를 복호화할 때 Memorystore는 KEK를 사용하여 DEK를 복호화하고 암호화되지 않은 DEK를 사용하여 저장 데이터를 복호화합니다.

데이터 청크가 DEK를 통해 암호화되고 래핑된 DEK를 통해 저장됩니다. DEK를 래핑 해제하기 위한 요청이 KMS 스토리지로 전송되며, KMS 스토리지에는 내보낼 수 없는 KEK가 저장됩니다. KMS 스토리지는 래핑되지 않은 DEK를 반환합니다.

Memorystore가 CMEK 키와 상호작용하는 경우는 언제인가요?

작업 설명
인스턴스 생성 인스턴스를 생성하는 동안 고객 관리 암호화 키를 사용하도록 인스턴스를 구성합니다.
인스턴스 업데이트 Memorystore는 CMEK가 사용 설정된 인스턴스를 업데이트하는 동안 CMEK 키를 확인합니다.

CMEK를 사용하여 어떤 데이터를 암호화하나요?

CMEK는 다음 유형의 데이터를 암호화합니다.

  • 영구 스토리지에 저장된 고객 데이터
  • AUTH전송 중 암호화와 같은 보안 기능과 관련된 메타데이터

서비스 계정 정보

CMEK로 인스턴스를 만들 때 다음 형식의 Memorystore 서비스 계정에 cloudkms.cryptoKeyEncrypterDecrypter 역할을 부여해야 합니다.

  • service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com

이 권한을 부여하면 서비스 계정이 Cloud KMS에서 키 액세스를 요청할 수 있습니다.

서비스 계정에 이 권한을 부여하는 방법은 서비스 계정에 키에 대한 액세스 권한 부여를 참조하세요.

키 정보

Cloud KMS에서는 대칭 암호화/복호화 알고리즘을 사용하는 암호화 키로 키링을 만들어야 합니다. 새 Memorystore 인스턴스를 만들 때 이 키를 선택하여 인스턴스를 암호화합니다. 키와 Memorystore 인스턴스 모두에 대해 하나의 프로젝트를 만들거나 각각을 위해 서로 다른 프로젝트를 만들 수 있습니다.

CMEK는 모든 Memorystore 인스턴스 위치에서 사용할 수 있습니다. 키 및 키링 리전은 Memorystore for Redis 인스턴스와 동일한 리전으로 설정되어야 합니다. 멀티 리전 또는 전역 리전 키는 작동하지 않습니다. 리전이 일치하지 않으면 Memorystore 인스턴스 생성 요청이 실패합니다.

CMEK용 Memorystore는 Cloud 외부 키 관리자(Cloud EKM)와 호환됩니다.

고객 관리 암호화 키는 다음 형식을 사용합니다.

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Memorystore가 현재 사용 중인 키 버전에 액세스할 수 없는 경우(예: 키 버전을 사용 중지한 경우) Memorystore는 과도한 지연 없이 인스턴스를 종료합니다. Google Cloud 콘솔에서 인스턴스가 정지되면 인스턴스 페이지에 빨간색 느낌표 도움말이 표시됩니다. 도움말 위로 마우스를 가져가면 '상태 없음'이 표시됩니다. 키에 다시 액세스할 수 있게 되면 Memorystore가 자동으로 인스턴스를 다시 시작합니다.

CMEK로 암호화된 데이터를 영구적으로 액세스할 수 없도록 하려면 어떻게 해야 하나요?

CMEK로 암호화된 데이터를 영구적으로 폐기하려는 경우가 있을 수 있습니다. 이렇게 하려면 고객 관리 암호화 키 버전을 삭제합니다. 키링이나 키를 삭제할 수 없지만 키의 키 버전을 삭제할 수 있습니다.

CMEK 사용 설정 인스턴스에서 데이터를 내보내고 가져오려면 어떻게 해야 하나요?

내보내기 또는 가져오기 중에 데이터를 고객 관리 키를 사용하여 암호화된 상태로 유지하려면 데이터를 내보내기 전에 Cloud Storage 버킷에 고객 관리 암호화 키를 설정해야 합니다.

데이터가 이전에 CMEK가 사용 설정된 Memorystore 인스턴스에 저장된 경우 데이터를 새 Memorystore 인스턴스로 가져오기 위한 특별한 요구사항이나 제한사항이 없습니다.

CMEK 키 버전을 폐기/사용 중지하는 동작

인스턴스에 대한 데이터 액세스를 방지하려면 고객 관리 암호화 키의 기본 키 버전을 사용 중지하면 됩니다. 그러면 과도한 지연 없이 인스턴스가 종료됩니다. 또한 Memorystore는 사용 중인 고객 관리 암호화 키가 사용 중지/폐기되면 과도한 지연 없이 인스턴스를 종료합니다. 여기에는 Memorystore 인스턴스에서 아직 사용 중인 이전 키 버전이 포함됩니다. gcloud 또는 Google Cloud 콘솔을 사용하여 인스턴스가 정지되었는지 확인할 수 있습니다.

Google Cloud 콘솔의 경우 인스턴스가 정지되면 Redis용 Memorystore 인스턴스 페이지의 인스턴스 옆에 빨간색 도움말 알림이 표시됩니다. 도움말에 커서를 위로 가져가면 '상태 없음'이 표시됩니다.

gcloud의 경우 gcloud beta redis instances describe를 실행할 때 인스턴스 메타데이터에 state: READY, state: REPAIRING 또는 기타 상태가 표시되지 않으면 인스턴스가 일시정지된 것입니다.

사용 중인 CMEK 키 버전 다시 사용 설정/복원

사용 중인 CMEK 키 버전을 다시 사용 설정/복원하면 인스턴스가 숨겨집니다.

제한사항

Memorystore로 고객 관리 암호화 키를 사용할 때 다음 제한사항이 적용됩니다.

  • 기존 Memorystore 인스턴스에 고객 관리 암호화 키를 사용 설정할 수 없습니다.
  • 키, 키링, Memorystore 인스턴스의 리전은 모두 동일해야 합니다.
  • 키에 대칭 암호화/복호화 알고리즘을 사용해야 합니다.
  • Cloud KMS 암호화 및 복호화 비율에는 할당량이 적용됩니다.

CMEK 조직 정책

Redis용 Memorystore는 CMEK 보호에 사용할 수 있는 조직 정책 제약조건을 지원합니다.

정책에서 CMEK 보호에 사용될 수 있는 Cloud KMS 키를 제한할 수 있습니다.

  • Redis용 Memorystore API가 constraints/gcp.restrictNonCmekServices 제약조건에 따른 서비스의 Deny 정책 목록에 있으면 CMEK로 보호되지 않는 인스턴스의 Redis용 Memorystore 생성이 실패합니다.

  • constraints/gcp.restrictCmekCryptoKeyProjects가 구성되면 Redis용 Memorystore는 허용된 프로젝트, 폴더 또는 조직의 키를 사용하여 암호화된 CMEK로 보호되는 인스턴스를 만듭니다.

이러한 CMEK 조직 정책 구성에 대한 상세 설명은 CMEK 조직 정책을 참조하세요.