Most Recent Provider - Amazon DynamoDB Encryption Client

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

Most Recent Provider

Most Recent Provider 은(는) 암호화 자료 제공자 (CMP)와 함께 작동하도록 설계된 공급자 매장. 공급자 저장소에서 CMP를 가져오고 CMP에서 반환하는 암호화 자료를 가져옵니다. 일반적으로 각 CMP를 사용하여 암호화 자료에 대한 여러 요청을 충족합니다. 하지만 공급자 스토어의 기능을 사용하여 자료가 재사용되는 범위를 제어하고 CMP 교체 빈도를 결정할 수 있으며, Most Recent Provider를 변경하지 않고 사용하는 CMP 유형을 변경할 수도 있습니다.

Most Recent Provider는 공급자 스토어 및 관련 암호화 소스에 대한 호출을 최소화해야 하는 애플리케이션과, 보안 요구 사항을 위반하지 않으면서 일부 암호화 자료를 재사용할 수 있는 애플리케이션에 적합합니다. 예를 들면 항목을 암호화하거나 해독할 때마다 AWS KMS를 호출하지 않고 AWS Key Management Service(AWS KMS) 고객 마스터 키로 암호화 자료를 보호할 수 있습니다.

선택하는 공급자 스토어는 Most Recent Provider에서 사용하는 CMP 유형과 새 CMP를 가져오는 빈도를 결정합니다. 을(를) 설계한 사용자 지정 공급자 저장소를 포함하여 가장 최근 공급자와 호환되는 공급자 저장소를 사용할 수 있습니다.

더 DynamoDB Encryption Client 포함 메타 저장소 이러한 요소들은 포장 재료 제공업체 (랩 CMP). MetaStore는 내부 DynamoDB 테이블에서 생성하여 DynamoDB Encryption Client의 내부 인스턴스에 의해 클라이언트 측 암호화로 보호되는 Wrapped CMP의 여러 버전을 저장합니다.

AWS KMS 고객 마스터 키에 의해 보호되는 암호화 자료를 생성하는 Direct KMS Provider, 제공하는 래핑 및 서명 키를 사용하는 Wrapped CMP 또는 자신이 설계하는 호환 사용자 지정 CMP 등 내부 CMP 유형 중 하나를 사용하여 테이블에서 자료를 보호하도록 MetaStore를 구성할 수 있습니다.

예제 코드는 단원을 참조하십시오.

사용 방법

Most Recent Provider를 만들려면 공급자 스토어를 만들고 구성한 다음 공급자 스토어를 사용하는 Most Recent Provider를 만들어야 합니다.

다음 예제는 MetaStore를 사용하고 Direct KMS Provider의 암호화 자료를 사용하여 내부 DynamoDB 테이블의 버전을 보호하는 Most Recent Provider를 만드는 방법을 보여줍니다.

각 Most Recent Provider에는 MetaStore 테이블에서 CMP를 식별하는 이름과, 최신 버전의 버전 번호를 공급자 스토어에 물어보는 빈도를 결정하는 time-to-live 값이 있습니다.

Java
final String keyTableName = 'metaStoreTable' //for MetaStore's internal table final String region = 'us-west-2' final String cmkArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' final long ttlInMillis = 60000 //check for a new version every 60 seconds // A name for the Most Recent Provider; used to // identify its CMPs in provider store storage final String materialName = 'testMRP' // Create an internal DynamoDB client for the MetaStore final AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard().withRegion(region).build(); // Create an internal Direct KMS Provider for the MetaStore final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider kmsProv = new DirectKmsMaterialProvider(kms, cmkArn); // Create an item encryptor for the MetaStore, // including the Direct KMS Provider final DynamoDBEncryptor keyEncryptor = DynamoDBEncryptor.getInstance(kmsProv); // Create the MetaStore final MetaStore metaStore = new MetaStore(ddb, keyTableName, keyEncryptor); //Create the Most Recent Provider final MostRecentProvider cmp = new MostRecentProvider(metaStore, materialName, ttlInMillis);
Python
aws_cmk_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' meta_table_name = 'metaStoreTable' # A name for the Most Recent Provider; used to # identify its CMPs in provider store storage material_name = 'testMRP' # Create an internal DynamoDB table resource for the MetaStore meta_table = boto3.resource('dynamodb').Table(meta_table_name) # Create an internal Direct KMS Provider for the MetaStore aws_kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=aws_cmk_id) # Create the MetaStore with the Direct KMS Provider meta_store = MetaStore( table=meta_table, materials_provider=aws_kms_cmp ) # Create a Most Recent Provider using the MetaStore most_recent_cmp = MostRecentProvider( provider_store=meta_store, material_name=material_name, version_ttl=60.0 # Check for a new version every 60 seconds )

