키 스토어 작업 구성 - AWS Encryption SDK

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

키 스토어 작업 구성

키 스토어 작업은 사용자가 수행할 수 있는 작업과 AWS KMS 계층적 키링이 키 스토어에 나열된 KMS 키를 사용하는 방법을 결정합니다. 는 다음과 같은 키 스토어 작업 구성을 AWS Encryption SDK 지원합니다.

정적

키 스토어를 정적으로 구성하는 경우 키 스토어는 KMS 키 스토어 작업을 구성할 kmsConfiguration 때 에서 ARN 제공하는 KMS 키와 연결된 키만 사용할 수 있습니다. 브랜치 KMS 키를 생성, 버전 관리 또는 가져올 때 다른 키ARN가 발생하는 경우 예외가 발생합니다.

에서 다중 리전 KMS 키를 지정할 수 kmsConfiguration있지만 리전을 ARN포함한 키의 전체 는 KMS 키에서 파생된 브랜치 키에 유지됩니다. 다른 리전에서 키를 지정할 수 없으며, 값이 일치하려면 정확히 동일한 다중 리전 키를 제공해야 합니다.

키 스토어 작업을 정적으로 구성하면 사용 작업(GetActiveBranchKey, GetBranchKeyVersion, GetBeaconKey) 및 관리 작업(CreateKey 및 )ARN을 수행할 수 있습니다VersionKey. CreateKey는 키 스토어 허용 목록에 새 KMS 키를 추가할 수 있는 권한 있는 작업입니다. 이 KMS 키는 새 활성 브랜치 키를 생성할 수 있습니다. 키 스토어에 KMS 키가 추가되면 삭제할 수 없으므로 이 작업에 대한 액세스를 제한하는 것이 좋습니다.

Discovery

검색을 위해 키 스토어 작업을 구성할 때 키 스토어는 키 스토어에 허용 목록에 있는 모든 AWS KMS key ARN 작업을 사용할 수 있습니다. 그러나 다중 리전 KMS 키가 발생하고 키의 리전이 사용 중인 AWS KMS 클라이언트의 리전과 일치하지 ARN 않는 경우 예외가 발생합니다.

검색을 위해 키 스토어를 구성할 때는 CreateKey 및 와 같은 관리 작업을 수행할 수 없습니다VersionKey. 암호화, 복호화, 서명 및 확인 작업을 활성화하는 사용 작업만 수행할 수 있습니다. 자세한 내용은 최소 권한 구현 단원을 참조하십시오.

키 스토어 작업 구성

키 스토어 작업을 구성하기 전에 다음 사전 조건이 충족되었는지 확인하세요.

  • 수행해야 할 작업을 결정합니다. 자세한 내용은 최소 권한 구현 단원을 참조하십시오.

  • 논리적 키 스토어 이름 선택

    DynamoDB 테이블 이름과 논리적 키 스토어 이름 사이에 매핑이 있어야 one-to-one 합니다. 논리적 키 스토어 이름은 테이블에 저장된 모든 데이터에 암호화 방식으로 바인딩되어 DynamoDB 복원 작업을 간소화합니다. 첫 번째 사용자가 처음 정의한 후에는 변경할 수 없습니다. 키 스토어 작업에 항상 동일한 논리적 키 스토어 이름을 지정해야 합니다. 자세한 내용은 logical key store name 단원을 참조하십시오.

다음 예제에서는 키 스토어 작업을 정적으로 구성합니다. 키 스토어 역할을 하는 DynamoDB 테이블의 이름, 키 스토어의 논리적 이름, 대칭 암호화 KMS 키를 ARN 식별하는 KMS 키를 지정해야 합니다.

참고

KMS 키 스토어 서비스를 정적으로 구성할 때 ARN 지정하는 키를 신중하게 고려합니다. CreateKey 작업은 ARN브랜치 KMS 키 스토어 허용 목록에 키를 추가합니다. 브랜치 KMS 키 스토어에 키가 추가되면 삭제할 수 없습니다.

Java
final KeyStore keystore = KeyStore.builder().KeyStoreConfig( KeyStoreConfig.builder() .ddbClient(DynamoDbClient.create()) .ddbTableName(keyStoreName) .logicalKeyStoreName(logicalKeyStoreName) .kmsClient(KmsClient.create()) .kmsConfiguration(KMSConfiguration.builder() .kmsKeyArn(kmsKeyArn) .build()) .build()).build();
C# / .NET
var kmsConfig = new KMSConfiguration { KmsKeyArn = kmsKeyArn }; var keystoreConfig = new KeyStoreConfig { KmsClient = new AmazonKeyManagementServiceClient(), KmsConfiguration = kmsConfig, DdbTableName = keyStoreName, DdbClient = new AmazonDynamoDBClient(), LogicalKeyStoreName = logicalKeyStoreName }; var keystore = new KeyStore(keystoreConfig);
Python
keystore: KeyStore = KeyStore( config=KeyStoreConfig( ddb_client=ddb_client, ddb_table_name=key_store_name, logical_key_store_name=logical_key_store_name, kms_client=kms_client, kms_configuration=KMSConfigurationKmsKeyArn( value=kms_key_id ), ) )

다음 예제에서는 검색을 위한 키 스토어 작업을 구성합니다. 키 스토어 역할을 하는 DynamoDB 테이블의 이름과 논리적 키 스토어 이름을 지정해야 합니다.

Java
final KeyStore keystore = KeyStore.builder().KeyStoreConfig( KeyStoreConfig.builder() .ddbClient(DynamoDbClient.create()) .ddbTableName(keyStoreName) .logicalKeyStoreName(logicalKeyStoreName) .kmsClient(KmsClient.create()) .kmsConfiguration(KMSConfiguration.builder() .discovery(Discovery.builder().build()) .build()) .build()).build();
C# / .NET
var keystoreConfig = new KeyStoreConfig { KmsClient = new AmazonKeyManagementServiceClient(), KmsConfiguration = new KMSConfiguration {Discovery = new Discovery()}, DdbTableName = keyStoreName, DdbClient = new AmazonDynamoDBClient(), LogicalKeyStoreName = logicalKeyStoreName }; var keystore = new KeyStore(keystoreConfig);
Python
keystore: KeyStore = KeyStore( config=KeyStoreConfig( ddb_client=ddb_client, ddb_table_name=key_store_name, logical_key_store_name=logical_key_store_name, kms_client=kms_client, kms_configuration=KMSConfigurationDiscovery( value=Discovery() ), ) )