Docs Menu
Docs Home
/
MongoDB Atlas
/ /

AWS KMS로 고객 키 관리

이 페이지의 내용

  • 필요한 액세스 권한
  • AWS KMS로 고객 관리형 키 활성화
  • 예시
  • 전제 조건
  • 프로젝트의 암호화 키에 역할 기반 액세스 활성화
  • 프로젝트의 암호화 키에 대한 역할 기반 액세스로 전환
  • Atlas 클러스터에 대한 고객 키 관리 활성화
  • AWS 고객 마스터 키 교체
  • MongoDB 마스터 키 - MongoDB의 책임
  • 사용자의 AWS CMK는 사용자의 책임입니다.
  • 절차
  • 장애 시 AWS KMS 리전 재구성하기
  • 절차
  • 관련 주제

참고

2021년 1월 26일 릴리스부터 고객 키 관리를 위해 AWS KMS 암호화 키에 대한 액세스를 관리하려면 IAM 사용자 대신 AWS IAM 역할을 사용해야 합니다.

AWS IAM 사용자에서 역할로 이동할 때 새 역할이 이전 AWS 고객 마스터 키에 액세스할 수 있는지 확인합니다.

중요

서버리스 인스턴스에서는 사용할 수 없는 기능입니다.

현재 서버리스 인스턴스는 이와 같은 기능을 지원하지 않습니다. 자세히 보려면 서버리스 인스턴스 제한을참조합니다.

미사용 데이터 암호화를 위해 AWS KMS 키에 액세스하려면 AWS IAM 역할을 사용하도록 Atlas 프로젝트를 구성할 수 있습니다. 기존 역할을 사용하거나 프로젝트에 대해 미사용 데이터 암호화를 허용할 때 새 역할을 만들 수 있습니다.

이 페이지에서는 역할 기반 액세스를 위해 Atlas 프로젝트의 고객 키 관리를 구성하는 방법을 설명합니다.

아직 신규 또는 기존 Atlas 프로젝트에 대해 미사용 데이터 암호화를 활성화하지 않은 경우, 프로젝트의 암호화 키에 역할 기반 액세스 활성화 절차에 따라 Atlas 프로젝트에 대해 미사용 데이터 암호화를 활성화하세요. 이미 미사용 데이터 암호화를 활성화하고 암호화 키에 대한 자격 증명 기반 액세스를 구성한 Atlas 프로젝트가 있는 경우, 프로젝트의 암호화 키에 대한 역할 기반 액세스로 전환 절차에 따라 암호화 키에 대한 역할 기반 액세스로 전환하세요.

Atlas 프로젝트의 클러스터에서 활성화하기 전에 해당 프로젝트에 대한 고객 키 관리를 구성해야 합니다.

다음도 참조하세요.

  • 통합 AWS 액세스 설정

고객 키 관리를 구성하려면 프로젝트에 대한 Project Owner 액세스 권한이 있어야 합니다.

2} 액세스 권한이 있는 사용자는 프로젝트에 자신을 으로 추가해야 Organization Owner Project Owner 합니다.

Atlas의 고객 키 관리는 봉투 암호화라는 프로세스를 따릅니다. 이 프로세스는 하나의 키를 다른 키로 암호화하여 여러 계층의 암호화를 생성합니다. 고객 키 관리를 활성화하기 위해 Atlas는 다음과 같은 암호화 키를 사용합니다.

Customer-Managed Key (CMK)

고객 관리형 키는 AWS KMS에서 생성, 소유 및 관리하는 암호화 키입니다. AWS KMS에서 CMK를 생성하고 프로젝트 수준에서 Atlas에 연결합니다. AWS KMS에서 사용되는 CMK에 대해 자세히 알아보려면 AWS KMS 설명서를 참조하세요.

Atlas는 이 키를 MongoDB 마스터 키를 암호화하는 데에만 사용합니다.

MongoDB Master Key

Atlas cluster 의 각 노드 는 MongoDB 마스터 키를 생성합니다. MongoDB 마스터 키는 MongoDB Server 가 데이터베이스별 암호화 키를 암호화하는 데 사용하는 암호화 키입니다. Atlas 는 암호화됨 키 사본을 로컬에 저장합니다.

이 키는 CMK로 암호화되며 데이터베이스별 암호화 키를 암호화합니다.

Per-Database Encryption Key

또한 Atlas 클러스터의 각 노드는 클러스터의 데이터베이스별로 암호화 키를 생성합니다. Atlas는 이러한 키를 사용하여 이러한 키를 암호화하고 저장하는 WiredTiger를 통해 데이터를 읽고 씁니다.

이 키는 MongoDB Master Key로 암호화됩니다.

