이 문서에서는 Cloud Key Management Service (Cloud KMS)에서 Redis용 Memorystore 인스턴스에 고객 관리 암호화 키 (CMEK) 를 사용하는 방법을 설명합니다. 또한 영구 스토리지에서 암호화되는 데이터와 키 수명 주기 이벤트 중에 인스턴스가 작동하는 방식을 간략하게 설명합니다.
CMEK를 사용하면 저장된 데이터를 보호하는 암호화 키를 제어할 수 있습니다. Cloud KMS에서 자체 키를 관리하면 키 액세스, 순환, 사용을 더 효과적으로 제어할 수 있으므로 엄격한 규정 준수 및 규제 요구사항을 충족하는 데 도움이 됩니다.
CMEK를 구현하면 백업 및 지속성 파일과 같은 영구 데이터에 보안 및 제어 레이어가 추가됩니다. CMEK는 새 인스턴스에서만 사용 설정할 수 있습니다. 기존 인스턴스에는 CMEK를 적용할 수 없습니다.
CMEK를 사용해야 하는 사용자
CMEK는 민감한 정보 또는 규제 대상 데이터가 있고 자체 암호화 키를 제어해야 하는 조직을 위한 것입니다. 이 데이터를 암호화하기 위해 CMEK를 사용할지 여부에 대한 자세한 내용은 CMEK 사용 여부 결정을 참조하세요.
고객 관리 암호화
CMEK를 사용하면 암호화 키를 사용하여 인스턴스에 저장된 데이터를 보호할 수 있습니다. 이 데이터를 암호화하기 위해 Memorystore for Redis는 Google 관리 데이터 암호화 키 (DEK)와 고객 관리 키 암호화 키 (KEK)를 사용합니다.
다음과 같은 암호화 수준을 사용할 수 있습니다.
- DEK 암호화: DEK는 Memorystore for Redis의 데이터를 암호화합니다.
- KEK 암호화: KEK는 DEK를 암호화합니다.
Memorystore for Redis는 KEK를 사용하여 DEK를 암호화하고 DEK를 사용하여 저장된 데이터를 암호화합니다. CMEK를 사용하는 경우 인스턴스에서 DEK를 암호화하는 KEK를 관리할 수 있습니다.
다음 다이어그램은 인스턴스에서 CMEK를 사용하여 데이터를 암호화하는 방법을 보여줍니다. Google의 스토리지 인프라에 업로드된 데이터는 청크로 분할되고 각 청크는 자체 DEK로 암호화됩니다. Cloud KMS는 DEK를 암호화하는 KEK를 제공하고 Google의 스토리지 인프라는 암호화된 데이터 청크와 암호화된 DEK를 모두 시스템 전체에 배포합니다.

다음 다이어그램은 Memorystore for Redis가 CMEK로 암호화된 데이터를 복호화하는 방법을 보여줍니다. 이 암호화된 데이터에 액세스하기 위해 Memorystore for Redis는 KEK를 관리하는 Cloud KMS에 DEK를 복호화하도록 요청합니다. 그러면 Cloud KMS는 복호화된 DEK를 반환하고 인스턴스는 이를 사용하여 저장된 데이터를 복호화합니다.

