AWS SDK for .NET V3 telah mencapai akhir dukungan.
Kami menyarankan Anda bermigrasi ke AWS SDK for .NET V4. Untuk detail dan informasi tambahan tentang cara bermigrasi, silakan lihat pengumuman akhir
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Migrasi Klien Enkripsi Amazon S3 (V1 ke V2)
catatan
Jika Anda menggunakan V2 dan ingin bermigrasi ke V4, lihat. Migrasi Klien Enkripsi Amazon S3 (V2 ke V4)
Topik ini menunjukkan cara memigrasikan aplikasi Anda dari klien enkripsi Amazon Simple Storage Service (Amazon S3) ke Versi 1 (V1) Amazon Simple Storage Service (Amazon S3) ke Versi 2 (V2), dan memastikan ketersediaan aplikasi selama proses migrasi.
Objek yang dienkripsi dengan klien V2 tidak dapat didekripsi dengan klien V1. Untuk memudahkan migrasi ke klien baru tanpa harus mengenkripsi ulang semua objek sekaligus, klien "V1-transitional" telah disediakan. Klien ini dapat mendekripsi V1- dan V2-encrypted objek, tetapi mengenkripsi objek hanya dalam format. V1-compatible Klien V2 dapat mendekripsi V1- dan V2-encrypted objek (bila diaktifkan untuk objek V1), tetapi mengenkripsi objek hanya dalam format. V2-compatible
Ikhtisar Migrasi
Migrasi ini terjadi dalam tiga fase. Fase-fase ini diperkenalkan di sini dan dijelaskan secara rinci nanti. Setiap fase harus diselesaikan untuk semua klien yang menggunakan objek bersama sebelum fase berikutnya dimulai.
-
Perbarui klien yang ada ke V1-transitional klien untuk membaca format baru. Pertama, perbarui aplikasi Anda untuk mengambil ketergantungan pada V1-transitional klien alih-alih klien V1. V1-transitional Klien memungkinkan kode Anda yang ada untuk mendekripsi objek yang ditulis oleh klien V2 baru dan objek yang ditulis dalam V1-compatible format.
catatan
V1-transitional Klien disediakan untuk tujuan migrasi saja. Lanjutkan untuk meningkatkan ke klien V2 setelah pindah ke V1-transitional klien.
-
Migrasikan V1-transitional klien ke klien V2 untuk menulis format baru. Selanjutnya, ganti semua V1-transitional klien dalam aplikasi Anda dengan klien V2, dan atur profil keamanan ke
V2AndLegacy. Menyetel profil keamanan ini pada klien V2 memungkinkan klien tersebut untuk mendekripsi objek yang dienkripsi dalam format. V1-compatible -
Perbarui klien V2 agar tidak lagi membaca format V1. Akhirnya, setelah semua klien telah dimigrasikan ke V2 dan semua objek telah dienkripsi atau dienkripsi ulang dalam V2-compatible format, atur profil keamanan V2 menjadi alih-alih.
V2V2AndLegacyIni mencegah dekripsi objek yang dalam V1-compatible format.
Perbarui Klien yang Ada ke V1-transitional Klien untuk Membaca Format Baru
Klien enkripsi V2 menggunakan algoritma enkripsi yang tidak didukung oleh versi klien yang lebih lama. Langkah pertama dalam migrasi adalah memperbarui klien dekripsi V1 Anda sehingga mereka dapat membaca format baru.
V1-transitional Klien memungkinkan aplikasi Anda untuk mendekripsi V1- dan objek. V2-encrypted Klien ini adalah bagian dari Amazon.Extensions.S3.Encryption
-
Ambil ketergantungan baru pada Amazon.Extensions.S3.Encryption
paket. Jika proyek Anda bergantung langsung pada AWSSDK.KeyManagementServicepaket AWSSDK.S3atau, Anda harus memperbarui dependensi tersebut atau menghapusnya sehingga versi yang diperbarui akan ditarik dengan paket baru ini. -
Ubah
usingpernyataan yang sesuai dariAmazon.S3.EncryptionmenjadiAmazon.Extensions.S3.Encryption, sebagai berikut:// using Amazon.S3.Encryption; using Amazon.Extensions.S3.Encryption; -
Membangun kembali dan menerapkan kembali aplikasi Anda.
V1-transitional Klien sepenuhnya API-compatible dengan klien V1, jadi tidak ada perubahan kode lain yang diperlukan.
Migrasi V1-transitional Klien ke Klien V2 untuk Menulis Format Baru
Klien V2 adalah bagian dari Amazon.Extensions.S3.Encryption
Setelah memperbarui klien Anda yang ada untuk membaca format enkripsi baru, Anda dapat melanjutkan untuk memperbarui aplikasi Anda dengan aman ke klien enkripsi dan dekripsi V2. Lakukan langkah-langkah berikut pada setiap aplikasi Anda untuk menggunakan klien V2:
-
Ubah
EncryptionMaterialskeEncryptionMaterialsV2.-
Saat menggunakan KMS:
-
Berikan ID kunci KMS.
-
Deklarasikan metode enkripsi yang Anda gunakan; yaitu,.
KmsType.KmsContext -
Berikan konteks enkripsi ke KMS untuk dikaitkan dengan kunci data ini. Anda dapat mengirim kamus kosong (konteks enkripsi Amazon masih akan digabungkan), tetapi memberikan konteks tambahan dianjurkan.
-
-
Saat menggunakan metode pembungkus kunci yang disediakan pengguna (enkripsi simetris atau asimetris):
-
Berikan
AESatauRSAcontoh yang berisi materi enkripsi. -
Deklarasikan algoritma enkripsi mana yang akan digunakan; yaitu,
SymmetricAlgorithmType.AesGcmatau.AsymmetricAlgorithmType.RsaOaepSha1
-
-
-
Ubah
AmazonS3CryptoConfigurationkeAmazonS3CryptoConfigurationV2denganSecurityProfileproperti disetel keSecurityProfile.V2AndLegacy. -
Ubah
AmazonS3EncryptionClientkeAmazonS3EncryptionClientV2. Klien ini mengambil yang baru dikonversiAmazonS3CryptoConfigurationV2danEncryptionMaterialsV2objek dari langkah sebelumnya.
Contoh: Konteks KMS ke KMS +
Pre-migration
using System.Security.Cryptography; using Amazon.S3.Encryption; var encryptionMaterial = new EncryptionMaterials("1234abcd-12ab-34cd-56ef-1234567890ab"); var configuration = new AmazonS3CryptoConfiguration() { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
Post-migration
using System.Security.Cryptography; using Amazon.Extensions.S3.Encryption; using Amazon.Extensions.S3.Encryption.Primitives; var encryptionContext = new Dictionary<string, string>(); var encryptionMaterial = new EncryptionMaterialsV2("1234abcd-12ab-34cd-56ef-1234567890ab", KmsType.KmsContext, encryptionContext); var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy) { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
Contoh: Algoritma Simetris (AES-CBC ke AES-GCM Key Wrap)
StorageModebisa salah satu ObjectMetadata atauInstructionFile.
Pre-migration
using System.Security.Cryptography; using Amazon.S3.Encryption; var symmetricAlgorithm = Aes.Create(); var encryptionMaterial = new EncryptionMaterials(symmetricAlgorithm); var configuration = new AmazonS3CryptoConfiguration() { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
Post-migration
using System.Security.Cryptography; using Amazon.Extensions.S3.Encryption; using Amazon.Extensions.S3.Encryption.Primitives; var symmetricAlgorithm = Aes.Create(); var encryptionMaterial = new EncryptionMaterialsV2(symmetricAlgorithm, SymmetricAlgorithmType.AesGcm); var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy) { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
catatan
Saat mendekripsi dengan AES-GCM, baca seluruh objek sampai akhir sebelum Anda mulai menggunakan data yang didekripsi. Ini untuk memverifikasi bahwa objek belum dimodifikasi sejak dienkripsi.
Contoh: Algoritma Asimetris (RSA ke RSA-OAEP-SHA1 Key Wrap)
StorageModebisa salah satu ObjectMetadata atauInstructionFile.
Pre-migration
using System.Security.Cryptography; using Amazon.S3.Encryption; var asymmetricAlgorithm = RSA.Create(); var encryptionMaterial = new EncryptionMaterials(asymmetricAlgorithm); var configuration = new AmazonS3CryptoConfiguration() { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
Post-migration
using System.Security.Cryptography; using Amazon.Extensions.S3.Encryption; using Amazon.Extensions.S3.Encryption.Primitives; var asymmetricAlgorithm = RSA.Create(); var encryptionMaterial = new EncryptionMaterialsV2(asymmetricAlgorithm, AsymmetricAlgorithmType.RsaOaepSha1); var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy) { StorageMode = CryptoStorageMode.ObjectMetadata }; var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
Perbarui Klien V2 agar Tidak Lagi Membaca Format V1
Akhirnya, semua objek akan dienkripsi atau dienkripsi ulang menggunakan klien V2. Setelah konversi ini selesai, Anda dapat menonaktifkan kompatibilitas V1 di klien V2 dengan menyetel SecurityProfile properti keSecurityProfile.V2, seperti yang ditunjukkan pada cuplikan berikut.
//var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy); var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);