3노드 복제본 세트에 대한 다음 암호화 계층 구조를 가정해 보겠습니다. Atlas는 AWS KMS의 CMK를 사용하여 클러스터의 각 노드에 대해 고유한 MongoDB 마스터 키를 암호화합니다. 또한 각 노드에는 3개의 데이터베이스가 있으며, 각 데이터베이스는 고유한 암호화 키로 암호화됩니다. 클러스터가 시작되면 Atlas는 AWS KMS의 CMK를 사용하여 MongoDB 마스터 키의 암호를 해독하고 이를 MongoDB Server에 제공합니다.

참고

고객 마스터 키의 Atlas의 액세스 권한을 취소하면 Atlas는 클러스터의 노드를 종료하며 고객 마스터 키의 액세스 권한을 복원할 때까지 데이터에 액세스할 수 없습니다.

AWS KMS와 Atlas를 사용한 고객 마스터 키 워크플로 다이어그램
클릭하여 확대

MongoDB 프로젝트의 AWS KMS에서 고객 관리형 키를 활성화하려면 다음을 수행해야 합니다.

  • M10 이상의 클러스터를 사용해야 합니다.

  • 클라우드 백업을 사용하여 백업 스냅샷을 암호화하세요. 레거시 백업은 지원되지 않습니다.

  • 대칭형 AWS KMS 키가 있어야 합니다. 키를 생성하는 방법을 알아보려면 AWS 문서의 키 생성을 참조하세요.

    참고

    리전 장애 시 회복 탄력성을 보장하려면 KMS 키를 멀티 리전 키로 구성하세요.

    자세한 내용은 장애 시 AWS KMS 리전 재구성을 참조하세요.

  • 충분한 권한이 있는 AWS IAM 역할이 있어야 합니다. Atlas에는 키로 다음 조치를 수행할 수 있는 권한이 있어야 합니다:

    참고

    AWS KMS 키를 생성한 IAM 역할 대신 다른 AWS 계정의 AWS IAM 역할과 함께 AWS KMS 키를 사용하려면 충분한 권한이 있는지 확인합니다.

    • 외부 AWS 계정을 포함하도록 AWS KMS 키 아래에 키 정책 설명(statement)을 추가합니다.

    • 외부 AWS 계정의 IAM 역할에 대한 IAM 인라인 정책을 추가합니다.

    IAM 역할 및 고객 마스터 키에 대한 종합적인 설명은 AWS 설명서를 참조하세요.

    위 권한을 확인한 후 일반적인 단계에 따라 Atlas에서 KMS 설정을 구성할 수 있습니다. 단, 다음과 같은 경우는 예외입니다.

    • <span tabindex=""0"" class=""leafygreen-ui-vm4wms"">AWS</span> <span tabindex=""0"" class=""leafygreen-ui-vm4wms"">KMS</span> 키 ID 필드에 마스터 키 ID (예: 12345678-1234-1234-1234-12345678) 대신에 <span tabindex=""0"" class=""leafygreen-ui-vm4wms"">AWS</span> <span tabindex=""0"" class=""leafygreen-ui-vm4wms"">KMS</span> 키의 전체 <span tabindex=""0"" class=""leafygreen-ui-vm4wms"">ARN</span> (예: arn:aws:kms:eu-west-2:111122223333:key/12345678-1234-1234-1234-12345678)을 제공해야 합니다.

    IAM 역할을 만드는 방법을 알아보려면 AWS 설명서에서 IAM 역할을 참조하세요.

    Atlas는 미사용 데이터 암호화가 활성화된 프로젝트의 모든 클러스터에 대해 동일한 IAM 역할 및 AWS KMS 키 설정을 사용합니다.

  • AWS KMS 구성에 필요한 경우, Atlas가 KMS와 통신할 수 있도록 Atlas IP 주소 및 클러스터 노드의 공용 IP 주소 또는 DNS 호스트 이름에서 액세스를 허용하세요. 정책 문서에 IP 주소 조건 연산자를 구성하여 관리되는 IAM 역할 정책에 IP 주소를 포함해야 합니다. 노드 IP 주소가 변경되면 연결이 중단되지 않도록 구성을 업데이트해야 합니다.

1
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Security 제목 아래의 Advanced를 클릭합니다.

    고급 페이지가 표시됩니다.

2
3

미사용 데이터 암호화를 위한 AWS KMS 키에 액세스하려면, AWS CLI를 사용하여 새 역할 생성 절차를 따라 새로운 AWS IAM 역할을 생성합니다. 기존의 AWS IAM 역할을 승인하려면 기존 역할에 신뢰 관계 추가 절차를따르세요.

4

참고

이 정책 문서는 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"
]
}
]
}
5
6
  1. 0} 드롭다운 목록에서 할당할 역할을 선택합니다.AWS IAM role

  2. Customer Master Key ID 필드에 암호화 키를 지정합니다.

  3. 암호화 키에 대한 AWS 리전을 선택합니다.

