Cara memigrasi dan menyebarkanAWS Encryption SDK - AWS Encryption SDK

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Cara memigrasi dan menyebarkanAWS Encryption SDK

Saat bermigrasi dariAWS Encryption SDKversi lebih awal dari 1.7.xke versi 2.0.xatau nanti, Anda harus bertransisi dengan aman untuk mengenkripsiKomitmen utama. Jika tidak, aplikasi Anda akan menemukan ciphertexts yang tidak dapat mendekripsi. Jika Anda menggunakanAWS KMSmaster key provider, 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 sebelumnyaAWS Encryption SDKke versi 2.0.xatau nantinya. Jika Anda baru mengenalAWS 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, kami sarankan Anda bermigrasi dan menyebarkan dalam beberapa tahap yang berbeda. Verifikasi bahwa setiap tahap selesai dan sepenuhnya dikerahkan sebelum memulai tahap berikutnya. Ini sangat penting untuk aplikasi terdistribusi dengan beberapa host.

Tahap 1: Perbarui aplikasi Anda ke 1 terbaru.xversi

Perbarui ke 1 terbaru.xversi untuk bahasa pemrograman Anda. Uji dengan cermat, gunakan perubahan Anda, dan konfirmasi bahwa pembaruan telah disebarkan ke semua host tujuan sebelum memulai tahap 2.

penting

Verifikasi bahwa 1 terbaru Anda.xversi 1.7.xatau yang lebih baruAWS Encryption SDK.

Terbaru 1.xversi dariAWS Encryption SDKkompatibel dengan versi lamaAWS Encryption SDKdan maju kompatibel dengan versi 2.0.xdan nantinya. Mereka termasuk fitur baru yang hadir dalam versi 2.0.x, tetapi sertakan default aman yang dirancang untuk migrasi ini. Mereka memungkinkan Anda untuk meng-upgrade AndaAWS KMSmaster key provider, jika perlu, dan untuk sepenuhnya menyebarkan dengan suite algoritma yang dapat mendekripsi ciphertext dengan komitmen kunci.

  • Ganti elemen usang, termasuk konstruktor untuk warisanAWS KMSpenyedia utama kunci. MasukPython, pastikan untuk mengaktifkan peringatan pengusangan. Elemen kode yang tidak digunakan lagi dalam 1 terbaru.xversi dihapus dari versi 2.0.xdan nantinya.

  • Tetapkan kebijakan komitmen Anda secara eksplisitForbidEncryptAllowDecrypt. Meskipun ini adalah satu-satunya nilai yang valid dalam 1 terbaru.xversi, pengaturan ini diperlukan saat Anda menggunakan API yang diperkenalkan dalam rilis ini. Ini mencegah aplikasi Anda menolak ciphertext yang dienkripsi tanpa komitmen kunci saat Anda bermigrasi ke versi 2.0.xdan nantinya. Untuk detailnya, lihat Menetapkan kebijakan komitmen Anda.

  • Jika Anda menggunakanAWS KMSpenyedia kunci utama, Anda harus memperbarui penyedia kunci master lama Anda untuk menguasai penyedia kunci yang mendukungmodus ketatdanmode penemuan. Pemutakhiran ini diperlukan untukAWS Encryption SDK for Java,AWS Encryption SDK for Python, danAWSEnkripsi CLI. Jika Anda menggunakan penyedia kunci utama dalam mode penemuan, kami sarankan Anda menerapkan filter penemuan yang membatasi kunci pembungkus yang digunakan untuk yang pada khususnyaAkun AWS. Pembaruan ini opsional, tetapi ini adalahpraktik terbaikyang kami rekomendasikan. Untuk detailnya, lihat Memperbarui penyedia kunci AWS KMS utama.

  • Jika Anda menggunakanAWS KMSkeyrings penemuan, kami sarankan Anda menyertakan filter penemuan yang membatasi kunci pembungkus yang digunakan dalam dekripsi ke yang khususnyaAkun AWS. Pemutakhiran ini opsional, tapi itupraktik terbaikyang kami rekomendasikan. Untuk detailnya, lihat MemperbaruiAWS KMSgantungan kunci.

Tahap 2: Memperbarui aplikasi Anda ke versi terbaru

Setelah menyebarkan 1 terbaru.xversi berhasil untuk semua host, Anda dapat meng-upgrade ke versi 2.0.xdan nantinya. Versi 2.0.xtermasuk melanggar perubahan untuk semua versi sebelumnyaAWS Encryption SDK. Namun, jika Anda membuat perubahan kode yang direkomendasikan di Tahap 1, Anda dapat menghindari kesalahan saat Anda bermigrasi ke versi terbaru.

Sebelum memperbarui ke versi terbaru, verifikasi bahwa kebijakan komitmen Anda diatur secara konsistenForbidEncryptAllowDecrypt. Kemudian, tergantung pada konfigurasi data Anda, Anda dapat bermigrasi dengan kecepatan Anda sendiriRequireEncryptAllowDecryptdan kemudian ke pengaturan default,RequireEncryptRequireDecrypt. Kami merekomendasikan serangkaian langkah transisi seperti pola berikut.

  1. Mulailah denganKebijakan Komitmenset keForbidEncryptAllowDecrypt. KlasterAWS Encryption SDKdapat mendekripsi pesan dengan komitmen kunci, tetapi belum mengenkripsi dengan komitmen utama.

  2. Saat Anda siap, perbarui kebijakan komitmen AndaRequireEncryptAllowDecrypt. KlasterAWS Encryption SDKmulai mengenkripsi data Anda denganKomitmen utama. Hal ini dapat mendekripsi ciphertext dengan dan tanpa komitmen kunci.

    Sebelum memperbarui kebijakan komitmen Anda keRequireEncryptAllowDecrypt, verifikasi bahwa 1 terbaru Anda.xversi dikerahkan ke semua host, termasuk host dari setiap aplikasi yang mendekripsi ciphertext yang Anda hasilkan. Versi dariAWS Encryption SDKsebelum versi 1.7.xtidak dapat mendekripsi pesan yang dienkripsi dengan komitmen kunci.

    Ini juga saat yang tepat untuk menambahkan metrik ke aplikasi Anda untuk mengukur apakah Anda masih memproses ciphertext tanpa komitmen kunci. Ini akan membantu Anda menentukan kapan aman untuk memperbarui pengaturan kebijakan komitmen AndaRequireEncryptRequireDecrypt. 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 kembali semua objek.

  3. Ketika Anda yakin bahwa Anda tidak memiliki pesan apa pun yang dienkripsi tanpa komitmen utama, Anda dapat memperbarui kebijakan komitmenRequireEncryptRequireDecrypt. 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 akandebugging bantuandan setiap potensi rollback yang mungkin diperlukan jika aplikasi Anda menemukan ciphertext dienkripsi tanpa komitmen kunci.