기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
데이터 모델 변경
참고
클라이언트 측 암호화 라이브러리의 이름이 AWS 데이터베이스 암호화 로 변경되었습니다SDK. 다음 주제에서는 Java용 DynamoDB Encryption Client 버전 1.x~2.x 와 Python용 DynamoDB Encryption Client 버전 1.x~3.x에 대한 정보를 제공합니다. 자세한 내용은 AWS DynamoDB 버전 지원SDK용 데이터베이스 암호화를 참조하세요.
항목을 암호화하거나 복호화할 때마다 암호화하고 서명할 속성, 서명할 속성(암호화하지 않음), 무시할 속성을 DynamoDB Encryption Client에 알려주는 속성 작업을 제공해야 합니다. 속성 작업은 암호화된 항목에 저장되지 않으며 DynamoDB Encryption Client는 속성 작업을 자동으로 업데이트하지 않습니다.
중요
DynamoDB Encryption Client는 암호화되지 않은 기존 DynamoDB 테이블 데이터의 암호화를 지원하지 않습니다.
데이터 모델을 변경할 때마다, 즉 테이블 항목에서 속성을 추가하거나 제거할 때 오류가 발생할 수 있습니다. 지정한 속성 작업이 항목의 모든 속성을 고려하지 않는 경우 항목이 의도한 방식으로 암호화되고 서명되지 않을 수 있습니다. 특히, 항목 복호화 시 제공하는 속성 작업과 항목 암호화 시 제공했던 속성 작업이 다른 경우 서명 확인이 실패할 수 있습니다.
예를 들어, 항목을 암호화하는 데 사용된 속성 동작에서 test
속성에 서명하도록 지정하는 경우 항목의 서명에는 test
속성이 포함됩니다. 그러나 항목을 복호화하는 데 사용된 속성 작업이 test
속성을 고려하지 않는 경우 클라이언트가 test
속성을 포함하지 않는 서명을 확인하려고 하기 때문에 확인이 실패합니다.
이는 DynamoDB Encryption Client가 모든 애플리케이션의 항목에 대해 동일한 서명을 계산해야 하기 때문에 여러 애플리케이션이 동일한 DynamoDB 항목을 읽고 쓸 때 특히 문제가 됩니다. 또한 속성 작업의 변경 사항이 모든 호스트에 전파되어야 하기 때문에 분산 애플리케이션에서도 문제가 됩니다. 한 프로세스에서 한 호스트가 DynamoDB 테이블에 액세스하는 경우에도 모범 사례 프로세스를 설정하면 프로젝트가 더욱 복잡해지더라도 오류를 방지하는 데 도움이 됩니다.
테이블 항목을 읽을 수 없도록 하는 서명 유효성 검사 오류를 방지하려면 다음 지침을 따르십시오.
서명 유효성 검사 오류는 해결하기가 매우 어려울 수 있으므로 가장 좋은 방법은 오류를 방지하는 것입니다.
속성 추가
테이블 항목에 새 속성을 추가할 때 속성 작업을 변경해야 할 수 있습니다. 서명 유효성 검사 오류를 방지하려면 2단계 프로세스로 이 변경을 구현하는 것이 좋습니다. 첫 번째 단계가 완료되었는지 확인한 후 두 번째 단계를 시작합니다.
-
테이블을 읽거나 쓰는 모든 애플리케이션에서 속성 작업을 변경합니다. 이러한 변경 사항을 배포하고 업데이트가 모든 대상 호스트에 전파되었는지 확인합니다.
-
테이블 항목의 새 속성에 값을 씁니다.
이 2단계 접근 방식은 모든 애플리케이션과 호스트에 동일한 속성 작업이 있도록 하며, 새 속성이 발생하기 전에 동일한 서명을 계산합니다. 일부 암호화의 기본값은 암호화 및 서명이기 때문에 속성에 대한 작업이 아무 작업 안 함(암호화 또는 서명 안 함)인 경우에도 중요합니다.
다음 예제에서는 이 프로세스의 첫 번째 단계에 대한 코드를 보여 줍니다. 다른 테이블 항목에 대한 링크를 저장하는 새 항목 속성인 link
를 추가합니다. 이 링크는 일반 텍스트로 유지되어야 하므로 이 예제에서는 서명 전용 작업을 할당합니다. 이 변경 사항을 완전히 배포한 다음 모든 애플리케이션과 호스트에 새 속성 작업이 있는지 확인한 후 테이블 항목에서 link
속성을 사용할 수 있습니다.
속성 제거
DynamoDB Encryption Client로 암호화된 항목에 더 이상 속성이 필요하지 않은 경우 속성 사용을 중지할 수 있습니다. 그러나 해당 속성에 대한 작업을 삭제하거나 변경하지 마십시오. 그런 경우 해당 속성을 가진 항목이 발견되면 해당 항목에 대해 계산된 서명이 원래 서명과 일치하지 않으므로 서명 유효성 검사가 실패합니다.
코드에서 속성의 모든 추적을 제거하고 싶을 수도 있지만 항목을 삭제하는 대신 더 이상 사용되지 않는다는 설명을 추가합니다. 전체 테이블 스캔을 수행하여 속성의 모든 인스턴스를 삭제하더라도 해당 속성을 가진 암호화된 항목이 캐싱되거나 구성 어딘가에서 처리 중일 수 있습니다.