작동 방식

Most Recent Provider는 공급자 스토어에서 CMP를 가져옵니다. 그런 다음 CMP를 사용하여 암호화 자료를 생성하고 해당 자료를 항목 암호기로 반환합니다.

Most Recent Provider 소개

더 Most Recent Provider 은(는) 암호화 자료 제공자 (CMP)를 공급자 매장. 그런 다음 CMP를 사용하여 반환되는 암호화 자료를 생성합니다. 각 최신 공급자는 하나의 공급자 저장소와 연결되어 있지만 공급자 저장소는 여러 호스트에 걸쳐 여러 공급자에 CMP를 제공할 수 있습니다.

Most Recent Provider는 모든 공급자 스토어의 호환되는 CMP와 함께 사용할 수 있습니다. 암호화자료를 받거나 복호화자료를 얻기 위해 작업을 호출하고, 출력물을 물품암호화장치로 반송한다. 암호화 작업을 수행하지 않습니다.

Most Recent Provider는 공급자 스토어에서 CMP를 요청하기 위해 관련 자료 이름과 사용할 기존 CMP의 버전을 제공합니다. 암호화 자료의 경우, 가장 최근 제공업체는 항상 최대("최신") 버전 을(를) 요청합니다. 암호 해독 자료의 경우, 다음 다이어그램과 같이 암호화 자료를 생성하는 데 사용된 CMP 버전을 요청합니다.


          가 Most Recent Provider

Most Recent Provider는 공급자 스토어에서 반환하는 CMP의 버전을 메모리의 로컬 Least Recently Used(LRU) 캐시에 저장합니다. 이 캐시에서는 Most Recent Provider가 모든 항목에 대해 공급자 스토어를 호출하지 않고 필요한 CMP를 가져올 수 있습니다. 필요 시 캐시를 지울 수 있습니다.

Most Recent Provider에서 CMP 요청에 사용할 버전 번호를 결정하기 위해 Most Recent Provider는 최대 버전을 묻는 쿼리를 공급자 스토어로 주기적으로 전송합니다. 쿼리 빈도는 Most Recent Provider를 만들 때 구성하는 TTL(Time-to-Live) 값에 의해 결정됩니다. TTL(Time-to-Live)는 새 CMP 버전이 생성되는 빈도가 아닌 Most Recent Provider가 공급자 스토어에 최대 버전 번호를 묻는 빈도만 결정합니다.

공급자 스토어로 쿼리 하나가 전송되고 나서 다음 번 쿼리가 전송될 때까지 Most Recent Provider는 공급자 스토어에서 반환한 CMP의 최신 버전을 반복적으로 사용합니다. 또한 공급자 스토어가 동일 버전 번호로 쿼리에 응답하는 경우, Most Recent Provider는 CMP의 해당 버전을 계속 사용합니다. 공급자가 새 버전 번호 로 쿼리에 응답하는 경우에만 새 버전의 CMP를 요청합니다.

메타 저장소 정보

호환되는 사용자 지정 공급자 스토어를 비롯하여 모든 공급자 스토어와 함께 Most Recent Provider를 사용할 수 있습니다. 더 DynamoDB Encryption Client 에는 를 구성하고 사용자 지정할 수 있는 보안 구현인 메타 저장소가 포함되어 있습니다.

메타 저장소 은(는) 공급자 매장 이러한 요소들은 포장된 CMP 랩핑된 CMP에 필요한 랩핑 키, 랩핑 키 및 서명 키로 구성된 키. MetaStore는 Most Recent Provider용 보안 옵션입니다. 왜냐하면 Wrapped CMP는 항상 모든 항목에 대해 고유한 항목 암호화 키를 생성하기 때문입니다. 항목 암호화 키와 서명 키를 보호하는 래핑 키만 재사용됩니다.

다음 다이어그램은 MetaStore의 구성 요소, 그리고 이러한 구성 요소가 Most Recent Provider와 어떻게 상호 작용하는지를 보여줍니다.


          MetaStore

