

Versi 4 (V4) AWS SDK untuk .NET telah dirilis\!

Untuk informasi tentang mengubah perubahan dan memigrasikan aplikasi Anda, lihat topik [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html) migrasi.

 [![Orange button with text "Click here for details".](https://docs.aws.amazon.com/id_id/sdk-for-net/v4/developer-guide/images/BannerButton_less-round.png)](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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

# Migrasi Klien Enkripsi S3 (V1 ke V2)
<a name="s3-encryption-migration-v1-v2"></a>

**catatan**  
Jika Anda menggunakan V2 dan ingin bermigrasi ke V4, lihat[Migrasi Klien Enkripsi S3 (V2 ke V4)](s3-encryption-migration-v2-v4.md).

Topik ini menunjukkan cara memigrasi aplikasi Anda dari versi 1 (V1) klien enkripsi Amazon Simple Storage Service (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 * men * dekripsi V1- dan V2-encrypted objek, tetapi * mengenkripsi * objek hanya dalam V1-compatible format. Klien V2 dapat men * de * kripsi V1- dan V2-encrypted objek (bila diaktifkan untuk objek V1), tetapi * mengenkripsi * objek hanya dalam V2-compatible format.

## Ikhtisar Migrasi
<a name="s3-encryption-migration-v1-v2-overview"></a>

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.

1. **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.

1. **Migr V1-transitional asikan 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 V1-compatible format.

1. **Perbarui klien V2 untuk 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 sebagai gant `V2` inya. `V2AndLegacy` Ini mencegah dekripsi objek yang dalam V1-compatible format.

## Perbarui Klien yang Ada ke V1-transitional Klien untuk Membaca Format Baru
<a name="s3-encryption-migration-v1-v2-to-v1n"></a>

Klien enkripsi V2 menggunakan algoritma enkripsi yang tidak didukung oleh versi lama klien. 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 V2-encrypted objek. Klien ini adalah bagian dari [ Amazon.Extensions.S3.Encryption ](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) NuGet paket. Lakukan langkah-langkah berikut pada setiap aplikasi Anda untuk menggunakan V1-transitional klien.

1. Ambil ketergantungan baru pada [ Amazon.Extensions.S3.Encryption ](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) paket. Jika proyek Anda bergantung langsung pada ** AWSSDK.KeyManagementService ** paket ** AWSSDK.S3 ** or, Anda harus memperbarui dependensi tersebut atau menghapusnya sehingga versi yang diperbarui akan ditarik dengan paket baru ini.

1. Ubah `using` pernyataan yang sesuai dari `Amazon.S3.Encryption` menjadi`Amazon.Extensions.S3.Encryption`, sebagai berikut: 

   ```
   // using Amazon.S3.Encryption;
     using Amazon.Extensions.S3.Encryption;
   ```

1. Bangun kembali dan gunakan kembali aplikasi Anda.

 V1-transitional Klien sepenuhnya API-compatible dengan klien V1, jadi tidak ada perubahan kode lain yang diperlukan.

## Migr V1-transitional asikan Klien ke Klien V2 untuk Menulis Format Baru
<a name="s3-encryption-migration-v1-v2-v1n-to-v2"></a>

Klien V2 adalah bagian dari [ Amazon.Extensions.S3.Encryption ](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) NuGet paket. Ini memungkinkan aplikasi Anda untuk mendekripsi V1- dan V2-encrypted objek (jika dikonfigurasi untuk melakukannya), tetapi mengenkripsi objek hanya dalam V2-compatible format.

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:

1. Ubah `EncryptionMaterials` ke `EncryptionMaterialsV2`.

   1. Saat menggunakan KMS:

      1. Berikan ID kunci KMS.

      1. Deklarasikan metode enkripsi yang Anda gunakan; yaitu,`KmsType.KmsContext`.

      1. 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.

   1. Saat menggunakan metode pembungkus kunci yang disediakan pengguna (enkripsi simetris atau asimetris):

      1. Menye `AES` diakan sebuah atau `RSA` contoh yang berisi materi enkripsi.

      1. Deklarasikan algoritma enkripsi mana yang akan digunakan; yaitu, `SymmetricAlgorithmType.AesGcm` atau`AsymmetricAlgorithmType.RsaOaepSha1`.

1. Ubah `AmazonS3CryptoConfiguration` ke `AmazonS3CryptoConfigurationV2` dengan `SecurityProfile` properti disetel ke`SecurityProfile.V2AndLegacy`.

1. Ubah `AmazonS3EncryptionClient` ke `AmazonS3EncryptionClientV2`. Klien ini mengambil `EncryptionMaterialsV2` objek `AmazonS3CryptoConfigurationV2` dan objek yang baru dikonversi dari langkah-langkah sebelumnya.

### Contoh: KMS ke KMS\+konteks
<a name="s3-encryption-migration-v1-v2-ex-kms"></a>

**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 untuk Pembungkus AES-GCM Kunci)
<a name="s3-encryption-migration-v1-v2-ex-aes"></a>

`StorageMode`bisa menjadi salah satu `ObjectMetadata` atau`InstructionFile`.

**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)
<a name="s3-encryption-migration-v1-v2-ex-rsa"></a>

`StorageMode`bisa menjadi salah satu `ObjectMetadata` atau`InstructionFile`.

**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 untuk Tidak Lagi Membaca Format V1
<a name="s3-encryption-migration-v1-v2-v2-cleanup"></a>

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 ke`SecurityProfile.V2`, seperti yang ditunjukkan dalam cuplikan berikut.

```
//var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);
```