Amazon EMR의 AWS KMS 활용 방식 - AWS Key Management Service

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

Amazon EMR의 AWS KMS 활용 방식

Amazon EMR 클러스터를 사용하는 경우에는 영구 스토리지 위치에 저장하기 전에 저장된 데이터를 암호화하도록 클러스터를 구성할 수 있습니다. EMR 파일 시스템(EMRFS), 클러스터 노드의 스토리지 볼륨 또는 두 곳에 저장된 데이터를 모두 암호화할 수 있습니다. 저장된 데이터를 암호화하려면 고객 마스터 키 (CMK) AWS KMS. 다음 항목에서는 Amazon EMR 클러스터는 CMK 저장 시 데이터를 암호화합니다.

중요

Amazon EMR 지원 대칭 CMKs. 귀하는 메트릭 CMK 저장하려면 Amazon EMR 클러스터. CMK가 대칭 또는 비대칭인지 여부를 확인하는 방법은 대칭 메트릭 및 비트 메트릭 식별 CMKs 단원을 참조하십시오.

Amazon EMR 클러스터는 전송 중인 데이터도 암호화할 수 있습니다. 그러면 클러스터가 네트워크를 통해 데이터를 보내기 전에 암호화합니다. 귀하는 CMK 에서 데이터를 암호화합니다. 자세한 내용은 인스턴트 데이터 암호화 in the Amazon EMR 관리 안내서.

사용 가능한 모든 암호화 옵션에 대한 자세한 내용은 Amazon EMR, 참조: 암호화 옵션 in the Amazon EMR 관리 안내서.

EMR 파일 시스템(EMRFS)에서 데이터 암호화

Amazon EMR 클러스터는 배포된 두 파일 시스템을 사용합니다.

  • 하둡 분산 파일 시스템(HDFS). HDFS 암호화는 CMK 에서 AWS KMS.

  • EMR 파일 시스템(EMRFS). EMRFS는 Amazon EMR 클러스터가 Amazon Simple Storage Service(Amazon S3)에 데이터를 저장할 수 있도록 하는 HDFS 구현입니다. EMRFS는 4개의 암호화 옵션을 지원하며, 그 중 2개는 CMK 에서 AWS KMS. EMRFS 암호화 옵션에 대한 자세한 내용은 암호화 옵션 in the Amazon EMR 관리 안내서.

A를 사용하는 두 개의 EMRFS 암호화 옵션 CMK 다음 암호화 기능을 사용하여 제공되는 암호화 기능을 사용합니다. Amazon S3:

사용자가 Amazon EMR SSE-KMS 또는 CSE-KMS와 함께 EMRFS에서 데이터를 암호화하려면 CMK 에서 AWS KMS 원하는 것을 Amazon S3 또는 Amazon EMR 사용할 클러스터입니다. SSE-KMS를 사용하면 AWS 관리 CMK for Amazon S3 별칭으로 aws/s3또는 대칭 고객 관리 CMK 을(를) 만듭니다. CSE-KMS를 사용하면 대칭형 고객을 선택해야 합니다. CMK 을(를) 만듭니다. 고객을 관리하는 경우 CMK님, Amazon EMR 클러스터는 CMK. 자세한 내용은 사용 AWS KMS 고객 마스터 키 (CMKs) 암호화 in the Amazon EMR 관리 안내서.

