이 페이지에서는 Google Cloud Managed Service for Apache Kafka 클러스터에 고객 관리 암호화 키 (CMEK)를 구성하는 방법을 설명합니다.
메일 암호화 개요
기본적으로 Managed Service for Apache Kafka는 Google-owned and Google-managed encryption keys로 저장된 메시지를 암호화합니다. 추가 설정은 필요하지 않습니다.
저장 상태의 Managed Service for Apache Kafka 데이터를 보호하는 데 사용되는 암호화 키를 더 세밀하게 제어해야 하는 경우 클러스터를 만들 때 CMEK를 설정하면 됩니다. CMEK는 사용자가 소유한 암호화 키입니다. Cloud Key Management Service (Cloud KMS)에서 관리 및 저장됩니다. CMEK로 클러스터를 구성하면 서비스가 해당 키를 사용하여 저장 상태의 모든 클러스터 데이터를 자동으로 암호화합니다. CMEK를 사용하면 사용 패턴에 따라 추가 비용이 발생할 수 있습니다.
Apache Kafka용 관리형 서비스 클러스터와 연결된 CMEK는 키 암호화 키(KEK)입니다. KEK는 데이터 암호화 키 (DEK)를 암호화하는 데 사용됩니다. 그런 다음 DEK는 브로커에 연결된 영구 디스크의 미사용 데이터와 Cloud Storage의 계층화된 스토리지에 있는 데이터를 읽고 쓰는 데 사용됩니다.
Apache Kafka용 관리형 서비스 리소스는 리전별이므로 Kafka 클러스터와 동일한 리전에서 CMEK를 만드는 것이 좋습니다.
필수 역할 및 권한
관리형 Kafka 서비스 계정에는 CMEK를 사용하여 데이터를 암호화하고 복호화할 수 있는 권한이 있어야 합니다.
서비스 계정에 Cloud KMS 키에 대한 Cloud KMS 암호화/복호화(roles/cloudkms.cryptoKeyEncrypterDecrypter) 역할을 부여합니다.
gcloud kms keys add-iam-policy-binding KEY \
--keyring=KEY_RING \
--location=LOCATION \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter
다음을 바꿉니다.
KEY: 키 이름
KEY_RING: 키가 있는 키링의 이름
LOCATION: 키링의 Cloud KMS 위치입니다.
PROJECT_NUMBER: Apache Kafka용 관리형 서비스 클러스터가 포함된Google Cloud 프로젝트의 프로젝트 번호입니다.
Cloud KMS 키에 역할을 부여하는 방법에 대한 자세한 내용은 리소스에 역할 부여를 참고하세요.
키 순환
클러스터와 연결된 키는 변경할 수 없습니다. 대신 새 키 버전을 만들어 키의 기본 버전으로 설정하여 키를 순환할 수 있습니다.
브로커에 연결된 디스크의 경우 브로커를 다시 시작한 후에만 새 KEK가 적용됩니다. 클러스터의 용량 구성을 업데이트하여 브로커의 순차적 재시작을 강제할 수 있습니다. 예를 들어 클러스터 RAM 양을 변경할 수 있습니다.
모든 새 파티션 세그먼트 파일은 새 기본 키 버전을 사용하여 계층화된 스토리지에 작성됩니다. 새 기본 키 버전이 선택된 후 몇 분 정도 지연될 수 있습니다.
감사 로그
Cloud KMS는 키가 사용 설정 또는 사용 중지되거나 Managed Service for Apache Kafka에서 사용하여 메시지를 암호화 및 복호화할 때 감사 로그를 생성합니다. 이는 게시 또는 전송 가용성 문제를 디버깅하는 데 유용합니다.
Cloud KMS 키 ID는 Managed Service for Apache Kafka 클러스터 리소스의 감사 로그에 첨부됩니다. Managed Service for Apache Kafka에는 감사 로그에 다른 Cloud KMS 관련 정보가 포함되어 있지 않습니다.
CMEK 사용 중지 및 다시 사용 설정
CMEK를 사용 중지하는 방법에는 두 가지가 있습니다. 다음 방법 중 하나를 선택합니다.
클러스터와 연결된 Cloud KMS 키를 사용 중지합니다. 이 접근 방식은 해당 키와 연결된 모든 Cloud 리소스에 영향을 미칩니다.
Identity and Access Management(IAM)를 사용하여 관리형 Apache Kafka 서비스 에이전트 (
service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com)에서 CryptoKey 암호화/복호화 역할을 취소합니다. 이 접근 방식은 프로젝트의 모든 Apache Kafka용 관리형 서비스 클러스터와 CMEK를 사용하여 암호화된 메시지에 영향을 줍니다.
어느 작업도 즉시 액세스 취소를 보장하지는 않지만 일반적으로 IAM 변경사항은 더 빠르게 전파됩니다.
자세한 내용은 Cloud KMS 리소스 일관성 및 액세스 변경 전파를 참고하세요.
Apache Kafka용 관리 서비스가 Cloud KMS 키에 액세스할 수 없는 경우 오류와 함께 메시지 게시 및 전송이 실패합니다. 전송 및 게시를 재개하려면 Cloud KMS 키에 대한 액세스를 복원합니다.
Cloud KMS 키가 Apache Kafka용 관리형 서비스에 액세스할 수 있게 되면 12시간 이내에 게시를 사용할 수 있고 메시지 전송은 2시간 이내에 재개됩니다.
Cloud KMS가 1분 미만 정도로 간헐적으로 중단될 경우에는 게시 및 제공이 크게 중단되지 않을 수 있지만 Cloud KMS를 사용할 수 없는 시간이 늘어나면 키 취소와 동일한 영향을 줍니다.
제한사항
클러스터와 연결된 키는 변경할 수 없습니다. 대신 새 버전을 만들어 키를 순환할 수 있습니다.
기본 키가 아닌 키 버전을 사용 중지하면 로컬 디스크는 변경 없이 계속 작동합니다. 각 브로커는 다시 시작될 때 새 KEK를 다운로드합니다. 하지만 Cloud Storage는 원래 버전을 사용하여 암호화된 주제 세그먼트 파일에 액세스할 수 없으므로 이러한 세그먼트 파일에서 메시지를 사용할 수 없을 수 있습니다. 이전 데이터를 사용할 수 없을 수도 있습니다.
키의 기본 버전을 사용 중지하면 브로커가 계층화된 스토리지에 새 세그먼트 파일을 쓸 수 없으므로 로컬 디스크 사용률이 증가합니다. 또한 브로커 다시 시작이 실패합니다. 언제든지 사용자가 선제적으로 또는 서비스에서 시작한 클러스터 업데이트에 의해 다시 시작이 트리거될 수 있습니다.
Apache Kafka용 관리형 서비스 서비스 에이전트의 키 액세스 권한을 삭제하면 기본 키와 비기본 키 버전을 모두 사용 중지하는 경우와 유사한 동작이 발생합니다.
키를 삭제하면 클러스터가 종료되도록 예약되며 복구할 수 없습니다.
저장된 데이터의 재암호화를 요청할 수 없습니다. CMEK는 KEK로 사용되지만 재암호화하려면 데이터 암호화 키를 변경해야 합니다.
다음 단계
디스크 암호화에 대한 자세한 내용은 디스크 암호화 정보를 참고하세요.
Cloud Storage의 암호화에 대한 자세한 내용은 고객 관리 암호화 키를 참고하세요.