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 공급자를 사용하려면 호출자가한 AWS 계정 , 하나 이상의AWS KMS key를 호출할 수 있는 권한 및GenerateDataKey암호화 해제에 대한 작업AWS KMS key. 이AWS KMS key은 대칭이어야 합니다. DynamoDB 암호화 클라이언트는 비대칭 암호화를 지원하지 않습니다. 를 사용하는 경우DynamoDB 글로벌 테이블을 지정하는 것이 좋습니다.AWS KMS다중 리전 키. 자세한 내용은 단원을 참조하세요사용 방법

참고

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

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

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

사용 방법

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

Python용 DynamoDB 암호화 클라이언트가AWS KMS키 ID 매개 변수 값의 Region에서 키 ID 매개 변수 값을 반환합니다 (포함 된 경우). 그렇지 않으면 에서 리전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 암호화 클라이언트는 구성된 보토코어 세션 (있는 경우) 또는 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)

DynamoDB 전역 테이블을 사용하는 경우AWS KMS다중 지역 키. 다중 리전 키는AWS KMS keys다른 AWS 리전 같은 키 ID와 키 자료를 가지고 있기 때문에 상호 교환 할 수 있습니다. 자세한 내용은 단원을 참조하십시오.다중 영역 키 사용AWS Key Management Service개발자 안내서.

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

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

Java

이 예에서 DynamoDB 암호화 클라이언트는AWS KMS에 있는 지역에서AWS KMS클라이언트를 사용합니다. 이keyArn값은 동일한 리전의 다중 리전 키를 식별합니다.

// 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 KMS에서 리전 키 ARN 에 있습니다.

# 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)

작동 방식

다이렉트 KMS 공급자는 이 공급자를 통해 보호되는 암호화 및 서명 키를 반환합니다.AWS KMS key다음 다이어그램에서처럼 사용자가 지정할 수 있습니다.


        DynamoDB 암호화 클라이언트에서 다이렉트 KMS 공급자의 입력, 처리 및 출력
  • 암호화 자료를 생성하기 위해 직접 KMS 공급자는AWS KMSto고유 데이터 키 생성를 사용하여 각 항목에 대해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: 암호화 알고리즘 (기본적으로)256

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

    • 암즈-ddb-랩 - 고도: kms

처리 중

  1. Direct KMS Provider에서AWS KMS지정된AWS KMS keyto고유 데이터 키 생성항목을 합니다. 이 작업은 일반 텍스트 키와 AWS KMS key로 암호화된 복사본을 반환합니다. 이 자료를 초기 키 자료라고 합니다.

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

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

    • 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 keyto해독는 암호화된 데이터 키입니다. 이 작업은 일반 텍스트 키를 반환합니다.

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

    • aws-kms-table테이블 이름

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

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

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

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

  3. Direct KMS Provider는해시 알고리즘 (SHA) 256RFC5869 HMAC 기반 키 유도 기능를 사용하여 데이터 키에서 256비트 AES 대칭 암호화 키 및 256비트 HMAC-SHA-256 서명 키를 추출합니다.

  4. 다이렉트 KMS 공급자는 출력을 항목 암호화 도구를 반환합니다.

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