Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Cara memigrasi dan menyebarkan AWS Encryption SDK
Saat bermigrasi dari AWS Encryption SDK versi lebih awal dari 1.7. x ke versi 2.0. x atau yang lebih baru, Anda harus bertransisi dengan aman ke enkripsi dengan komitmen utama. Jika tidak, aplikasi Anda akan menemukan ciphertext yang tidak dapat didekripsi. Jika Anda menggunakan penyedia kunci AWS KMS master, Anda harus memperbarui ke konstruktor baru yang membuat penyedia kunci master dalam mode ketat atau mode penemuan.
catatan
Topik ini dirancang untuk pengguna yang bermigrasi dari versi sebelumnya AWS Encryption SDK ke versi 2.0. x atau yang lebih baru. Jika Anda baru mengenal AWS Encryption SDK, Anda dapat mulai menggunakan versi terbaru yang tersedia segera dengan pengaturan default.
Untuk menghindari situasi kritis di mana Anda tidak dapat mendekripsi ciphertext yang perlu Anda baca, sebaiknya Anda bermigrasi dan menerapkan dalam beberapa tahap berbeda. Verifikasi bahwa setiap tahap selesai dan sepenuhnya digunakan sebelum memulai tahap berikutnya. Ini sangat penting untuk aplikasi terdistribusi dengan banyak host.
Tahap 1: Perbarui aplikasi Anda ke yang terbaru 1. versi x
Perbarui ke yang terbaru 1. versi x untuk bahasa pemrograman Anda. Uji dengan seksama, terapkan perubahan Anda, dan konfirmasikan bahwa pembaruan telah disebarkan ke semua host tujuan sebelum memulai tahap 2.
penting
Verifikasi bahwa terbaru Anda 1. Versi x adalah versi 1.7. x atau yang lebih baru AWS Encryption SDK.
Yang terbaru 1. versi x AWS Encryption SDK kompatibel dengan versi lama AWS Encryption SDK dan maju yang kompatibel dengan versi 2.0. x dan kemudian. Mereka termasuk fitur-fitur baru yang hadir di versi 2.0. x, tetapi sertakan default aman yang dirancang untuk migrasi ini. Mereka memungkinkan Anda untuk meng-upgrade penyedia kunci AWS KMS master Anda, jika perlu, dan untuk sepenuhnya menyebarkan dengan suite algoritma yang dapat mendekripsi ciphertext dengan komitmen utama.
-
Ganti elemen usang, termasuk konstruktor untuk penyedia kunci master lama AWS KMS . Dengan Python
, pastikan untuk mengaktifkan peringatan penghentian. Elemen kode yang tidak digunakan lagi di 1 terbaru. versi x dihapus dari versi 2.0. x dan kemudian. -
Tetapkan kebijakan komitmen Anda secara eksplisit.
ForbidEncryptAllowDecrypt
Meskipun ini adalah satu-satunya nilai yang valid di 1 terbaru. x versi, pengaturan ini diperlukan saat Anda menggunakan yang APIs diperkenalkan dalam rilis ini. Ini mencegah aplikasi Anda menolak ciphertext yang dienkripsi tanpa komitmen utama saat Anda bermigrasi ke versi 2.0. x dan kemudian. Untuk detailnya, lihat Menetapkan kebijakan komitmen Anda. -
Jika Anda menggunakan penyedia kunci AWS KMS master, Anda harus memperbarui penyedia kunci master lama Anda untuk menguasai penyedia kunci yang mendukung mode ketat dan mode penemuan. Pembaruan ini diperlukan untuk AWS Encryption SDK for Java, AWS Encryption SDK for Python, dan CLI AWS Enkripsi. Jika Anda menggunakan penyedia kunci utama dalam mode penemuan, sebaiknya Anda menerapkan filter penemuan yang membatasi kunci pembungkus yang digunakan untuk kunci tertentu Akun AWS. Pembaruan ini opsional, tetapi ini adalah praktik terbaik yang kami rekomendasikan. Untuk detailnya, lihat Memperbarui penyedia kunci AWS KMS utama.
-
Jika Anda menggunakan cincin kunci AWS KMS penemuan, sebaiknya sertakan filter penemuan yang membatasi kunci pembungkus yang digunakan dalam dekripsi pada kunci tertentu. Akun AWS Pembaruan ini opsional, tetapi ini adalah praktik terbaik yang kami rekomendasikan. Untuk detailnya, lihat Memperbarui AWS KMS keyrings.
Tahap 2: Perbarui aplikasi Anda ke versi terbaru
Setelah menerapkan yang terbaru 1. x versi berhasil untuk semua host, Anda dapat meng-upgrade ke versi 2.0. x dan kemudian. Versi 2.0. x termasuk melanggar perubahan untuk semua versi sebelumnya dari file AWS Encryption SDK. Namun, jika Anda membuat perubahan kode yang direkomendasikan di Tahap 1, Anda dapat menghindari kesalahan saat bermigrasi ke versi terbaru.
Sebelum Anda memperbarui ke versi terbaru, verifikasi bahwa kebijakan komitmen Anda diatur secara konsistenForbidEncryptAllowDecrypt
. Kemudian, tergantung pada konfigurasi data Anda, Anda dapat bermigrasi dengan kecepatan Anda sendiri ke RequireEncryptAllowDecrypt
dan kemudian ke pengaturan default,RequireEncryptRequireDecrypt
. Kami merekomendasikan serangkaian langkah transisi seperti pola berikut.
-
Mulailah dengan kebijakan komitmen Anda yang ditetapkan
ForbidEncryptAllowDecrypt
. AWS Encryption SDK Dapat mendekripsi pesan dengan komitmen utama, tetapi belum mengenkripsi dengan komitmen utama. -
Ketika Anda siap, perbarui kebijakan komitmen Anda untuk
RequireEncryptAllowDecrypt
. AWS Encryption SDK Mulai mengenkripsi data Anda dengan komitmen utama. Itu dapat mendekripsi ciphertext dengan dan tanpa komitmen utama.Sebelum memperbarui kebijakan komitmen Anda
RequireEncryptAllowDecrypt
, verifikasi bahwa kebijakan terbaru Anda 1. Versi x digunakan untuk semua host, termasuk host dari aplikasi apa pun yang mendekripsi ciphertext yang Anda hasilkan. Versi AWS Encryption SDK sebelumnya ke versi 1.7. x tidak dapat mendekripsi pesan yang dienkripsi dengan komitmen utama.Ini juga saat yang tepat untuk menambahkan metrik ke aplikasi Anda untuk mengukur apakah Anda masih memproses ciphertext tanpa komitmen utama. Ini akan membantu Anda menentukan kapan aman untuk memperbarui pengaturan kebijakan komitmen Anda
RequireEncryptRequireDecrypt
. Untuk beberapa aplikasi, seperti yang mengenkripsi pesan dalam antrian Amazon SQS, ini mungkin berarti menunggu cukup lama sehingga semua ciphertext yang dienkripsi di bawah versi lama telah dienkripsi ulang atau dihapus. Untuk aplikasi lain, seperti objek S3 terenkripsi, Anda mungkin perlu mengunduh, mengenkripsi ulang, dan mengunggah ulang semua objek. -
Ketika Anda yakin bahwa Anda tidak memiliki pesan yang dienkripsi tanpa komitmen utama, Anda dapat memperbarui kebijakan komitmen Anda.
RequireEncryptRequireDecrypt
Nilai ini memastikan bahwa data Anda selalu dienkripsi dan didekripsi dengan komitmen utama. Pengaturan ini adalah default, jadi Anda tidak diharuskan untuk mengaturnya secara eksplisit, tetapi kami merekomendasikannya. Pengaturan eksplisit akan membantu debugging dan potensi rollback yang mungkin diperlukan jika aplikasi Anda menemukan ciphertext yang dienkripsi tanpa komitmen utama.