1

API 엔드포인트를 사용하여 새 AWS IAM 역할을 생성합니다. Atlas는 AWS 계정 인증에 이 역할을 사용합니다.

다음 단계에서 사용할 수 있도록 반환된 필드 값 atlasAWSAccountArnatlasAssumedRoleExternalId를 준비해 두세요.

2
  1. AWS 관리 콘솔에 로그인합니다.

  2. Identity and Access Management (IAM) 서비스로 이동합니다.

  3. 왼쪽 탐색에서 Roles 을 선택합니다.

  4. 역할 목록에서 Atlas 액세스에 사용하려는 기존 IAM 역할을 클릭합니다.

  5. 0}Trust Relationships 탭을 선택합니다.

  6. Edit trust relationship 버튼을 클릭합니다.

  7. 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>"
    }
    }
    }
    ]
    }
  8. Update Trust Policy 버튼을 클릭합니다.

3

API 엔드포인트를 사용하여 새로운 IAM 가정 역할 ARN을 승인하고 구성합니다. API 호출이 성공하면 AWS를 사용하는 Atlas 서비스를 구성할 때 roleId 값을 사용할 수 있습니다.

4

PATCH 요청을 encodingAtRest API 엔드포인트로 전송하여 권한이 부여된 AWS IAM 역할 ID로 awsKms.roleId 필드를 업데이트합니다.

예시

curl --user "{public key}:{private key}" --digest \
--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>"
}
}'

중요

암호화 키를 역할 기반 액세스로 전환하면 해당 프로젝트의 암호화 키에 대해 역할 기반 액세스 구성을 취소하고 자격 증명 기반 액세스로 되돌릴 수 없습니다.

1
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Security 제목 아래의 Advanced를 클릭합니다.

    고급 페이지가 표시됩니다.

2
3
4

미사용 데이터 암호화를 위한 AWS KMS 키에 액세스하려면, AWS CLI를 사용하여 새 역할 생성 절차를 따라 새로운 AWS IAM 역할을 생성합니다. 기존의 AWS IAM 역할을 승인하려면 기존 역할에 신뢰 관계 추가 절차를따르세요.

Atlas 관리 API를 사용하여 암호화 키 관리를 업데이트하려면 위 절차에 설명된 것과 동일한 단계를 따르세요.

프로젝트의 암호화 키에 대한 역할 기반 액세스를 활성화하도록 설정한 후에는 암호화하려는 데이터가 포함된 각 Atlas 클러스터에 대해 고객 키 관리를 활성화해야 합니다.

참고

해당 프로젝트의 클러스터에 대한 고객 키 관리를 사용하려면 Project Owner 역할이 있어야 합니다.

새 클러스터의 경우, 클러스터를 만들 때 자체 암호화 키 관리 설정을 Yes로 전환합니다.

기존 클러스터의 경우:

1
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.

  3. 아직 표시되지 않은 경우 사이드바에서 Clusters를 클릭합니다.

    Clusters(클러스터) 페이지가 표시됩니다.

2

암호화하려는 데이터를 포함하는 클러스터에 대해 을 클릭한 다음 Edit Configuration을 선택합니다.

3
  1. Additional Settings 패널을 펼칩니다.

  2. 0} 설정을 Manage your own encryption keysYes 전환합니다.

  3. 클러스터의 Require Private Networking 설정 상태를 확인합니다.

    프로젝트 수준에서 Atlas에 대해 CMK(사설 네트워킹 사용)를 사용한 미사용 데이터 암호화를 구성한 경우 상태는 Active입니다. 프로젝트에 대한 비공개 엔드포인트 연결을 구성하지 않은 경우 상태는 Inactive입니다.

4
  1. Review Changes를 클릭합니다.

  2. 변경 사항을 검토한 다음 Apply Changes을 클릭하여 클러스터를 업데이트합니다.

참고

다음 배포에서는 이 기능 을 사용할 수 없습니다.

  • 서버리스 인스턴스

  • M0 클러스터

  • M2/M5 클러스터

  • Flex 클러스터

학습 내용은 제한 사항을 참조하세요.

자체 cloud 제공자 KMS 를 사용하는 경우 Atlas 는 최소 90 일마다 MongoDB 마스터 키를 자동으로 로테이션합니다. 유지 관리 기간이 구성되어 있는 경우 유지 관리 기간 기간 동안 키 로테이션이 시작됩니다. 유지 관리(수동 또는 자동)를 연기하면 키가 90일 표시를 지나 회전할 수 있습니다. 키는 롤링 방식으로 회전하며 프로세스 에서 데이터를 다시 쓸 필요가 없습니다.

Atlas는 AWS에서 제공하는 미사용 데이터 암호화에 사용되는 AWS CMK를 자동으로 순환하지 않습니다.

