

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# を移行およびデプロイする方法 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 Encryption CLI に必要です。Discovery モードでマスターキープロバイダーを使用する場合は、Discovery フィルターを実装して、使用するラッピングキーを特に 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)とロールバックが容易になります。