Direct KMS Materials Provider - Amazon DynamoDB 암호화 클라이언트

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Direct KMS Materials Provider

Direct KMS Materials Provider(직접 KMS 공급자) 는 아래 테이블 항목을 보호합니다.AWS KMS key결코 떠나지 않는 것AWS Key Management Service(AWS KMS) 암호화되지 않았습니다. 이 암호화 자료 공급자는 각 테이블 항목에 대해 고유한 암호화 키 및 서명 키를 반환합니다. 이를 위해 호출할 수 있습니다.AWS KMS항목을 암호화하거나 해독할 때마다

DynamoDB 항목을 대규모로 자주 처리하는 경우 를 초과할 수 있습니다.AWS KMS 초당 요청 제한처리 지연이 발생합니다. 제한을 초과해야 하는 경우 에서 사례를 생성합니다.AWS SupportCenter. 다음과 같이 제한된 키 재사용이 가능한 암호화 자료 공급자를 사용하는 것도 고려해 볼 수 있습니다.Most Recent Provider.

직접 KMS 공급자를 사용하려면 호출자가aAWS 계정, 1개 이상의AWS KMS key및 호출할 수 있는 권한GenerateDataKey암호화 해제에 대한 작업AWS KMS key. 이AWS KMS key대칭 암호화 키여야 합니다. DynamoDB 암호화 클라이언트는 비대칭 암호화를 지원하지 않습니다. 를 사용 중인 경우DynamoDB 글로벌 테이블를 지정할 수 있습니다.AWS KMS다중 리전 키. 자세한 내용은 사용 방법 섹션을 참조하세요.

참고

직접 KMS 공급자를 사용할 때는 기본 키 속성의 이름 및 값이 일반 텍스트로 표시됩니다.AWS KMS암호화 컨텍스트과AWS CloudTrail관련 로그AWS KMS작업. 그러나 DynamoDB 암호화 클라이언트는 암호화된 속성 값의 일반 텍스트를 노출하지 않습니다.

직접 KMS 공급자는 여러 서비스 중 하나입니다.암호화 자료 공급자DynamoDB 암호화 클라이언트가 지원하는 (CMP) 입니다. 다른 CMP에 대한 자세한 내용은 단원을 참조하십시오.암호화 자료 공급자 선택 방법.

예제 코드는 다음을 참조하십시오.

사용 방법

직접 KMS 공급자를 만들려면 키 ID 매개 변수를 사용하여 대칭 암호화를 지정합니다.KMS 키에 있는 것입니다. 키 ID 매개 변수의 값은 키 ID, 키 ARN, 별칭 이름 또는 별칭 ARN일 수 있습니다.AWS KMS key. 키 식별자에 대한 자세한 내용은 단원을 참조하십시오.키 식별자AWS Key Management Service개발자 안내서.

직접 KMS 공급자에는 대칭 암호화 KMS 키가 필요합니다. 비대칭 KMS 키를 사용할 수 없습니다. 그러나 다중 리전 KMS 키, 가져온 키 구성 요소가 있는 KMS 키 또는 사용자 지정 키 스토어에서 KMS 키를 사용할 수 있습니다. 이 있어야 합니다.kms:GenerateDataKeykms:DecryptKMS 키에 대한 권한입니다. 따라서 가 아닌 고객 관리형 키를 사용해야 합니다.AWS관리 또는AWS소유한 KMS 키입니다.

파이썬용 DynamoDB 암호화 클라이언트는 호출할 리전을 결정합니다.AWS KMS키 ID 매개 변수 값이 포함된 경우 Region에서 그렇지 않으면 의 리전을 사용합니다.AWS KMS클라이언트 (하나 또는 구성한 리전을 지정하는 경우)AWS SDK for Python (Boto3). 파이썬에서 리전 선택에 대한 자세한 내용은 섹션을 참조하세요.Configuration의AWSSDK for Python (Boto3) API 레퍼런스.

Java용 DynamoDB 암호화 클라이언트는 호출할 리전을 결정합니다.AWS KMS에서 지역AWS KMS클라이언트 (지정한 클라이언트에 리전이 포함되어 있는 경우) 그렇지 않으면 에서 구성한 리전을 사용합니다.AWS SDK for Java. 에서 리전 선택에 대한 자세한 내용은AWS SDK for Java참조AWS 리전선택의AWS SDK for Java개발자 안내서.

Java
// Replace the example key ARN and Region with valid values for your application final String keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, keyArn);
Python

다음 예에서는 키 ARN을 사용하여AWS KMS key. 키 식별자에AWS 리전DynamoDB 암호화 클라이언트는 구성된 Botocore 세션 (있는 경우) 에서 리전을 가져오거나 Boto 기본값에서 리전을 가져옵니다.

# Replace the example key ID with a valid value kms_key = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=kms_key)