Memorystore는 언제 CMEK와 상호작용하나요?
| 작업 | 설명 |
|---|---|
| 인스턴스 생성 | 인스턴스를 만들 때 CMEK를 사용하도록 구성합니다. |
| 인스턴스 업데이트 | CMEK가 사용 설정된 인스턴스를 업데이트하는 동안 Memorystore for Redis는 CMEK를 확인합니다. |
CMEK를 사용하여 암호화되는 데이터
CMEK는 다음 유형의 데이터를 암호화합니다.
서비스 계정 정보
CMEK로 인스턴스를 만들 때 다음 형식의 Redis용 Memorystore 서비스 계정에 cloudkms.cryptoKeyEncrypterDecrypter 역할을 부여해야 합니다.
service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
이 권한을 부여하면 서비스 계정이 Cloud KMS에서 키 액세스를 요청할 수 있습니다.
서비스 계정에 이 권한을 부여하는 방법은 Redis용 Memorystore 서비스 계정에 키에 대한 액세스 권한 부여를 참조하세요.
키 정보
Cloud KMS에서는 대칭 암호화 알고리즘을 사용하는 암호화 키 로 키링을 만들어야 합니다. Memorystore for Redis 인스턴스를 만들 때 이 키를 선택하여 인스턴스를 암호화합니다. 키와 인스턴스 모두에 하나의 프로젝트를 만들거나 각각에 다른 프로젝트를 만들 수 있습니다.
CMEK는 모든 Memorystore for Redis 인스턴스 위치에서 사용할 수 있습니다. 인스턴스를 만들려는 동일한 리전에 키링과 키를 만들어야 합니다. 멀티 리전 또는 전역 리전의 키는 작동하지 않습니다. 리전 또는 위치가 일치하지 않으면 인스턴스 생성 요청이 실패합니다.
키의 리소스 ID에 CMEK는 다음 형식을 사용합니다.
projects/CMEK_ENABLED_PROJECT/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Redis용 Memorystore가 사용 중인 키 버전에 액세스할 수 없는 경우 (예: 모든 키 버전을 사용 중지한 경우) Redis용 Memorystore는 인스턴스를 종료합니다. Google Cloud 콘솔에서 일시정지된 인스턴스는 빨간색 느낌표 도움말을 인스턴스 페이지에 표시합니다. 도움말 위에 마우스를 가져가면 No state 상태가 표시됩니다. 키에 액세스할 수 있게 되면 Redis용 Memorystore가 자동으로 인스턴스를 다시 시작합니다.
외부 키
관리하는 외부 키를 통해Google Cloud 내 데이터를 암호화하기 위해 Cloud External Key Manager (Cloud EKM)를 사용할 수 있습니다.
Cloud EKM 키를 사용하는 경우 Google은 외부 관리 키의 가용성을 제어할 수 없습니다. 인스턴스를 만들 때 키를 사용할 수 없으면 인스턴스가 생성되지 않습니다.
외부 키 사용 시 고려사항은 Cloud External Key Manager를 참조하세요.
CMEK로 암호화된 데이터에 영구적으로 액세스할 수 없도록 하려면 어떻게 해야 하나요?
CMEK로 암호화된 데이터에 영구적으로 액세스할 수 없도록 하려는 경우가 있을 수 있습니다. 이렇게 하려면 키 버전을 폐기합니다. 키 버전 폐기에 대한 자세한 내용은 키 버전 폐기 및 복원을 참조하세요.
CMEK가 사용 설정된 인스턴스의 데이터를 가져오거나 내보내려면 어떻게 해야 하나요?
데이터를 내보낼 때 데이터를 CMEK로 암호화된 상태로 유지하려면 데이터를 내보내기 전에 Cloud Storage 버킷에 CMEK를 설정해야 합니다.
데이터가 CMEK가 사용 설정된 인스턴스에 저장된 경우 새 인스턴스로 데이터를 가져오는 데 특별한 요구사항이나 제한사항이 없습니다.
CMEK 키 버전의 동작
이 섹션에서는 키 버전을 사용 중지, 폐기, 순환, 사용 설정, 복원할 때 발생하는 상황에 대한 정보를 제공합니다.
CMEK 키 버전 사용 중지 또는 폐기
인스턴스에 대한 데이터 액세스를 방지하려면 기본 키 버전을 사용 중지하세요. 그러면 인스턴스가 종료됩니다. 또한 사용 중인 CMEK가 사용 중지되거나 폐기되면 Memorystore for Redis는 인스턴스를 종료합니다. 여기에는 인스턴스에서 사용하는 이전 키 버전이 포함됩니다.
Redis용 Memorystore가 인스턴스를 일시정지하는지 확인하려면 다음 인터페이스 중 하나를 사용하세요.
- Google Cloud 콘솔: 인스턴스 페이지에서 인스턴스 옆에 빨간색 느낌표
도움말이 표시됩니다. 도움말 위에 마우스를 가져가면
No state상태가 표시됩니다. - gcloud CLI:
gcloud redis instances describe명령어를 사용합니다. 인스턴스 메타데이터에state: READY,state: REPAIRING또는 다른 상태가 표시되지 않는지 확인합니다.
CMEK로 보호되는 데이터 수동으로 다시 암호화
Memorystore for Redis는 기존 저장 데이터의 주문형 래핑 재지정을 지원하지 않습니다. 새 키 버전을 사용하여 기존 백업 또는 활성 지속성 파일을 다시 암호화하는 프로세스를 수동으로 트리거할 수 없습니다. 하지만 새 키 버전을 사용하여 새로 작성된 데이터를 암호화할 수 있습니다.
보호된 KMS 키 교체
보호된 KMS 키를 다른 KMS 키 또는 새 기본 키 버전으로 교체하면 Memorystore for Redis는 이 변경사항을 향후 작업에만 적용합니다.
보호된 KMS 키를 교체하면 다음과 같은 방식으로 리소스에 영향을 미칩니다.
- 백업: Memorystore for Redis는 백업을 Cloud Storage 버킷으로 내보냅니다. Cloud Storage 암호화 키는 데이터를 암호화하는 데 사용되는 키를 제어합니다.
- 지속성: 다음에 인스턴스가 다시 시작되거나 유지보수 이벤트가 발생하면 새 KMS 키가 사용됩니다.
- 기본 캐시: 이 키를 교체해도 영향을 미치지 않습니다. CMEK는 인메모리 데이터를 암호화하지 않습니다. 이 데이터는 저장 데이터로 간주되지 않기 때문입니다.
기본 CMEK 키 버전 사용 설정 또는 복원
기본 키 버전을 사용 설정하거나 복원하면 Memorystore for Redis에서 더 이상 인스턴스를 숨기지 않습니다.
조직 정책 제약조건
Redis용 Memorystore는 CMEK에 대한 조직 정책 제약조건을 지원합니다. 이러한 제약조건을 사용하면 인스턴스에 CMEK 보호를 적용하고 이 보호에 사용할 수 있는 Cloud KMS 키를 제한할 수 있습니다.
다음 조직 정책 제약조건을 구성할 수 있습니다.
constraints/gcp.restrictNonCmekServices: 이 제약조건을 사용하여 인스턴스에 CMEK 보호를 적용합니다. Redis용 Memorystore API가 이 제약조건의 서비스에 대한 정책 목록에 있으면 CMEK로 보호되지 않는 인스턴스를 만들 수 없습니다.Denyconstraints/gcp.restrictCmekCryptoKeyProjects: 이 제약조건을 사용하여 CMEK 보호에 사용할 수 있는 Cloud KMS 키를 제한합니다. 이 제약조건을 구성하면 CMEK 암호화를 사용하는 인스턴스는 허용된 프로젝트, 폴더 또는 조직의 키를 사용해야 합니다.
Redis용 Memorystore와 Redis용 Memorystore 클러스터
는 동일한 엔드포인트 (redis.googleapis.com)를 공유하므로 Redis용 Memorystore 클러스터의 클러스터와 독립적으로 인스턴스에 CMEK를 적용할 수 없습니다.
Google에서 Memorystore for Redis에 대해 관리하는 CMEK 관련 조직 정책 제약조건에 대한 자세한 내용은 조직 정책 제약조건을 참조하세요.
가격 책정
Memorystore for Redis는 다른 인스턴스와 마찬가지로 CMEK가 사용 설정된 인스턴스 비용을 청구합니다. 추가 비용은 없습니다. 자세한 내용은 Redis용 Memorystore 가격 책정을 참조하세요.
Cloud KMS API를 사용하여 CMEK를 관리합니다. CMEK로 인스턴스를 만들 때 Memorystore는 키를 주기적으로 사용하여 데이터를 암호화합니다.
Redis용 Memorystore가 키를 사용하면 키 비용과 암호화 및 복호화 작업에 대해 Cloud KMS에서 비용이 청구됩니다. 자세한 내용은 Cloud KMS 가격 책정을 참조하세요.
제한사항
Redis용 Memorystore에서 CMEK를 사용할 때는 다음과 같은 제한사항이 적용됩니다.
- 기존 인스턴스에서 CMEK를 사용 설정할 수 없습니다.
- 키, 키링, 인스턴스는 같은 리전에 있어야 합니다.
- 키에 대칭 암호화 알고리즘을 사용해야 합니다.
- Cloud KMS 암호화 및 복호화 비율에는 할당량이 적용됩니다.
다음 단계
- CMEK 자세히 알아보기
- CMEK를 사용하여 데이터 보안을 강화하는 방법 알아보기
- 백업에 대해 자세히 알아보기
- 지속성에 대해 자세히 알아보기