DynamoDB Encryption Client for Python 사용 - AWS 데이터베이스 암호화 SDK

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

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리포지토리 예제 GitHub및 DynamoDB 암호화 클라이언트의 Python 설명서를 참조하세요.

클라이언트 헬퍼 클래스

DynamoDB Encryption Client for Python에는 DynamoDB용 Boto 3 클래스를 미러링하는 여러 클라이언트 헬퍼 클래스가 포함되어 있습니다. 이러한 헬퍼 클래스는 다음과 같이 기존 DynamoDB 애플리케이션에 암호화 및 서명을 더 쉽게 추가하고 가장 일반적인 문제를 방지할 수 있도록 설계되었습니다.

  • AttributeActions 객체에 기본 키에 대한 재정의 작업을 추가하거나 AttributeActions 객체가 클라이언트에 기본 키를 암호화하도록 명시적으로 지시하는 경우 예외를 발생시켜 항목의 기본 키를 암호화하지 못하도록 합니다. AttributeActions 객체의 기본 작업이 DO_NOTHING이면 클라이언트 헬퍼 클래스는 프라이머리 키에 대해 해당 작업을 사용합니다. 그렇지 않으면 SIGN_ONLY를 사용합니다.

  • TableInfo 객체를 생성하고 DynamoDB에 대한 호출을 기반으로 DynamoDB 암호화 컨텍스트를 채웁니다. DynamoDB 이는 DynamoDB 암호화 컨텍스트가 정확하고 클라이언트가 프라이머리 키를 식별할 수 있도록 하는 데 도움이 됩니다.

  • 테이블에 쓰거나 읽어올 때 사용자 모르게 테이블 항목을 암호화 및 복호화하는 put_itemget_item와 같은 방법을 지원합니다. update_item 메소드만 지원되지 않습니다.

하위 수준의 항목 암호화 도구를 사용하여 직접 상호 작용하는 대신에 클라이언트 헬퍼 클래스를 사용할 수 있습니다. 항목 암호화 도구에서 고급 옵션을 설정해야 하는 경우가 아니면 이 클래스를 사용합니다.

클라이언트 헬퍼 클래스에는 다음이 포함됩니다.

클라이언트 헬퍼 클래스를 사용하려면 발신자에게 대상 테이블에서 DynamoDB DescribeTable 작업을 호출할 수 있는 권한이 있어야 합니다.

TableInfo 클래스

TableInfo 클래스는 DynamoDB 테이블을 나타내는 헬퍼 클래스로, 기본 키 및 보조 인덱스의 필드로 완성됩니다. 테이블에 대한 정확한 실시간 정보를 얻는 데 도움이 됩니다.

클라이언트 헬퍼 클래스를 사용하는 경우 이 클래스에서 사용자를 대신하여 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으로 설정하고 ISBNPublicationYear 속성에 대한 예외를 지정합니다.

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