데이터 모델 업데이트 - AWS 데이터베이스 암호화 SDK

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

데이터 모델 업데이트

클라이언트 측 암호화 라이브러리의 이름이 데이터베이스 암호화 SDK로 변경되었습니다. AWS 이 개발자 안내서는 여전히 DynamoDB Encryption Client에 대한 정보를 제공합니다.

DynamoDB용 AWS 데이터베이스 암호화 SDK를 구성할 때 속성 작업을 제공합니다. 암호화 시 AWS Database Encryption SDK는 속성 작업을 사용하여 암호화하고 서명할 속성, 서명 (암호화하지 않음) 할 속성, 무시할 속성을 식별합니다. 또한 서명에서 제외되는 속성을 클라이언트에게 명시적으로 알리도록 허용된 무서명 속성을 정의합니다. 암호 해독 시 AWS Database Encryption SDK는 사용자가 정의한 서명되지 않은 허용 속성을 사용하여 서명에 포함되지 않은 속성을 식별합니다. 속성 동작은 암호화된 항목에 저장되지 않으며 AWS 데이터베이스 암호화 SDK는 속성 동작을 자동으로 업데이트하지 않습니다.

속성 작업을 신중하게 선택합니다. 확실하지 않은 경우 Encrypt and sign(암호화 및 서명)을 사용합니다. AWS 데이터베이스 암호화 SDK를 사용하여 항목을 보호한 후에는 기존 ENCRYPT_AND_SIGNSIGN_ONLY, 또는 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 속성을 로 변경할 수 없습니다. DO_NOTHING 그러나 다음과 같이 안전하게 변경할 수 있습니다.

검색 가능한 암호화에 대한 고려 사항

데이터 모델을 업데이트하기 전에 업데이트가 속성으로 구성한 모든 비컨에 어떤 영향을 미칠 수 있는지 신중하게 고려해야 합니다. 비컨으로 새 레코드를 작성한 후에는 비컨의 구성을 업데이트할 수 없습니다. 비컨을 구성하는 데 사용한 속성과 관련된 속성 작업은 업데이트할 수 없습니다. 기존 속성 및 관련 비컨을 제거하면 해당 비컨을 사용하여 기존 레코드를 쿼리할 수 없습니다. 레코드에 추가하는 새 필드에 대해 새 비컨을 만들 수 있지만 새 필드를 포함하도록 기존 비컨을 업데이트할 수는 없습니다.

속성 고려 사항 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

기본적으로 파티션 및 정렬 키는 암호화 컨텍스트에 포함되는 유일한 속성입니다. AWS KMS 계층적 키링의 분기 키 ID 공급자가 암호화 컨텍스트에서 암호 해독에 필요한 분기 키를 식별할 수 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 있도록 추가 필드를 정의하는 것을 고려할 수 있습니다. 자세한 내용은 브랜치 키 ID 공급업체를 참조하십시오. SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT속성을 지정하는 경우 파티션 및 정렬 속성도 지정해야 합니다SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT.

참고

SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT암호화 작업을 사용하려면 AWS 데이터베이스 암호화 SDK 버전 3.3 이상을 사용해야 합니다. 포함되도록 데이터 모델을 업데이트하기 전에 모든 독자에게 새 버전을 배포하십시오. SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

ENCRYPT_AND_SIGNSIGN_ONLY, 및 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 속성 추가

ENCRYPT_AND_SIGNSIGN_ONLY, 또는 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 속성을 추가하려면 속성 작업에서 새 속성을 정의하십시오.

기존 DO_NOTHING 속성을 제거하고 ENCRYPT_AND_SIGNSIGN_ONLY, 또는 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 속성으로 다시 추가할 수는 없습니다.

주석이 달린 데이터 클래스 사용

TableSchema를 사용하여 속성 작업을 정의한 경우 주석이 달린 데이터 클래스에 새 속성을 추가합니다. 새 속성에 속성 작업 주석을 지정하지 않으면 클라이언트는 기본적으로 새 속성을 암호화하고 서명합니다(속성이 프라이머리 키의 일부가 아닌 경우). 새 속성에만 서명하려는 경우 @DynamoDBEncryptionSignOnly 또는 @DynamoDBEncryptionSignAndIncludeInEncryptionContext 주석을 사용하여 새 속성을 추가해야 합니다.

객체 모델 사용

