기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
DynamoDB Encryption Client for Python 사용
참고
클라이언트 측 암호화 라이브러리의 이름이 AWS 데이터베이스 암호화 로 변경되었습니다SDK. 다음 주제에서는 Java용 DynamoDB Encryption Client 버전 1.x~2.x 와 Python용 DynamoDB Encryption Client 버전 1.x~3.x에 대한 정보를 제공합니다. 자세한 내용은 AWS DynamoDB 버전 지원SDK용 데이터베이스 암호화를 참조하세요.
이 주제에서는 다른 프로그래밍 언어 구현에서는 찾을 수 없는 DynamoDB Encryption Client for Python의 일부 기능에 대해 설명합니다. 이러한 기능은 가장 안전한 방법으로 DynamoDB Encryption Client를 더 쉽게 사용할 수 있도록 설계되었습니다. 특별한 사용 사례가 아니라면 이를 사용하는 것이 좋습니다.
DynamoDB 암호화 클라이언트를 사용한 프로그래밍에 대한 자세한 내용은 이 가이드의 Python 예제, 의 aws-dynamodb-encryption-python리포지토리 예제
클라이언트 헬퍼 클래스
DynamoDB Encryption Client for Python에는 DynamoDB용 Boto 3 클래스를 미러링하는 여러 클라이언트 헬퍼 클래스가 포함되어 있습니다. 이러한 헬퍼 클래스는 다음과 같이 기존 DynamoDB 애플리케이션에 암호화 및 서명을 더 쉽게 추가하고 가장 일반적인 문제를 방지할 수 있도록 설계되었습니다.
-
AttributeActions 객체에 기본 키에 대한 재정의 작업을 추가하거나
AttributeActions
객체가 클라이언트에 기본 키를 암호화하도록 명시적으로 지시하는 경우 예외를 발생시켜 항목의 기본 키를 암호화하지 못하도록 합니다.AttributeActions
객체의 기본 작업이DO_NOTHING
이면 클라이언트 헬퍼 클래스는 프라이머리 키에 대해 해당 작업을 사용합니다. 그렇지 않으면SIGN_ONLY
를 사용합니다. -
TableInfo 객체를 생성하고 DynamoDB에 대한 호출을 기반으로 DynamoDB 암호화 컨텍스트를 채웁니다. DynamoDB 이는 DynamoDB 암호화 컨텍스트가 정확하고 클라이언트가 프라이머리 키를 식별할 수 있도록 하는 데 도움이 됩니다.
-
테이블에 쓰거나 읽어올 때 사용자 모르게 테이블 항목을 암호화 및 복호화하는
put_item
및get_item
와 같은 방법을 지원합니다.update_item
메소드만 지원되지 않습니다.
하위 수준의 항목 암호화 도구를 사용하여 직접 상호 작용하는 대신에 클라이언트 헬퍼 클래스를 사용할 수 있습니다. 항목 암호화 도구에서 고급 옵션을 설정해야 하는 경우가 아니면 이 클래스를 사용합니다.
클라이언트 헬퍼 클래스에는 다음이 포함됩니다.
-
EncryptedTable
DynamoDB의 테이블 리소스를 사용하여 한 번에 하나의 테이블을 처리하는 애플리케이션의 경우. -
EncryptedResource
배치 처리를 위해 DynamoDB에서 서비스 리소스 클래스를 사용하는 애플리케이션의 경우. -
EncryptedClient
DynamoDB 에서 하위 수준 클라이언트 를 사용하는 애플리케이션용입니다. DynamoDB
클라이언트 헬퍼 클래스를 사용하려면 발신자에게 대상 테이블에서 DynamoDB DescribeTable 작업을 호출할 수 있는 권한이 있어야 합니다.
TableInfo 클래스
TableInfo
클라이언트 헬퍼 클래스를 사용하는 경우 이 클래스에서 사용자를 대신하여 TableInfo
객체를 만들고 사용합니다. 그렇지 않으면 명시적으로 생성할 수 있습니다. 예시는 항목 암호화 도구 사용에서 확인하십시오.
TableInfo
객체에서 refresh_indexed_attributes
메서드를 호출하면 DynamoDB DescribeTable 작업을 호출하여 객체의 속성 값이 채워집니다. 테이블 쿼리는 하드 코딩된 인덱스 이름보다 훨씬 더 안정적입니다. TableInfo
클래스에는 DynamoDB 암호화 컨텍스트에 필요한 값을 제공하는 encryption_context_values
속성도 포함되어 있습니다.
refresh_indexed_attributes
메서드를 사용하려면 호출자에게 대상 테이블에서 DynamoDB DescribeTable 작업을 호출할 수 있는 권한이 있어야 합니다.
Python의 속성 작업
속성 작업은 항목의 각 속성에 대해 수행할 작업을 항목 암호화 도구에 알려줍니다. Python에서 속성 작업을 지정하려면 기본 작업과 특정 속성에 대한 예외가 포함된 AttributeActions
객체를 만듭니다. 유효한 값은 CryptoAction
열거 유형에 정의됩니다.
중요
속성 작업을 사용하여 테이블 항목을 암호화한 후 데이터 모델에서 속성을 추가하거나 제거하면 서명 검증 오류가 발생하여 데이터를 복호화하지 못할 수 있습니다. 자세한 내용은 데이터 모델 변경 단원을 참조하십시오.
DO_NOTHING = 0 SIGN_ONLY = 1 ENCRYPT_AND_SIGN = 2
예를 들어, 이 AttributeActions
객체는 모든 속성에 대한 기본값을 ENCRYPT_AND_SIGN
으로 설정하고 ISBN
및 PublicationYear
속성에 대한 예외를 지정합니다.
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, attribute_actions={ 'ISBN': CryptoAction.DO_NOTHING, 'PublicationYear': CryptoAction.SIGN_ONLY } )
클라이언트 헬퍼 클래스를 사용하는 경우 기본 키 속성에 대한 속성 작업을 지정할 필요가 없습니다. 클라이언트 헬퍼 클래스는 프라이머리 키를 암호화하는 것을 방지합니다.
클라이언트 헬퍼 클래스를 사용하지 않고 프라이머리 작업이ENCRYPT_AND_SIGN
인 경우 프라이머리 키에 대한 작업을 지정해야 합니다. 프라이머리 키에 대한 권장 조치는 SIGN_ONLY
입니다. 이를 쉽게 하려면 기본 키에 SIGN_ONLY를 사용하는 set_index_keys
메서드 또는 기본 작업NOTHING인 DO_를 사용합니다.
주의
기본 키 속성은 암호화하지 마십시오. 일반 텍스트로 남겨 두어야 DynamoDB에서 전체 테이블 스캔을 실행하지 않고 해당 항목을 찾을 수 있습니다.
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, ) actions.set_index_keys(*table_info.protected_index_keys())