SSE-KMS 및 CSE-KMS 모두 CMK 선택하셨습니다 마스터 키 in an 봉투 암호화 워크플로. 데이터는 고유한 데이터 암호화 키(또는 데이터 키이 데이터 키는 CMK 에서 AWS KMS. 암호화된 데이터와 그 데이터 키의 암호화된 사본이 S3 버킷에서 암호화된 단일 객체로 저장됩니다. 이 과정에 대한 자세한 내용은 다음 주제를 참조하십시오.

SSE-KMS를 통해 EMRFS에 데이터를 암호화하는 프로세스

Amazon EMR 클러스터가 SSE-KMS를 사용하도록 구성하면 암호화 프로세스가 다음과 같이 작동합니다.

  1. 클러스터는 S3 버킷에 저장하기 위해 Amazon S3로 데이터를 보냅니다.

  2. Amazon S3 전송 generatedatakey 요청 AWS KMS의 키 ID를 지정합니다. CMK SSE-KMS를 사용하도록 클러스터를 구성한 경우 선택합니다. 요청에는 암호화 컨텍스트가 포함됩니다. 자세한 내용은 암호화 컨텍스트 단원을 참조하십시오.

  3. AWS KMS는 고유한 데이터 암호화 키(데이터 키)를 생성한 후 이 데이터 키의 사본 두 개를 Amazon S3로 보냅니다. 사본 한 부는 암호화되지 않고(일반 텍스트), 다른 사본은 CMK.

  4. Amazon S3는 일반 텍스트 데이터 키를 사용해 1단계에 받은 데이터를 암호화하고, 사용 후 가급적 빨리 메모리에서 일반 텍스트 데이터 키를 제거합니다.

  5. Amazon S3는 암호화된 데이터와 그 데이터 키의 암호화된 사본을 S3 버킷에서 암호화된 단일 객체로 저장합니다.

해독 프로세스는 다음과 같습니다.

  1. 클러스터가 S3 버킷에서 암호화된 데이터 객체를 요청합니다.

  2. Amazon S3가 S3 객체에서 암호화된 데이터 키를 추출한 후, 해독 요청을 통해 암호화된 데이터 키를 AWS KMS에 보냅니다. 이 요청은 암호화 컨텍스트를 포함합니다.

  3. AWS KMS 암호화를 사용하여 암호화된 데이터 키를 CMK 암호화를 위해 사용한 다음 암호화된(일반 텍스트) 데이터 키를 Amazon S3.

  4. Amazon S3는 일반 텍스트 데이터 키를 사용해 암호화된 데이터를 해독하고, 사용 후 가급적 빨리 메모리에서 일반 텍스트 데이터 키를 제거합니다.

  5. Amazon S3는 해독한 데이터를 클러스터로 보냅니다.

CSE-KMS를 통해 EMRFS에 데이터를 암호화하는 프로세스

Amazon EMR 클러스터가 CSE-KMS를 사용하도록 구성하면 암호화 프로세스가 다음과 같이 작동합니다.

  1. 데이터를 저장할 준비가 되면 Amazon S3클러스터는 generatedatakey 요청 AWS KMS의 키 ID를 지정합니다. CMK CSE-KMS를 사용하도록 클러스터를 구성한 경우 선택합니다. 요청에는 암호화 컨텍스트가 포함됩니다. 자세한 내용은 암호화 컨텍스트 단원을 참조하십시오.

  2. AWS KMS는 고유한 데이터 암호화 키(데이터 키)를 생성한 후 이 데이터 키의 사본 두 개를 클러스터로 보냅니다. 사본 한 부는 암호화되지 않고(일반 텍스트), 다른 사본은 CMK.

  3. 클러스터는 일반 텍스트 데이터 키를 사용해 데이터를 암호화하고, 사용 후 가급적 빨리 메모리에서 일반 텍스트 데이터 키를 제거합니다.

  4. 클러스터는 암호화된 데이터와 그 데이터 키의 암호화된 사본을 암호화된 단일 객체로 결합합니다.

  5. 클러스터는 저장을 위해 Amazon S3로 암호화된 객체를 보냅니다.

해독 프로세스는 다음과 같습니다.

  1. 클러스터가 S3 버킷에서 암호화된 데이터 객체를 요청합니다.

  2. Amazon S3는 클러스터로 암호화된 객체를 보냅니다.

  3. 클러스터가 암호화된 객체에서 암호화된 데이터 키를 추출한 후, 해독 요청을 통해 암호화된 데이터 키를 AWS KMS에 보냅니다. 이 요청은 암호화 컨텍스트를 포함합니다.

  4. AWS KMS 암호화를 사용하여 암호화된 데이터 키를 CMK 암호화를 위해 사용된 다음 암호화된(일반 텍스트) 데이터 키를 클러스터에 전송합니다.

  5. 클러스터는 일반 텍스트 데이터 키를 사용해 암호화된 데이터를 해독하고, 사용 후 가급적 빨리 메모리에서 일반 텍스트 데이터 키를 제거합니다.

클러스터 노드의 스토리지 볼륨에서 데이터 암호화

Amazon EMR 클러스터는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 모음입니다. 클러스터에 있는 각 인스턴스를 클러스터 노드 또는 노드라고 합니다. 각 노드에는 인스턴스 스토어 볼륨과 Amazon Elastic Block Store(Amazon EBS) 볼륨 등 두 가지 유형의 스토리지 볼륨이 있을 수 있습니다. LUKS(Linux Unified Key Setup)를 사용해 노드에서 두 가지 유형의 스토리지 볼륨을 모두 암호화하도록(각 노드의 부팅 볼륨은 제외) 클러스터를 구성할 수 있습니다. 이를 로컬 디스크 암호화라고 합니다.

클러스터에 대해 로컬 디스크 암호화를 설정하면 LUKS 마스터 키 함께 CMK 에서 AWS KMS. 다음을 선택해야 합니다. 고객 관리 CMK 생성할 수 있습니다. AWS 관리 CMK. 고객을 관리하는 경우 CMK님, Amazon EMR 클러스터는 CMK. 자세한 내용은 사용 AWS KMS 고객 마스터 키 (CMKs) 암호화 in the Amazon EMR 관리 안내서.

로컬 디스크 암호화를 사용하여 로컬 디스크 암호화를 CMK암호화 프로세스는 다음과 같이 작동합니다.

  1. 클러스터 노드가 시작될 때마다 generatedatakey 요청 AWS KMS의 키 ID를 지정합니다. CMK 클러스터에 대해 로컬 디스크 암호화를 설정할 때 선택합니다.

  2. AWS KMS는 고유한 데이터 암호화 키(데이터 키)를 생성한 후 이 데이터 키의 사본 두 개를 노드로 보냅니다. 사본 한 부는 암호화되지 않고(일반 텍스트), 다른 사본은 CMK.

  3. 노드는 기본 텍스트 데이터 키의 base64 인코딩된 버전을 암호를 보호하는 암호로 사용합니다. LUKS 마스터 키. 노드는 부팅 볼륨에 데이터 키의 암호화된 사본을 저장합니다.

  4. 노드가 재부팅되면 재부팅된 노드가 해독 요청을 통해 암호화된 데이터 키를 AWS KMS에 보냅니다.

  5. AWS KMS 암호화를 사용하여 암호화된 데이터 키를 CMK 암호화를 위해 사용된 다음 암호화된(일반 텍스트) 데이터 키를 노드로 전송합니다.

  6. 노드는 기본 텍스트 데이터 키의 base64 인코딩된 버전을 암호로 사용하여 LUKS 마스터 키.

암호화 컨텍스트

AWS KMS와 통합된 각 AWS 서비스는 AWS KMS를 사용해 데이터 키를 생성하거나 데이터를 암호화 또는 해독할 때 암호화 컨텍스트를 지정할 수 있습니다. 암호화 컨텍스트는 데이터 무결성 확인을 위해 AWS KMS에서 사용하는 추가적인 인증 정보입니다. 서비스가 암호화 작업에 대해 암호화 컨텍스트를 지정할 때 해당 해독 작업에 대해서 동일한 암호화 컨텍스트를 지정해야 합니다. 그렇지 않으면 해독이 실패합니다. 암호화 컨텍스트도 AWS CloudTrail 로그 파일을 사용하여 CMK 을(를) 사용하였습니다.

다음 섹션에서는 각각에 사용되는 암호화 컨텍스트를 설명합니다. Amazon EMR 암호화 시나리오를 CMK.

SSE-KMS를 이용한 EMRFS 암호화를 위한 암호화 컨텍스트

SSE-KMS를 통해 Amazon EMR 클러스터는 데이터를 Amazon S3, 그리고 Amazon S3 사용 CMK S3 버킷에 저장하기 전에 데이터를 암호화합니다. 이 경우, Amazon S3는 AWS KMS로 보내는 GenerateDataKeyDecrypt 요청과 함께 S3 객체의 Amazon 리소스 이름(ARN)을 암호화 컨텍스트로 사용합니다. 다음 예는 Amazon S3가 사용하는 암호화 컨텍스트의 JSON 표시를 보여줍니다.

{ "aws:s3:arn" : "arn:aws:s3:::S3_bucket_name/S3_object_key" }

CSE-KMS를 이용한 EMRFS 암호화를 위한 암호화 컨텍스트

CSE-KMS를 통해 Amazon EMR 클러스터는 CMK 데이터를 암호화하려면 Amazon S3 보관용. 이 경우 클러스터는 CMK 암호화 컨텍스트로서 generatedatakey and 해독 요청하도록 요청할 수 AWS KMS. 다음 예는 클러스터가 사용하는 암호화 컨텍스트의 JSON 표시를 보여줍니다.

{ "kms_cmk_id" : "arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef" }

LUKS를 이용한 로컬 디스크 암호화를 위한 암호화 컨텍스트

Amazon EMR 클러스터가 LUKS를 통한 로컬 디스크 암호화를 사용하는 경우, 클러스터 노드는 AWS KMS로 보내는 GenerateDataKeyDecrypt 요청과 함께 암호화 컨텍스트를 지정하지 않습니다.