사용 중인 경우Amazon DynamoDB 글로벌 테이블를 사용하여 데이터를 암호화하는 것이 좋습니다.AWS KMS다중 리전 키. 다중 리전 키는AWS KMS keys다른AWS 리전키 ID 및 키 구성 요소가 같기 때문에 상호 교환 가능하게 사용할 수 있습니다. 자세한 내용은 단원을 참조하십시오.다중 리전 키 사용AWS Key Management Service개발자 안내서.

참고

전역 테이블을 사용하는 경우2017년 11월 29일 버전, 예약된 복제 필드가 암호화되거나 서명되지 않도록 속성 작업을 설정해야 합니다. 자세한 내용은 이전 버전 글로벌 테이블 관련 문제 섹션을 참조하세요.

DynamoDB 암호화 클라이언트에서 다중 리전 키를 사용하려면 다중 리전 키를 생성하여 애플리케이션이 실행되는 리전에 복제합니다. 그런 다음 DynamoDB 암호화 클라이언트가 호출하는 리전에서 다중 리전 키를 사용하도록 직접 KMS 공급자를 구성합니다.AWS KMS.

다음 예에서는 미국 동부 (버지니아 북부) (us-east-1) 리전의 데이터를 암호화하고 다중 리전 키를 사용하여 미국 서부 (오레곤) (us-west-2) 리전의 암호를 해독하도록 DynamoDB 암호화 클라이언트를 구성합니다.

Java

이 예에서 DynamoDB 암호화 클라이언트는 호출할 리전을 가져옵니다.AWS KMS에서 지역AWS KMS클라이언트. 이keyArnvalue는 같은 리전에서 다중 리전 키를 식별합니다.

// Encrypt in us-east-1 // Replace the example key ARN and Region with valid values for your application final String usEastKey = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-east-1' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usEastKey);
// Decrypt in us-west-2 // Replace the example key ARN and Region with valid values for your application final String usWestKey = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usWestKey);
Python

이 예에서 DynamoDB 암호화 클라이언트는 호출할 리전을 가져옵니다.AWS KMSARN의 리전에서.

# Encrypt in us-east-1 # Replace the example key ID with a valid value us_east_key = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_east_key)
# Decrypt in us-west-2 # Replace the example key ID with a valid value us_west_key = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_west_key)

작동 방식

Direct KMS 공급자는 에 의해 보호되는 암호화 및 서명 키를 반환합니다.AWS KMS key는 다음 다이어그램에 표시된 대로 지정합니다.


        DynamoDB 암호화 클라이언트에서 직접 KMS 공급자의 입력, 처리 및 출력
  • 암호화 자료를 생성하기 위해 다이렉트 KMS 공급자가 요청합니다.AWS KMS에고유한 데이터 키 생성를 사용하는 각 항목에 대해AWS KMS key지정하는 것입니다. 이 공급자는 데이터 키의 일반 텍스트 복사본에서 항목의 암호화 및 서명 키를 추출한 다음 항목의 자료 설명 속성에 저장된 암호화된 데이터 키와 함께 암호화 및 서명 키를 반환합니다.

    항목 암호화 도구는 암호화 및 서명 키를 사용하여 가능한 빨리 메모리에서 제거합니다. 추출된 데이터 키의 암호화된 복사본만 암호화된 항목에 저장됩니다.

  • 해독 자료를 생성하기 위해 직접 KMS 공급자가 요청합니다.AWS KMS를 사용하여 암호화된 데이터 키를 해독합니다. 그런 다음 일반 텍스트 데이터 키에서 확인 및 서명 키를 파생하고 항목 암호화기로 반환합니다.

    항목 암호화기는 항목을 확인하고 확인이 성공하면 암호화된 값을 해독합니다. 그런 다음 가능한 빨리 메모리에서 키를 제거합니다.

암호화 자료 가져오기

이 단원에서는 항목 암호화 도구에서 암호화 자료 요청 수신 시 Direct KMS Provider의 입력, 출력 및 처리에 대해 자세히 설명합니다.

입력(애플리케이션에서)

  • 의 키 ID입니다.AWS KMS key.

입력(항목 암호화 도구에서)

출력(항목 암호화 도구로)

  • 암호화 키 (일반 텍스트)

  • 서명 키

  • In실제 자료 설명: 이러한 값은 클라이언트가 항목에 추가하는 자료 설명 속성에 저장됩니다.

    • amzn-ddb-env-key: 로 암호화된 Base64로 인코딩된 데이터AWS KMS key

    • amzn-ddb-env-alg: 암호화 알고리즘 (기본적으로)AES/256

    • amzn-ddb-sig-alg: 서명 알고리즘은 기본적으로함맥샤256/256

    • amzn-ddb 랩 알그: 킬로미터