프로젝트에 대해 미사용 데이터 암호화를 활성화 alert 하면Atlas 는 기본적으로 90 일마다 Amazon Web Services CMK 를 로테이션하도록 알려주는 Atlas 를 생성합니다. 이 경고의 기간을 구성할 수 있습니다.

AWS CMK를 직접 순환하거나 CMK자동으로 순환하도록 AWS KMS 인스턴스를 구성할 수 있습니다. 자동 AWS CMK 순환을 구성하는 경우 기본 순환 기간은 약 365일입니다.

이미 AWS에서 자동 CMK 로테이션을 설정한 상태에서 90일마다 CMK를 로테이션하라는 Atlas의 경고를 받지 않으려면 기본 경고 기간을 365일보다 길게 수정하거나 경고를 비활성화할 수 있습니다.

이 페이지에서는 Atlas에서 새 키를 만들고 CMK ID를 업데이트하여 Atlas 프로젝트 CMK를 순환하는 방법을 설명합니다. 이 키 순환 방식은 AWS KMS 자동 CMK 순환에 비해 순환 주기를 더 세밀하게 제어할 수 있습니다.

중요

미사용 데이터 암호화가 포함된 클라우드 백업

저장 시 암호화클러스터 백업을 사용하는 클러스터의 경우 Atlas는 스냅샷 시점에 프로젝트의 CMKAWS IAM 사용자 자격 증명을 사용하여 스냅샷 데이터 파일을 자동으로 암호화합니다. 이를 통해 모든 Atlas 저장소 및 스냅샷 볼륨에 적용되는 기존 암호화에 대해 암호화 계층을 추가합니다.

Atlas는 교체 후 새 CMK로 스냅샷을 다시 암호화하지 않습니다. 프로젝트의 모든 백업 지원 클러스터에서 해당 CMK를 여전히 사용하는 스냅샷이 있는지 확인할 때까지 이전 CMK를 삭제하지 않도록 합니다. Atlas는 백업 스케줄링, 보존 및 온디맨드 스냅샷에 따라 백업을 삭제합니다. Atlas가 특정 CMK에 따라 모든 스냅샷을 삭제한 후에는 해당 CMK를 안전하게 삭제할 수 있습니다.

1
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Security 제목 아래의 Advanced를 클릭합니다.

    고급 페이지가 표시됩니다.

2
3
  1. 다음 정보를 입력합니다.

    필드
    작업
    AWS IAM role

    이미 KMS 키에 대한 액세스 권한이 있는 기존 AWS IAM 역할을 선택하거나, 새 역할을 승인하고 이 역할에 다음 권한으로 KMS 키에 대한 액세스 권한을 부여합니다.

    자세히 알아보려면 프로젝트의 암호화 키에 대한 역할 기반 액세스를 참조하세요.

    Customer Master Key ID
    AWS 고객 마스터 키 ID를 입력합니다.
    Customer Master Key Region

    AWS CMK를 생성한 AWS 리전을 선택합니다.

    Atlas Amazon Web Services 는 를 지원 Amazon Web Services KMS Amazon 리전만 나열합니다.

  2. Save를 클릭합니다.

CMK 로테이션 프로세스 중에 Atlas 콘솔에 배너가 표시됩니다. 변경 사항이 배포될 때까지 CMK를 삭제하거나 비활성화하지 마세요.

리전 장애 중에는 AWS KMS 리전을 사용할 수 없게 될 수 있습니다. 고객 키 관리를 사용한 미사용 데이터 암호화를 허용한 경우, 적어도 하나의 노드를 계속 사용할 수 있는 동안 암호화 및 암호 해독 작업을 수행할 수 있습니다. 그러나 모든 노드를 사용할 수 없게 되면 암호화 작업을 수행할 수 없습니다. 장애 중에 노드가 다시 시작되면 노드를 사용할 수 없게 됩니다.

사용할 수 없는 노드를 정상 상태로 되돌리려면 현재 AWS KMS 리전을 사용 가능한 리전으로 재구성하면 됩니다. KMS 리전을 변경하려면 AWS KMS 키가 멀티 리전 키여야 합니다. 멀티 리전 키를 생성하려면 AWS 설명서를 참조하세요.

참고

단일 리전 키를 멀티 리전 키로 변환할 수 없습니다.

AWS KMS 리전을 재구성하려면 Atlas에서 다음 단계를 완료하세요:

1
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.

  3. 사이드바에서 Security 제목 아래의 Advanced를 클릭합니다.

    고급 페이지가 표시됩니다.

2
3

Atlas가 데이터를 다시 암호화하지 않도록 하려면 AWS IAM roleCustomer Master Key ID 항목에 기존 자격 증명이 반영되어 있는지 확인하세요.

4

멀티 리전 키를 구성한 다른 AWS 리전을 선택합니다.

5

돌아가기

저장된 데이터 암호화