Amazon Web Services KMS 에서 생성하고, 소유하고, 관리 고객 관리형 키( CMK )를 사용하여 Atlas 에 있는 미사용 데이터 암호화합니다.
이 페이지에서는 Atlas 프로젝트 와 해당 프로젝트 의 클러스터에서 Amazon Web Services KMS 사용하여 고객 키 관리 구성하는 방법을 설명합니다.
전제 조건
MongoDB 프로젝트의 AWS KMS에서 고객 관리형 키를 활성화하려면 다음을 수행해야 합니다.
- M10 이상의 클러스터를 사용해야 합니다.
충분한 권한이 있는 AWS IAM 역할이 있어야 합니다. Atlas에는 키로 다음 조치를 수행할 수 있는 권한이 있어야 합니다.
참고
AWS KMS 키를 생성한 IAM 역할 대신 다른 AWS 계정의 AWS IAM 역할과 함께 AWS KMS 키를 사용하려면 충분한 권한이 있는지 확인합니다.
외부 AWS 계정을 포함하도록 AWS KMS 키 아래에 키 정책 설명(statement)을 추가합니다.
외부 AWS 계정의 IAM 역할에 대한 IAM 인라인 정책을 추가합니다.
IAM 역할 및 고객 마스터 키에 대한 종합적인 설명은 AWS 설명서를 참조하세요.
위 권한을 확인한 후 일반적인 단계에 따라 Atlas에서 KMS 설정을 구성할 수 있습니다. 단, 다음과 같은 경우는 예외입니다.
- AWS KMS 키에 대한 전체 ARN 을 제공해야 합니다(예
arn:aws:kms:eu-west-2:111122223333:key/12345678-1234-1234-1234-12345678) 대신 마스터 키 ID(예12345678-1234-1234-1234-12345678)를 AWS KMS 키 ID 필드에 입력합니다.
IAM 역할 생성하는 방법에 대한 학습 Amazon Web Services 설명서의 IAM 역할을 참조하세요.
Atlas는 미사용 데이터 암호화가 활성화된 프로젝트의 모든 클러스터에 대해 동일한 IAM 역할 및 AWS KMS 키 설정을 사용합니다.
AWS KMS 구성에 필요하다면,Atlas IP 주소 및 클러스터 노드의 공용 IP 주소 또는DNS 호스트 이름에서의 액세스를 허용 하여 Atlas가 KMS 와 통신할 수 있도록 합니다. 정책 문서에 IP 주소 조건 연산자 를 구성하여 managed IAM 역할 정책 에 IP 주소를 포함해야 합니다. 노드 IP 주소가 변경되면 연결 끊김을 방지하기 위해 구성을 업데이트해야 합니다.
절차
프로젝트의 암호화 키에 역할 기반 액세스 활성화
Atlas 에서 프로젝트 의 Advanced 페이지로 이동합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.
아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.
사이드바에서 Security 제목 아래의 Database & Network Access를 클릭합니다.
사이드바에서 Advanced를 클릭합니다.
고급 페이지가 표시됩니다.
Authorize a new IAM role 링크를 클릭하여 미사용 데이터 암호화를 위해 AWS KMS 키에 액세스할 수 있도록 Atlas에 AWS IAM 역할을 승인합니다.
미사용 데이터 암호화를 위한 AWS KMS 키에 액세스하려면, AWS CLI를 사용하여 새 역할 생성 절차를 따라 새로운 AWS IAM 역할을 생성합니다. 기존의 AWS IAM 역할을 승인하려면 기존 역할에 신뢰 관계 추가 절차를따르세요.
AWS 콘솔 또는 CLI 통해 AWS IAM 역할 에 액세스 정책을 추가합니다. 자세한 내용은 IAM 정책 관리를 참조하세요.
참고
이 정책 문서는 MongoDB의 AWS 주체가 고객의 KMS 키를 암호화 및 복호화 작업에 사용할 수 있도록 허용합니다. Atlas 주체는 비밀이 아니며 모든 Atlas 고객에게 사용됩니다. 이는 매우 제한적이고 목적이 제한된 AWS 계정으로, IAM 사용자 외에는 다른 리소스가 없습니다. ExternalId는 정책 성명서에서 각 Atlas 프로젝트마다 고유하지만 비밀은 아닙니다. ExternalId는 교차 컨텍스트(혼동된 대리자) 취약성의 가능성을 완화하는 데 사용됩니다. 모든 고객의 키에 액세스하기 위해 Atlas가 공통 주체를 사용하는 방식은 Amazon에서 권장하는 액세스 패턴이며, 여기에 설명되어 있습니다.
미사용 데이터 암호화에 대한 액세스 정책은 다음과 유사합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:DescribeKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/12x345y6-7z89-0a12-3456-xyz123456789" ] } ] }
cloudProviderAccess 엔드포인트에 게시 요청 보냅니다.
API 엔드포인트를 사용하여 새 AWS IAM 역할을 생성합니다. Atlas는 AWS 계정 인증에 이 역할을 사용합니다.
다음 단계에서 사용할 수 있도록 반환된 필드 값 atlasAWSAccountArn 및 atlasAssumedRoleExternalId를 준비해 두세요.
AWS IAM 역할 신뢰 정책을 수정합니다.
AWS 관리 콘솔에 로그인합니다.
Identity and Access Management (IAM) 서비스로 이동합니다.
왼쪽 탐색에서 Roles 을 선택합니다.
역할 목록에서 Atlas 액세스에 사용하려는 기존 IAM 역할을 클릭합니다.
0}Trust Relationships 탭을 선택합니다.
Edit trust relationship 버튼을 클릭합니다.
Policy Document를 편집합니다. 다음 내용이 포함된 새
Statement객체를 추가합니다.참고
이 정책 문서는 MongoDB의 AWS 주체가 고객의 KMS 키를 암호화 및 복호화 작업에 사용할 수 있도록 허용합니다. Atlas 주체는 비밀이 아니며 모든 Atlas 고객에게 사용됩니다. 이는 매우 제한적이고 목적이 제한된 AWS 계정으로, IAM 사용자 외에는 다른 리소스가 없습니다.
ExternalId는 정책 성명서에서 각 Atlas 프로젝트마다 고유하지만 비밀은 아닙니다.ExternalId는 교차 컨텍스트(혼동된 대리자) 취약성의 가능성을 완화하는 데 사용됩니다. 모든 고객의 키에 액세스하기 위해 Atlas가 공통 주체를 사용하는 방식은 Amazon에서 권장하는 액세스 패턴이며, 여기에 설명되어 있습니다.참고
1단계에서 강조 표시된 줄을 API 호출에서 반환된 값으로 바꿉니다.
{ "Version": "2020-03-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "<atlasAWSAccountArn>" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<atlasAssumedRoleExternalId>" } } } ] } Update Trust Policy 버튼을 클릭합니다.
새 IAM 역할에 권한을 부여합니다.
Use the API endpoint to authorize and configure the new IAM Assumed Role ARN. If the API call is successful, you can use the roleId value when configuring Atlas services that use AWS.
프로젝트에서 역할 권한 부여를 통해 AWS KMS 활성화
Send a PATCH request to the encryptionAtRest API endpoint to update the awsKms.roleId field with your authorized AWS IAM role ID.
참고
이 curl 명령은 API 키 대신 서비스 계정 액세스 토큰(OAuth 2.0)을 사용하여 인증합니다. To learn more, see 자세한 학습 은 Atlas 관리 API 시작하기를 참조하세요.
예시
curl --header "Authorization: Bearer {ACCESS-TOKEN}" \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --include \ --request PATCH \ "https://cloud.mongodb.com/api/atlas/v1.0/groups/{groupId}/encryptionAtRest?pretty=true&envelope=true" \ --data ' { "awsKms": { "enabled": true, "roleId": "<roleId>", "customerMasterKeyID": "<master-key-id>", "region": "<aws-region>" } }'
프로젝트의 암호화 키에 대한 역할 기반 액세스 활성화 후, Atlas cluster에 대한 고객 키 관리 활성화에 따라 프로젝트의 각 Atlas 클러스터에 대해 고객 관리 키를 활성화.
프로젝트의 암호화 키를 역할 기반 액세스로 전환
2620211월부터, Amazon Web Services Atlas 내에서 Amazon Web Services KMS 암호화 키에 대한 액세스 관리하기 위해 IAM 사용자 대신 IAM 역할을 사용하도록 요구합니다. 처음에 IAM 사용자 자격 증명 사용하여 Amazon Web Services KMS 키에 액세스 프로젝트 구성한 경우, 다음 절차에 따라 역할 기반 액세스 로 전환하여 이 새로운 요구 사항을 준수합니다.
중요
암호화 키를 역할 기반 액세스로 전환하면 해당 프로젝트의 암호화 키에 대해 역할 기반 액세스 구성을 취소하고 자격 증명 기반 액세스로 되돌릴 수 없습니다.
Atlas 에서 프로젝트 의 Advanced 페이지로 이동합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.
아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.
사이드바에서 Security 제목 아래의 Database & Network Access를 클릭합니다.
사이드바에서 Advanced를 클릭합니다.
고급 페이지가 표시됩니다.
미사용 시 미사용 데이터 암호화를 위해 AWS KMS 키에 액세스할 수 있도록 Atlas에 AWS IAM 역할을 승인하고 할당하십시오.
미사용 데이터 암호화를 위한 AWS KMS 키에 액세스하려면, AWS CLI를 사용하여 새 역할 생성 절차를 따라 새로운 AWS IAM 역할을 생성합니다. 기존의 AWS IAM 역할을 승인하려면 기존 역할에 신뢰 관계 추가 절차를따르세요.
Atlas 관리 API 사용하여 암호화 키 관리 업데이트 하려면 위 절차에설명된 것과 동일한 단계를 사용합니다.
Atlas 클러스터에 대한 고객 키 관리 활성화
프로젝트의 암호화 키에 역할 기반 액세스를 활성화한 후에는 암호화하려는 데이터가 포함된 각 Atlas cluster 에 대해 고객 키 관리 활성화 해야 합니다.
참고
해당 프로젝트의 클러스터에 대한 고객 키 관리를 사용하려면 Project Owner 역할이 있어야 합니다.
새 클러스터의 경우, 클러스터를 만들 때 자체 암호화 키 관리 설정을 Yes로 전환합니다.
기존 클러스터의 경우:
Atlas 에서 프로젝트 의 Clusters 페이지로 이동합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.
사이드바에서 Database 제목 아래의 Clusters를 클릭합니다.
Clusters(클러스터) 페이지가 표시됩니다.
검색 노드에 대한 고객 키 관리 활성화
By default, MongoDB and search processes run on the same nodes. With this architecture, customer-managed encryption applies to your database data, but it does not apply to search indexes.
전용 검색 노드를 활성화 하면 검색 프로세스가 별도의 노드에서 실행 . 이를 통해 검색 노드 데이터 암호화를 활성화 할 수 있으므로 동일한 고객 관리 키로 데이터베이스 데이터와 검색 인덱스를 모두 암호화하여 포괄적인 암호화 적용 범위를 확보할 수 있습니다.
공개 미리 보기 기간 동안에는 Atlas Infinite 클러스터 클러스터에서 전용 검색 노드가 지원되지 않습니다.
참고
Database nodes and Search Nodes use different encryption methods with the same customer-managed keys. Database nodes use the WiredTiger Encrypted Storage Engine, while Search Nodes use encryption at the disk level.