처리 중

  1. Direct KMS Provider 전송AWS KMS지정된 를 사용하라는 요청AWS KMS key에고유한 데이터 키 생성항목에 대한 것입니다. 이 작업은 일반 텍스트 키와 AWS KMS key로 암호화된 복사본을 반환합니다. 이 자료를 초기 키 자료라고 합니다.

    이 요청은 AWS KMS 암호화 컨텍스트에 다음 값을 일반 텍스트로 포함합니다. 이러한 비비밀 값은 암호화된 객체에 암호로 바인딩되므로 암호 해독시 동일한 암호화 컨텍스트가 필요합니다. 이 값을 사용하여 호출을 식별할 수 있습니다.AWS KMS에서AWS CloudTrail로그.

    • amzn-ddb-env-alg — 암호화 알고리즘, 기본값은 AES/256

    • amzn-ddb-sig-alg — 서명 알고리즘, 기본값은 HmacSHA256/256

    • (선택) aws-kms-table –테이블 이름

    • (선택)파티션 키 이름파티션 키 값(이진 값은 Base64로 인코딩됨)

    • (선택)정렬 키 이름정렬 키 값(이진 값은 Base64로 인코딩됨)

    직접 KMS 공급자는AWS KMS의 암호화 컨텍스트DynamoDB 암호화 컨텍스트항목에 대한 것입니다. DynamoDB 암호화 컨텍스트가 테이블 이름 같은 값을 포함하지 않는 경우 해당 이름-값 페어가 에서 생략됩니다.AWS KMS암호화 컨텍스트.

  2. Direct KMS 공급자는 데이터 키에서 대칭 암호화 키 및 서명 키를 추출합니다. 기본적으로 Secure Hash Algorithm(SHA) 256RFC5869 HMAC 기반 키 추출 함수를 사용하여 256비트 AES 대칭 암호화 키 및 256비트 HMAC-SHA-256 서명 키를 추출합니다.

  3. 직접 KMS 공급자는 출력을 항목 암호화 프로그램으로 반환합니다.

  4. 항목 암호화기는 실제 재료 설명에 지정된 알고리즘을 사용하여 지정된 속성을 암호화하기 위해 암호화 키를 사용하고 서명 키를 사용하여 서명합니다. 그런 다음 가능한 한 빨리 메모리에서 일반 텍스트 키를 제거합니다.

해독 자료 가져오기

이 단원에서는 항목 암호화 도구에서 해독 자료 요청 수신 시 Direct KMS Provider의 입력, 출력 및 처리를 자세히 설명합니다.

입력(애플리케이션에서)

  • 의 키 ID입니다.AWS KMS key.

    키 ID 값은 키 ID, 키 ARN, 별칭 이름 또는 별칭 ARN일 수 있습니다.AWS KMS key. 리전과 같이 키 ID에 포함되지 않는 값을 모두 에서 사용할 수 있어야 합니다.AWS이름이 지정된 프로파일. 키 ARN은 에서 제공하는 모든 값을 제공합니다.AWS KMS이 필요합니다.

입력(항목 암호화 도구에서)

출력(항목 암호화 도구로)

  • 암호화 키 (일반 텍스트)

  • 서명 키

처리 중

  1. Direct KMS 공급자는 암호화된 항목의 자료 설명 속성에서 암호화된 데이터 키를 가져옵니다.

  2. 묻습니다AWS KMS를 사용하여 지정된AWS KMS key에해독암호화된 데이터 키. 이 작업은 일반 텍스트 키를 반환합니다.

    이 요청은 데이터 키를 생성 및 암호화하는 데 사용된 것과 동일한 AWS KMS 암호화 컨텍스트를 사용해야 합니다.

    • aws-kms-table 테이블테이블 이름

    • 파티션 키 이름파티션 키 값(이진 값은 Base64로 인코딩됨)

    • (선택)정렬 키 이름정렬 키 값(이진 값은 Base64로 인코딩됨)

    • amzn-ddb-env-alg — 암호화 알고리즘, 기본값은 AES/256

    • amzn-ddb-sig-alg — 서명 알고리즘, 기본값은 HmacSHA256/256

  3. Direct KMS 공급자가 사용하는SHA (보안 해시 알고리즘) 256RFC5869 HMAC 기반 키 파생 함수는 데이터 키에서 256비트 AES 대칭 암호화 키 및 256비트 HMAC-SHA-256 서명 키를 추출합니다.

  4. 직접 KMS 공급자는 출력을 항목 암호화 프로그램으로 반환합니다.

  5. 항목 암호화기는 서명 키를 사용하여 항목을 확인합니다. 성공하면 대칭 암호화 키를 사용하여 암호화된 속성 값을 해독합니다. 이러한 작업은 실제 자료 설명에 지정된 암호화 및 서명 알고리즘을 사용합니다. 항목 암호화 도구는 가급적 빨리 메모리에서 일반 텍스트 키를 제거합니다.