속성 작업을 수동으로 정의한 경우 객체 모델의 속성 작업에 새 속성을 추가하고 ENCRYPT_AND_SIGNSIGN_ONLY, 또는 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 을 속성 작업으로 지정합니다.

기존 속성을 제거합니다.

속성이 더 이상 필요하지 않다고 판단되면 해당 속성에 데이터 쓰기를 중단하거나 속성 작업에서 해당 속성을 공식적으로 제거할 수 있습니다. 속성에 새 데이터 쓰기를 중지해도 해당 속성은 여전히 속성 작업에 표시됩니다. 이는 나중에 속성 사용을 다시 시작해야 하는 경우에 유용할 수 있습니다. 속성 작업에서 속성을 정식으로 제거해도 데이터 세트에서 제거되지는 않습니다. 데이터 세트에는 해당 속성이 포함된 항목이 계속 포함됩니다.

기존ENCRYPT_AND_SIGN, SIGN_ONLYSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, 또는 DO_NOTHING 속성을 공식적으로 제거하려면 속성 작업을 업데이트하십시오.

DO_NOTHING 속성을 제거하는 경우 허용된 무서명 속성에서 해당 속성을 제거해서는 안 됩니다. 더 이상 해당 속성에 새 값을 쓰지 않아도 클라이언트가 속성이 포함된 기존 항목을 읽으려면 속성이 서명되지 않았음을 알아야 합니다.

주석이 달린 데이터 클래스 사용

TableSchema를 사용하여 속성 작업을 정의한 경우 주석이 달린 데이터 클래스에서 해당 속성을 제거합니다.

객체 모델 사용

속성 동작을 수동으로 정의한 경우 객체 모델의 속성 작업에서 속성을 제거합니다.

기존 ENCRYPT_AND_SIGN 속성을 또는 로 변경하십시오SIGN_ONLY. SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

기존 ENCRYPT_AND_SIGN 속성을 SIGN_ONLY 또는 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 로 변경하려면 속성 작업을 업데이트해야 합니다. 업데이트를 배포한 후 클라이언트는 속성에 레코드된 기존 값을 확인하고 복호화할 수 있지만 속성에 기록된 새 값에만 서명합니다.

참고

기존 ENCRYPT_AND_SIGN 속성을 SIGN_ONLY 또는 로 변경하기 전에 보안 요구 사항을 신중하게 고려하십시오SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT. 민감한 데이터를 저장할 수 있는 모든 속성은 암호화해야 합니다.

주석이 달린 데이터 클래스 사용

를 사용하여 속성 작업을 정의한 TableSchema 경우 주석이 달린 데이터 클래스에 @DynamoDBEncryptionSignOnly 또는 @DynamoDBEncryptionSignAndIncludeInEncryptionContext 주석을 포함하도록 기존 속성을 업데이트하십시오.

객체 모델 사용

속성 동작을 수동으로 정의한 경우 기존 속성과 연관된 속성 작업을 객체 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 모델에서 SIGN_ONLY 또는 객체 모델 ENCRYPT_AND_SIGN 내에서 업데이트하십시오.

기존 SIGN_ONLY 또는 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 속성을 다음으로 변경하십시오. ENCRYPT_AND_SIGN

기존 SIGN_ONLY 또는 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 속성을 로 ENCRYPT_AND_SIGN 변경하려면 속성 작업을 업데이트해야 합니다. 업데이트를 배포한 후 클라이언트는 속성에 레코드된 기존 값을 확인하고 속성에 기록된 새 값을 암호화하고 서명할 수 있습니다.

주석이 달린 데이터 클래스 사용

를 사용하여 속성 동작을 정의한 TableSchema 경우 기존 속성에서 @DynamoDBEncryptionSignOnly 또는 @DynamoDBEncryptionSignAndIncludeInEncryptionContext 주석을 제거하십시오.

객체 모델 사용

속성 작업을 수동으로 정의한 경우, 객체 모델에서 속성과 연관된 속성 작업을 업데이트하십시오. SIGN_ONLY SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT ENCRYPT_AND_SIGN

DO_NOTHING 속성 추가

DO_NOTHING 속성을 추가할 때 오류가 발생할 위험을 줄이려면 DO_NOTHING 속성의 이름을 지정할 때 고유한 접두사를 지정한 다음 해당 접두사를 사용하여 허용되는 무서명 속성을 정의하는 것이 좋습니다.