메타 저장소는 래핑된 CMP를 생성한 다음 내부 DynamoDB 공급자의 자재 이름이 파티션 키이고 버전 번호가 정렬 키인 테이블. 테이블의 자료는 항목 암호화 도구 및 내부 암호화 자료 공급자(CMP) 등 내부 DynamoDB Encryption Client에 의해 보호됩니다.

Direct KMS Provider, Wrapped CMP(사용자가 제공하는 암호화 자료 포함) 또는 호환되는 사용자 지정 CMP 등 MetaStore에서 원하는 내부 CMP 유형을 사용할 수 있습니다. MetaStore의 내부 CMP가 Direct KMS Provider이면 재사용 가능한 래핑 및 서명 키는 AWS Key Management Service(AWS KMS) 고객 마스터 키로 보호됩니다. 메타스토어 호출 AWS KMS 새 CMP 버전을 내부 테이블에 추가하거나 내부 테이블에서 CMP 버전을 가져올 때마다.

암호화 자료 교체

Most Recent Provider는 공급자 스토어에서 CMP를 요청할 때 항상 알고 있는 자료 이름 및 최대 버전 번호를 사용하여 공급자 스토어에 CMP의 기존 버전을 묻습니다. 최대 버전 번호를 검색하려면 Most Recent Provider를 만들 때 구성한 TTL(Time-to-Live) 값으로 결정되는 일정에 따라 공급자 스토어에 쿼리합니다. Time-to-Live 값이 경과되면 Most Recent Provider는 공급자 스토어에 기존 CMP의 최대 버전을 물어봅니다.

Most Recent Provider는 쿼리 간에 동일한 CMP를 사용하여 암호화 자료에 대한 요청을 충족합니다. 그리고 타이머가 경과될 때 공급자 스토어가 반환하는 버전 번호가 현재의 버전 번호와 동일하면 Most Recent Provider가 동일한 CMP을 계속합니다. 캐시에서 해당 버전의 CMP를 사용하거나 공급자 저장소에서 동일한 버전(및 동일한 암호화 자료)의 새 CMP를 가져올 수 있습니다.

공급자 스토어에 Most Recent Provider로 새 CMP 버전을 만들도록 알리려면 Most Recent Provider의 자료 이름을 사용하여 공급자 스토어의 새 공급자 만들기 작업을 호출합니다. 공급자 저장소는 새 CMP를 생성하고 암호화된 사본을 더 큰 버전 번호로 내부 저장소에 저장합니다. (CMP도 반환되지만 폐기할 수 있습니다.) 그 결과, 다음 번에는 Most Recent Provider 는 공급자 저장소에서 CMP의 최대 버전 번호를 쿼리하고, 더 큰 새 버전 번호를 가져오며, 이후 요청에서 이를 사용합니다.

시간, 처리된 항목 또는 애트리뷰트 수 또는 응용 프로그램에 적합한 기타 메트릭을 기반으로 새 공급자 만들기 호출을 예약할 수 있습니다.

암호화 자료 가져오기

Most Recent Provider는 이 다이어그램에 표시된 다음과 같은 프로세스를 통해 항목 암호화 도구로 반환되는 암호화 자료를 가져옵니다. 출력은 공급자가 반환하는 CMP 유형에 따라 달라집니다. Most Recent Provider는 DynamoDB Encryption Client에 포함된 MetaStore를 포함하여 호환되는 공급자 스토어를 모두 사용할 수 있습니다.


          의 입력, 처리 및 출력 Most Recent Provider 에서 DynamoDB Encryption Client

Most Recent Provider를 만들 때 공급자 스토어, Most Recent Provider의 이름, 그리고 Most Recent Provider에서 공급자 스토어에 암호화 자료의 최신 버전 번호를 물어볼 빈도를 결정하는 TTL(Time-to-Live) 값을 지정합니다.

참고

TTL(Time-to-Live) 값이 만료되면 Most Recent Provider는 공급자 스토어에 기존 CMP의 최대 버전 번호를 묻습니다. 이 작업은 버전을 증가시키지 않으며 공급자 저장소에서 새 암호화 자료를 생성하도록 하지 않습니다. 자세한 정보는 암호화 자료 교체 단원을 참조하십시오.

