Capella는 특히 클라우드 서비스를 사용할 때 데이터 보안이 비즈니스에 얼마나 중요한지 잘 알고 있습니다. 그렇기 때문에 데이터 보호를 직접 제어할 수 있는 새로운 기능을 발표하게 되어 기쁩니다: 고객 관리 암호화 키(CMEK).
CMEK란 무엇인가요?
CMEK는 잘 알려진 클라우드 보안 관행으로, 자체 관리 암호화 키를 사용하여 미사용 데이터를 암호화 및 해독할 수 있습니다. 이 사례에서는 암호화 키가 생성되어 고객 소유 환경에 상주하며 타사 공급업체가 공급업체에 상주하는 고객 데이터를 암호화/해독하는 데 사용됩니다. 이 관행의 주요 목표는 고객이 암호화 알고리즘 및 키 교체 정책과 같은 보안 측면을 완전히 관리할 수 있도록 하는 것입니다.
누가 CMEK를 사용해야 하나요?
고객 관리형 암호화 키 시스템은 다음과 같은 비즈니스에 이상적입니다:
-
- 엄격한 규정 준수에 따라 매우 민감한 데이터를 처리하세요.
- 특정 데이터 보안 규정을 준수해야 합니다.
CMEK 인 카펠라 시작하기
고객 관리 암호화 키를 연결하는 기능은 다음을 통해 지원됩니다. 카펠라 관리 API. 현재 이 기능은 Capella의 모든 AWS 및 GCP 클러스터에서 사용할 수 있으며, 고객은 CMEK를 신규 또는 기존 클러스터에 연결할 수 있습니다.
내부적으로 Capella는 키의 내용을 알지 못하며 이 키를 사용하여 저장된 데이터를 단순히 암호화하고 해독합니다.
CMEK가 기존 Capella 클러스터와 연결되면 클러스터가 다시 배포되고 영구 볼륨이 이 키로 암호화됩니다. 이 작업은 또한 노드의 온라인 스왑 리밸런싱을 일으켜 Capella가 데이터를 안정적으로 암호화할 수 있도록 합니다.
이 블로그는 새로운 고객 관리 암호화 키를 생성하고 이를 Capella 클러스터에 연결하는 튜토리얼입니다. 이 과정에서 V4 관리 API를 사용하여 키를 생성, 연결 및 회전합니다.
전제 조건
클라우드 네이티브 키 관리 서비스(KMS)에서 키 만들기
먼저 클라우드 네이티브 KMS에 새 키를 생성합니다. 이렇게 하려면 프로그래밍 방식으로 또는 UI 콘솔을 통해 AWS 또는 GCP에서 KMS에 액세스할 수 있는 올바른 권한이 있는지 확인합니다.
클라우드 KMS 콘솔에서 키를 구성하는 동안 키가 다음과 같은 유형인지 확인합니다. 대칭. 이렇게 하면 암호화 및 암호 해독에 사용할 수 있는 단일 키가 생성됩니다.
두 번째로 중요한 단계는 허용할 키 사용을 정의하는 것입니다. 암호화 및 암호 해독 작업을 수행합니다. 이렇게 하면 이 키가 저장된 데이터를 암호화하고 해독하는 데 특별히 사용될 수 있습니다.
AWS:
GCP:
키의 지역성
AWS 또는 GCP에서 키를 구성할 때는 Capella 클러스터와 동일한 지역에 있는지 확인하세요. 두 클라우드 제공업체 모두 키의 지역성을 선택할 수 있으며, 다음 중 하나를 선택할 수 있습니다. 싱글 또는 다중 지역.
AWS에서 키가 다중 지역를 사용하려면 Capella 클러스터와 동일한 리전에 하나 이상의 키 복제본을 보유하는 것이 중요합니다. 그런 다음 이 복제본 키의 ARN(Amazon 리소스 이름)을 Capella 클러스터와 연결해야 합니다.
GCP에서는 글로벌 키 링은 모든 GCP 위치에서 키를 사용할 수 있도록 합니다. 확인 Cloud KMS를 위한 GCP의 지원 위치 를 클릭하고 Capella 클러스터의 위치가 KMS에서 지원되는 위치와 일치하는지 확인합니다.
Capella V4 관리 API 설정
이 튜토리얼의 다음 단계에서는 Capella에서 V4 관리 API를 실행할 수 있는 액세스 권한이 필요합니다. 팔로우 이 블로그 를 클릭하면 V4 관리 API를 빠르게 시작할 수 있습니다.
1단계: 카펠라가 키에 액세스할 수 있게 만들기
이제 자체 관리 클라우드 계정에 CMEK가 성공적으로 생성되었으므로, Capella가 이 키를 사용하여 저장된 데이터를 암호화/복호화할 수 있는지 확인해야 합니다.
이 액세스 권한을 제공하려면 먼저 Capella에 배포된 각 조직에 고유한 Capella의 해당 클라우드 계정 ID를 캡처해야 합니다.
이 V4 API를 실행하여 정보를 가져옵니다:
1 |
curl --요청 GET \ http://cloudapi.cloud.couchbase.com/v4/organizations/{organizationId}/cloudAccounts --헤더 'Authorization: Bearer ' |
샘플 응답은 다음과 같이 표시됩니다.
1 2 3 4 5 |
{ "AWS-카펠라-계정": "1234567890", "azure-capella-subscription": "cb-1234567890abcdef", "gcp-capella-project": "cb-1234567890abcdef" } |
해당 클라우드 계정 ID를 복사합니다. 예: CMEK가 AWS에 있는 경우 Capella AWS 계정 ID를 복사합니다. 또한 Capella 클러스터의 클라우드 제공업체와 동일한 클라우드 제공업체에서 CMEK를 만들어야 합니다.
키 액세스 정책 업데이트
AWS에서는 다음과 같이 CMEK의 액세스 정책을 업데이트하여 Capella에 대한 액세스 권한을 추가합니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "Sid": "키 사용 허용", "효과": "허용", "교장": { "AWS": "arn:aws:iam:::root" }, "액션": [ "kms:DescribeKey", "kms:일반 텍스트 없이 데이터 키 생성", "kms:해독", "kms:ReEncrypt*" ], "리소스": "*" }, { "Sid": "영구 리소스 첨부 허용", "효과": "허용", "교장": { "AWS": "arn:aws:iam:::root" }, "액션": "kms:CreateGrant", "리소스": "*", "조건": { "Bool": { "kms:GrantIsForAWSResource": "true" } } } |
교체 <capella-aws-account-id> 값이 있는 플레이스홀더 AWS-카펠라-계정 를 반환합니다.
GCP의 경우, 간단히 클라우드 KMS 크립토키 인크립터/복호화기 Capella의 서비스 계정에 대한 권한을 설정합니다: rc-cluster-admin@.iam.gserviceaccount.com.
2단계: 카펠라에게 키에 대해 알리기
1단계에서는 Capella가 키를 사용하여 미사용 데이터를 암호화/복호화할 수 있는지 확인했습니다. 이 단계에서는 이러한 CMEK가 존재하며 클러스터에서 사용할 수 있음을 Capella에 알려야 합니다.
이제 Capella 조직에 CMEK 메타데이터를 추가하겠습니다:
1 2 3 4 5 6 7 8 9 10 11 |
curl --요청 POST \ http://cloudapi.cloud.couchbase.com/v4/organizations/{organizationId}/cmek \. --헤더 'Authorization: 무기명 ' \ --헤더 '콘텐츠 유형: 애플리케이션/json' \ --데이터 '{ "이름": "테스트 키", "설명": "키에 대한 설명", "config": { "arn": "arn:aws:kms:us-east-1::key/" } }' |
여기서 키 구성 ARN은 고객 소유의 AWS 계정에 표시되는 키의 ARN입니다:
GCP의 경우, API 페이로드는 리소스 이름 를 입력합니다.
1 2 3 4 5 6 7 8 9 10 |
curl --요청 POST \ http://cloudapi.cloud.couchbase.com/v4/organizations/{organizationId}/cmek \. --헤더 'Authorization: 무기명 ' \ --헤더 '콘텐츠 유형: 애플리케이션/json' \ --데이터 '{ "이름": "테스트 키", "설명": "키에 대한 설명", "config": { "리소스 이름": "projects//locations/global/keyRings//cryptoKeys/" }}' |
이 API는 CMEK ID로 응답합니다. 이 ID는 이후 API 호출에 사용되므로 주의하세요.
키를 Capella에 추가하면 이 키에 대한 V4 API를 사용하여 키 목록, 읽기, 삭제 작업을 쉽게 수행할 수 있습니다. 자세한 내용은 이 API 사양을 참조하세요.
Capella는 키와 활발하게 연결된 클러스터가 없는 경우에만 키 삭제를 허용한다는 점에 유의하세요.
3단계: 클러스터에 암호화 키 연결하기
다음으로, 이 CMEK를 사용해 Capella 클러스터 중 하나에서 데이터를 암호화/복호화하려고 합니다. 이렇게 하려면 Capella UI에서 특정 클러스터의 프로젝트 ID와 클러스터 ID를 기록해 두세요.
이 API를 사용하여 CMEK를 해당 클러스터에 연결합니다. 해당 클러스터의 cmekId 는 2단계에서 CMEK 메타데이터가 Capella에 추가되었을 때 받은 ID입니다:
1 2 3 |
curl --요청 POST \ http://cloudapi.cloud.couchbase.com/v4/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId}/cmek/{cmekId}/associate \. --헤더 'Authorization: 무기명 ' |
이 API가 호출되면 클러스터가 다시 배포되고 Capella는 모든 데이터를 새로운 영구 볼륨으로 이동합니다. 이러한 볼륨은 제공된 CMEK로 새로 생성됩니다. 이 작업은 가동 중단 시간 없이 클러스터의 모든 노드에서 스왑 리밸런싱을 수행합니다. 이 작업은 데이터와 클러스터 크기에 따라 일반적으로 5~10분 정도 소요됩니다.
마지막으로 클러스터가 정상 상태로 돌아오고 클러스터와 연결된 CMEK를 볼 수 있습니다. 이 정보는 클러스터 세부 정보 GET API 호출합니다.
클러스터에서 키 연결을 해제하려면 이 API를 실행하기만 하면 됩니다:
1 2 3 |
curl --요청 POST \ http://cloudapi.cloud.couchbase.com/v4/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId}/cmek/{cmekId}/unassociate \. --헤더 'Authorization: 무기명 ' |
이렇게 하면 클러스터가 다시 배포되고, 키가 제거되며, Capella에서 완전히 관리하는 새 암호화 키를 사용하여 저장된 데이터를 암호화합니다. 이 작업 역시 스왑 재조정을 수행하며 몇 분 정도 소요됩니다.
키를 새 클러스터에 연결하기
키를 실행하여 새 클러스터에 연결할 수 있습니다. 클러스터 API 생성 를 클릭하고 다음과 같이 요청 페이로드에 CMEK ID를 전달합니다:
4단계: 암호화 키 회전하기
데이터 보안 강화의 중요한 측면은 일정에 따라 암호화 키를 순환하는 것입니다. Capella를 사용하면 키 교체에 대한 알림은 제공하지만 키 자체를 교체할 수는 없습니다. 보안 거버넌스 정책에 따라 교체 주기를 결정할 수 있습니다.
이렇게 하려면 클라우드 네이티브 KMS 계정에서 새 CMEK를 만듭니다. 다음 API를 호출하여 Capella 클러스터와 연결된 동일한 CMEK ID에 대한 키 ARN 또는 키 리소스 이름을 업데이트하도록 Capella에 알립니다.
1 2 3 4 5 6 7 8 9 |
curl --요청 PUT \ http://cloudapi.cloud.couchbase.com/v4/organizations/{organizationId}/cmek/{cmekId} \ --헤더 'Authorization: 무기명 ' \ --헤더 '콘텐츠 유형: 애플리케이션/json' \ --데이터 '{ "config": { "arn": "arn:aws:kms:us-east-1::key/" } }' |
AWS와 GCP에서는 동일한 키 리소스에 대한 로테이션 정책을 제공할 수 있지만, 제한된 액세스 권한으로 인해 Capella는 클라우드 계정에서 키가 자동으로 로테이션되었는지 여부를 감지할 수 없습니다. 따라서 위의 키 로테이션 API는 원래 키의 리소스 이름과 다른 키 리소스 이름만 허용합니다.
이 API가 호출되면 Capella는 해당 CMEK ID를 가진 키를 사용하는 모든 클러스터를 자동으로 감지하고 관련 CMEK를 순환하기 위해 재디플로이먼트를 수행합니다. Capella는 이전 키 리소스를 제거하고 새 키 리소스를 클러스터의 퍼시스턴트 볼륨에 연결합니다. 이 작업은 또한 다운타임 없이 클러스터의 모든 노드에 걸쳐 데이터의 스왑 재밸런싱을 수행합니다.
마지막으로 클러스터가 정상 상태로 돌아왔으며 새 키 리소스가 해당 CMEK ID와 연결된 것을 확인할 수 있습니다.
결론
Capella의 모든 Couchbase 클러스터에 고객 관리 암호화 키를 사용하여 데이터 보안을 제어할 수 있는 방법입니다.
리소스 및 다음 단계
고객 관리 암호화 키 사용에 대한 자세한 설명서와 V4 관리 API 참조 링크를 확인하세요:
질문이나 의견이 있으시면 아래에 댓글을 남겨 주세요. The 카우치베이스 포럼 또는 카우치베이스 디스코드 채널도 질문하기 좋은 곳입니다.