주석이 달린 데이터 클래스에서 기존 ENCRYPT_AND_SIGNSIGN_ONLY, 또는 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 속성을 제거한 다음 해당 속성을 다시 속성으로 추가할 수는 없습니다. DO_NOTHING 완전히 새로운 DO_NOTHING 속성만 추가할 수 있습니다.

DO_NOTHING 속성을 추가하는 단계는 허용된 서명되지 않은 속성을 목록에 명시적으로 정의했는지 아니면 접두사를 사용하여 정의했는지에 따라 달라집니다.

허용된 무서명 속성 접두사 사용

TableSchema을 사용하여 속성 작업을 정의한 경우 @DynamoDBEncryptionDoNothing 주석을 사용하여 주석이 달린 데이터 클래스에 새 DO_NOTHING 속성을 추가합니다. 속성 작업을 수동으로 정의한 경우 새 속성을 포함하도록 속성 작업을 업데이트합니다. DO_NOTHING 속성 작업을 사용하여 새 속성을 명시적으로 구성해야 합니다. 새 속성 이름에 동일한 고유 접두사를 포함해야 합니다.

허용된 무서명 속성 목록 사용
  1. 허용된 무서명 속성 목록에 새 DO_NOTHING 속성을 추가하고 업데이트된 목록을 배포합니다.

  2. 1단계에서 변경한 내용을 배포합니다.

    이 데이터를 읽어야 하는 모든 호스트에 변경 내용이 전파되기 전까지는 3단계로 넘어갈 수 없습니다.

  3. DO_NOTHING 속성을 속성 작업에 추가합니다.

    1. TableSchema을 사용하여 속성 작업을 정의한 경우 @DynamoDBEncryptionDoNothing 주석을 사용하여 주석이 달린 데이터 클래스에 새 DO_NOTHING 속성을 추가합니다.

    2. 속성 작업을 수동으로 정의한 경우 새 속성을 포함하도록 속성 작업을 업데이트합니다. DO_NOTHING 속성 작업을 사용하여 새 속성을 명시적으로 구성해야 합니다.

  4. 3단계에서 변경한 내용을 배포합니다.

기존 SIGN_ONLY 속성을 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT로 변경합니다.

기존 SIGN_ONLY 속성을 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT로 변경하려면 속성 작업을 업데이트해야 합니다. 업데이트를 배포한 후 클라이언트는 속성에 기록된 기존 값을 확인할 수 있으며 속성에 기록된 새 값에 계속 서명합니다. 속성에 기록된 새 값은 암호화 컨텍스트에 포함됩니다.

SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT속성을 지정하는 경우 파티션 및 정렬 속성도 지정해야 합니다SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT.

주석이 달린 데이터 클래스 사용

a를 사용하여 속성 작업을 정의한 TableSchema 경우 속성과 관련된 속성 작업을 에서 에서 @DynamoDBEncryptionSignOnly@DynamoDBEncryptionSignAndIncludeInEncryptionContext 업데이트하십시오.

객체 모델 사용

속성 작업을 수동으로 정의한 경우, 객체 모델에서 속성과 연관된 속성 작업을 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 에서 SIGN_ONLY 로 업데이트합니다.

기존 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 속성을 SIGN_ONLY로 변경합니다.

기존 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 속성을 SIGN_ONLY로 변경하려면 속성 작업을 업데이트해야 합니다. 업데이트를 배포한 후 클라이언트는 속성에 기록된 기존 값을 확인하고 속성에 기록된 새 값에 계속 서명할 수 있습니다. 속성에 기록된 새 값은 암호화 컨텍스트에 포함되지 않습니다.

기존 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 속성을 로 SIGN_ONLY 변경하기 전에 업데이트가 브랜치 키 ID 공급자의 기능에 어떤 영향을 미칠 수 있는지 신중하게 고려하십시오.

주석이 달린 데이터 클래스 사용

를 사용하여 속성 작업을 정의한 TableSchema 경우 속성과 관련된 속성 작업을 에서 @DynamoDBEncryptionSignAndIncludeInEncryptionContext@DynamoDBEncryptionSignOnly 업데이트하십시오.

객체 모델 사용

속성 작업을 수동으로 정의한 경우, 객체 모델에서 속성과 연관된 속성 작업을 SIGN_ONLY 에서 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 로 업데이트합니다.