

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

# 마이그레이션 및 배포 방법 AWS Encryption SDK
<a name="migration-guide"></a>

1.7.*x* 이전 AWS Encryption SDK 버전에서 버전 2.0.*x* 이상으로 마이그레이션할 때는 [키 커밋](concepts.md#key-commitment)을 사용하여 암호화로 안전하게 전환해야 합니다. 그러지 않으면 애플리케이션에서 복호화할 수 없는 사이퍼텍스트가 만들어집니다. AWS KMS 마스터 키 공급자를 사용하는 경우 엄격 모드 또는 검색 모드에서 마스터 키 공급자를 생성하는 새 생성자로 업데이트해야 합니다.

**참고**  
이 항목은 AWS Encryption SDK 의 이하 버전에서 2.0.*x* 이상 버전으로 마이그레이션하는 사용자를 대상으로 합니다. 를 처음 AWS Encryption SDK사용하는 경우 기본 설정으로 사용 가능한 최신 버전을 즉시 사용할 수 있습니다.

읽어야 하는 사이퍼텍스트를 복호화할 수 없는 심각한 상황을 피하려면 여러 단계를 거쳐 마이그레이션하고 배포하는 것이 좋습니다. 다음 단계를 시작하기 전에 각 단계가 완료되고 완전히 배포되었는지 확인하세요. 이는 여러 호스트가 있는 분산 애플리케이션에 특히 중요합니다.

## 1단계: 애플리케이션을 최신 1.*x* 버전으로 업데이트합니다.
<a name="migrate-stage1"></a>

사용 중인 프로그래밍 언어의 최신 1.*x* 버전으로 업데이트합니다. 2단계를 시작하기 전에 신중하게 테스트하고 변경 내용을 배포한 다음 업데이트가 모든 대상 호스트에 전파되었는지 확인합니다.

**중요**  
최신 1.*x* 버전이 AWS Encryption SDK의 1.7.*x* 또는 이상 버전인지 확인하세요.

의 최신 1.*x* 버전 AWS Encryption SDK 은의 레거시 버전 AWS Encryption SDK 과 이전 버전과 호환되며 버전 2.0.*x* 이상과 호환됩니다. 여기에는 버전 2.0.*x*에 있는 새 기능이 포함되지만 해당 마이그레이션을 위해 설계된 안전한 기본값을 포함해야 합니다. 필요한 경우 AWS KMS 마스터 키 공급자를 업그레이드하고 키 커밋으로 사이퍼텍스트를 복호화할 수 있는 알고리즘 제품군으로 완전히 배포할 수 있습니다.
+ 레거시 AWS KMS 마스터 키 제공자의 생성자를 포함하여 더 이상 사용되지 않는 요소를 교체하세요. [Python](https://docs.python.org/3/library/warnings.html)의 경우 지원 중단 경고를 켭니다. 최신 1.*x* 버전에서 더 이상 사용되지 않는 코드 요소는 2.0.*x* 이상 버전에서 제거되었습니다.
+ 커밋 정책을 `ForbidEncryptAllowDecrypt`로 명시적으로 설정합니다. 최신 1.*x* 버전에서 유일하게 유효한 값이지만 이 릴리스에 도입된 API를 사용할 때 해당 설정이 필요합니다. 버전 2.0.*x* 이상 버전으로 마이그레이션할 때 애플리케이션이 키 커밋 없이 암호화된 사이퍼텍스트를 거부하는 것을 방지합니다. 자세한 내용은 [커밋 정책 설정](migrate-commitment-policy.md)을 참조하세요.
+  AWS KMS 마스터 키 공급자를 사용하는 경우 레거시 마스터 키 공급자를 *엄격 모드* 및 *검색 모드를* 지원하는 마스터 키 공급자로 업데이트해야 합니다. 이 업데이트는 AWS Encryption SDK for Java AWS Encryption SDK for Python, 및 AWS 암호화 CLI에 필요합니다. 검색 모드에서 마스터 키 제공자를 사용하는 경우 사용되는 래핑 키를 특정 AWS 계정의 래핑 키로 제한하는 검색 필터를 구현하는 것이 좋습니다. 이 업데이트는 선택 사항이지만 권장되는 [모범 사례](best-practices.md)입니다. 자세한 내용은 [AWS KMS 마스터 키 공급자 업데이트](migrate-mkps-v2.md)을 참조하세요.
+ [AWS KMS 검색 키링](use-kms-keyring.md#kms-keyring-discovery)을 사용하는 경우 복호화에 사용되는 래핑 키를 특정 AWS 계정의 래핑 키로 제한하는 검색 필터를 구현하는 것이 좋습니다. 이 업데이트는 선택 사항이지만 권장되는 [모범 사례](best-practices.md)입니다. 자세한 내용은 [AWS KMS 키링 업데이트](migrate-keyrings-v2.md)을 참조하세요.

## 2단계: 애플리케이션을 최신 버전으로 업데이트
<a name="migrate-stage2"></a>

최신 1. *x* 버전을 모든 호스트에 배포했으면 2.0.*x* 이상 버전으로 업그레이드할 수 있습니다. 버전 2.0.*x*에는 모든 이전 버전의 주요 변경 사항이 포함되어 있습니다 AWS Encryption SDK. 하지만 1단계에서 권장하는 대로 코드를 변경하면 최신 버전으로 마이그레이션할 때 오류를 피할 수 있습니다.

최신 버전으로 업데이트하기 전에 커밋 정책이 일관되게 `ForbidEncryptAllowDecrypt`로 설정되어 있는지 확인하세요. 그런 다음 데이터 구성에 따라 편할 때에 `RequireEncryptAllowDecrypt`로 마이그레이션한 다음 기본 설정인 `RequireEncryptRequireDecrypt`로 할 수 있습니다. 다음 패턴과 같이 일련의 전환 단계를 수행하는 것이 좋습니다.

1. [커밋 정책](migrate-commitment-policy.md)을 `ForbidEncryptAllowDecrypt`로 설정한 상태에서 시작하세요. AWS Encryption SDK 는 키 커밋으로 메시지를 복호화할 수 있지만 아직 키 커밋을 사용해 암호화하지는 않습니다.

1. 준비가 완료되면 약정 정책을 `RequireEncryptAllowDecrypt`로 업데이트하세요. 는 [키 커밋](concepts.md#key-commitment)으로 데이터를 암호화하기 AWS Encryption SDK 시작합니다. 키 커밋 사용 여부와 관계없이 사이퍼텍스트를 복호화할 수 있습니다.

   커밋 정책을 `RequireEncryptAllowDecrypt`로 업데이트하기 전에 최신 1.*x* 버전이 생성한 사이퍼텍스트를 복호화하는 애플리케이션의 호스트를 포함하여 모든 호스트에 배포되어 있는지 확인합니다. 버전 1.7.*x* AWS Encryption SDK 이전의 버전은 키 커밋으로 암호화된 메시지를 해독할 수 없습니다.

   또한 아직 키 커밋 없이 사이퍼텍스트를 처리하고 있는지 여부를 측정하는 지표를 애플리케이션에 추가하기에 좋은 타이밍입니다. 이렇게 하면 커밋 정책 설정을 언제 `RequireEncryptRequireDecrypt`로 업데이트해도 안전한지 판단할 수 있습니다. Amazon SQS 대기열의 메시지를 암호화하는 것과 같은 일부 애플리케이션의 경우 이하 버전에서 암호화된 모든 사이퍼텍스트가 다시 암호화되거나 삭제될 때까지 오래 기다려야 할 수 있습니다. 암호화된 S3 객체와 같은 다른 애플리케이션의 경우 모든 객체를 다운로드하고, 재암호화, 재업로드해야 할 수 있습니다.

1. 키 커밋 없이 암호화된 메시지가 없는 것이 확실하면 약정 정책을 `RequireEncryptRequireDecrypt`로 업데이트할 수 있습니다. 이 값을 사용하면 항상 키 커밋을 통해 데이터가 암호화되고 복호화됩니다. 이 설정은 기본값이므로 명시적으로 설정할 필요는 없지만 이 설정을 사용하는 것이 좋습니다. 명시적 설정은 애플리케이션에서 키 커밋 없이 암호화된 사이퍼텍스트를 발견할 경우 필요할 수 있는 [디버깅](troubleshooting-migration.md) 및 잠재적 롤백에 도움이 됩니다.