이 항목이 Most Recent Provider에 암호화 자료를 요청하면 Most Recent Provider는 캐시에서 CMP의 최신 버전을 검색하는 것부터 시작합니다.

  • 최신 버전 CMP가 캐시 안에 있으면 Most Recent Provider에서 해당 CMP를 사용하여 암호화 자료를 생성합니다. 그런 다음 암호화 자료를 물품 암호기 에 반환합니다. 이 작업은 공급자 매장 에 대한 호출이 필요하지 않습니다.

  • 최신 CMP 버전이 캐시 안에 없으면 Most Recent Provider는 공급자 스토어에서 CMP를 요청합니다. 이 요청에는 Most Recent Provider 자료 이름과 알고 있는 최대 버전 번호가 포함됩니다.

    1. 공급자 저장소는 영구 저장소에서 CMP를 반환합니다. 공급자 스토어가 MetaStore이면 Most Recent Provider 자료 이름을 파티션 키로 사용하고 버전 번호를 정렬 키로 사용하여 내부 DynamoDB 테이블에서 암호화된 Wrapped CMP를 가져옵니다. 메타스토어는 내부 품목 암호기와 내부 CMP를 사용하여 래핑된 CMP를 해독합니다. 그런 다음 일반 텍스트 CMP를 가장 최근 공급자 로 반환합니다. 내부 CMP가 Direct KMS Provider인 경우 이 단계에는 AWS Key Management Service(AWS KMS)에 대한 호출이 포함됩니다.

    2. CMP 는 amzn-ddb-meta-id 필드를 실제 자료 설명에 추가합니다. 이 값은 내부 테이블 에서 CMP의 자재 이름 및 버전입니다. 공급자 스토어는 CMP를 Most Recent Provider에 반환합니다.

    3. Most Recent Provider는 CMP를 메모리에 캐시합니다.

    4. Most Recent Provider는 CMP를 사용하여 암호화 자료를 생성합니다. 그런 다음 암호화 자료를 물품 암호기 에 반환합니다.

해독 자료 가져오기

항목 암호화 도구가 Most Recent Provider에 해독 자료를 요청하는 경우 Most Recent Provider는 다음 프로세스를 사용하여 이러한 자료를 가져와서 반환합니다.

  1. Most Recent Provider는 공급자 스토어에 항목을 암호화하는 데 사용되었던 암호화 자료의 버전 번호를 요청합니다. Most Recent Provider는 항목의 자료 설명 속성에서 실제 자료 설명을 전달합니다.

  2. 공급자 스토어는 실제 자료 설명의 amzn-ddb-meta-id 필드에서 암호화 CMP 버전 번호를 가져와서 Most Recent Provider로 반환합니다.

  3. Most Recent Provider는 항목을 암호화 및 서명하는 데 사용되었던 CMP 버전을 캐시에서 검색합니다.

  • 일치하는 버전의 CMP가 캐시에 있는 경우 가장 최근 공급자가 CMP를 사용하여 암호 해독 재료 을 생성합니다. 그런 다음 복호화 물질을 물품 암호기 에 반환합니다. 이 작업은 공급자 매장 또는 다른 CMP에 전화할 필요가 없습니다.

  • 일치하는 CMP 버전이 캐시 안에 없으면 Most Recent Provider는 공급자 스토어에서 CMP를 요청합니다. 요청에서 자재 이름과 암호화 CMP 버전 번호를 보냅니다.

    1. 공급자 저장소는 가장 최근 공급자 이름을 파티션 키로, 버전 번호를 정렬 키로 사용하여 영구 저장소에서 CMP를 검색합니다.

      • 이름 및 버전 번호가 영구 스토리지에 없는 경우 공급자 저장소에서 예외를 throw합니다. 공급자 저장소를 사용하여 CMP를 생성한 경우 CMP는 의도적으로 삭제하지 않는 한 영구 저장소에 저장해야 합니다.

      • CMP와 해당 이름 및 버전 번호가 공급자 스토어의 영구 스토리지 안에 있으면 공급자 스토어가 지정된 CMP를 Most Recent Provider로 반환합니다.

        공급자 저장소가 메타 저장소인 경우 DynamoDB 표. 그런 다음 CMP를 Most Recent Provider로 반환하기 전에 내부 CMP의 암호화 자료를 사용하여 암호화된 CMP를 해독합니다. 내부 CMP가 Direct KMS Provider이면 이 단계에는 AWS Key Management Service(AWS KMS)에 대한 호출이 포함됩니다.

    2. Most Recent Provider는 CMP를 메모리에 캐시합니다.

    3. Most Recent Provider에서는 CMP를 사용하여 해독 자료를 생성합니다. 그런 다음 복호화 물질을 물품 암호기 에 반환합니다.