Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konfigurasikan tabel DynamoDB yang ada untuk menggunakan Enkripsi Database untuk AWS DynamoDB SDK
Dengan versi 3. x dari. NETpustaka enkripsi sisi klien untuk DynamoDB, Anda dapat mengonfigurasi tabel Amazon DynamoDB yang ada untuk enkripsi sisi klien. Topik ini memberikan panduan tentang tiga langkah yang harus Anda ambil untuk menambahkan versi 3. x ke tabel DynamoDB yang sudah ada dan terisi.
Langkah 1: Bersiaplah untuk membaca dan menulis item terenkripsi
Selesaikan langkah-langkah berikut untuk mempersiapkan SDK klien Enkripsi AWS Database Anda untuk membaca dan menulis item terenkripsi. Setelah Anda menerapkan perubahan berikut, klien Anda akan terus membaca dan menulis item teks biasa. Ini tidak akan mengenkripsi atau menandatangani item baru yang ditulis ke tabel, tetapi akan dapat mendekripsi item terenkripsi segera setelah muncul. Perubahan ini mempersiapkan klien untuk mulai mengenkripsi item baru. Perubahan berikut harus diterapkan ke setiap pembaca sebelum Anda melanjutkan ke langkah berikutnya.
- 1. Tentukan tindakan atribut Anda
-
Buat model objek untuk menentukan nilai atribut mana yang akan dienkripsi dan ditandatangani, yang hanya akan ditandatangani, dan mana yang akan diabaikan.
Secara default, atribut kunci primer ditandatangani tetapi tidak dienkripsi (
SIGN_ONLY
) dan semua atribut lainnya dienkripsi dan ditandatangani ().ENCRYPT_AND_SIGN
Tentukan
ENCRYPT_AND_SIGN
untuk mengenkripsi dan menandatangani atribut. TentukanSIGN_ONLY
untuk menandatangani, tetapi tidak mengenkripsi, atribut. TentukanSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
untuk menandatangani dan atribut dan sertakan dalam konteks enkripsi. Anda tidak dapat mengenkripsi atribut tanpa menandatanganinya juga. TentukanDO_NOTHING
untuk mengabaikan atribut. Untuk informasi selengkapnya, lihat Tindakan atribut dalam Enkripsi AWS Database SDK untuk DynamoDB.catatan
Jika Anda menentukan
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
atribut apa pun, maka atribut partisi dan sortir juga harusSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.var attributeActionsOnEncrypt = new Dictionary<string, CryptoAction> { ["partition_key"] = CryptoAction.SIGN_ONLY, // The partition attribute must be SIGN_ONLY ["sort_key"] = CryptoAction.SIGN_ONLY, // The sort attribute must be SIGN_ONLY ["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN, ["attribute2"] = CryptoAction.SIGN_ONLY, [":attribute3"] = CryptoAction.DO_NOTHING };
- 2. Tentukan atribut mana yang akan dikecualikan dari tanda tangan
-
Contoh berikut mengasumsikan bahwa semua
DO_NOTHING
atribut berbagi awalan yang berbeda ":
“, dan menggunakan awalan untuk menentukan atribut unsigned yang diizinkan. Klien akan menganggap bahwa nama atribut apa pun dengan awalan:
"" dikecualikan dari tanda tangan. Untuk informasi selengkapnya, lihat Allowed unsigned attributes.const String unsignAttrPrefix = ":";
- 3. Buat keyring
-
Contoh berikut membuat AWS KMS keyring. AWS KMS Keyring menggunakan enkripsi simetris atau asimetris RSA AWS KMS keys untuk menghasilkan, mengenkripsi, dan mendekripsi kunci data.
Contoh ini digunakan
CreateMrkMultiKeyring
untuk membuat AWS KMS keyring dengan kunci enkripsi KMS simetris.CreateAwsKmsMrkMultiKeyring
Metode ini memastikan bahwa keyring akan menangani tombol Single-region dan Multi-region dengan benar.var matProv = new MaterialProviders(new MaterialProvidersConfig()); var keyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = kmsKeyId }; var kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
- 4. Tentukan konfigurasi enkripsi tabel DynamoDB
-
Contoh berikut mendefinisikan
tableConfigs
Peta yang mewakili konfigurasi enkripsi untuk tabel DynamoDB ini.Contoh ini menentukan nama tabel DynamoDB sebagai nama tabel logis. Kami sangat menyarankan untuk menentukan nama tabel DynamoDB Anda sebagai nama tabel logis saat Anda pertama kali menentukan konfigurasi enkripsi Anda.
Anda harus menentukan
FORCE_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT
sebagai plaintext override. Kebijakan ini terus membaca dan menulis item teks biasa, membaca item terenkripsi, dan mempersiapkan klien untuk menulis item terenkripsi.Untuk informasi selengkapnya tentang nilai yang disertakan dalam konfigurasi enkripsi tabel, lihatKonfigurasi enkripsi dalam Enkripsi AWS Database SDK untuk DynamoDB.
Dictionary<String, DynamoDbTableEncryptionConfig> tableConfigs = new Dictionary<String, DynamoDbTableEncryptionConfig>(); DynamoDbTableEncryptionConfig config = new DynamoDbTableEncryptionConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix, PlaintextOverride = FORCE_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT }; tableConfigs.Add(ddbTableName, config);
- 5. Buat klien AWS SDK DynamoDB baru
-
contoh berikut menciptakan klien AWS SDK DynamoDB baru menggunakan
TableEncryptionConfigs
dari Langkah 4.var ddb = new Client.DynamoDbClient( new DynamoDbTablesEncryptionConfig { TableEncryptionConfigs = tableConfigs });
Langkah 2: Tulis item terenkripsi dan ditandatangani
Perbarui kebijakan plaintext dalam konfigurasi enkripsi tabel Anda untuk memungkinkan klien menulis item terenkripsi dan ditandatangani. Setelah Anda menerapkan perubahan berikut, klien akan mengenkripsi dan menandatangani item baru berdasarkan tindakan atribut yang Anda konfigurasikan di Langkah 1. Klien akan dapat membaca item teks biasa dan item terenkripsi dan ditandatangani.
Sebelum Anda melanjutkan ke Langkah 3, Anda harus mengenkripsi dan menandatangani semua item plaintext yang ada di tabel Anda. Tidak ada metrik atau kueri tunggal yang dapat Anda jalankan untuk mengenkripsi item plaintext yang ada dengan cepat. Gunakan proses yang paling masuk akal untuk sistem Anda. Misalnya, Anda dapat menggunakan proses asinkron yang memindai tabel secara perlahan dan menulis ulang item menggunakan tindakan atribut dan konfigurasi enkripsi yang Anda tentukan. Untuk mengidentifikasi item plaintext dalam tabel Anda, kami sarankan memindai semua item yang tidak berisi aws_dbe_head
dan aws_dbe_foot
atribut yang SDK ditambahkan Enkripsi AWS Database ke item saat dienkripsi dan ditandatangani.
Contoh berikut memperbarui konfigurasi enkripsi tabel dari Langkah 1. Anda harus memperbarui penggantian plaintext dengan. FORBID_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT
Kebijakan ini terus membaca item teks biasa, tetapi juga membaca dan menulis item terenkripsi. Buat klien AWS SDK DynamoDB baru menggunakan yang diperbarui. TableEncryptionConfigs
Dictionary<String, DynamoDbTableEncryptionConfig> tableConfigs = new Dictionary<String, DynamoDbTableEncryptionConfig>(); DynamoDbTableEncryptionConfig config = new DynamoDbTableEncryptionConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix, PlaintextOverride = FORBID_WRITE_PLAINTEXT_ALLOW_READ_PLAINTEXT }; tableConfigs.Add(ddbTableName, config);
Langkah 3: Hanya baca item terenkripsi dan ditandatangani
Setelah Anda mengenkripsi dan menandatangani semua item Anda, perbarui penggantian plaintext dalam konfigurasi enkripsi tabel Anda untuk hanya mengizinkan klien membaca dan menulis item terenkripsi dan ditandatangani. Setelah Anda menerapkan perubahan berikut, klien akan mengenkripsi dan menandatangani item baru berdasarkan tindakan atribut yang Anda konfigurasikan di Langkah 1. Klien hanya akan dapat membaca item terenkripsi dan ditandatangani.
Contoh berikut memperbarui konfigurasi enkripsi tabel dari Langkah 2. Anda dapat memperbarui penggantian plaintext dengan FORBID_WRITE_PLAINTEXT_FORBID_READ_PLAINTEXT
atau menghapus kebijakan plaintext dari konfigurasi Anda. Klien hanya membaca dan menulis item terenkripsi dan ditandatangani secara default. Buat klien AWS SDK DynamoDB baru menggunakan yang diperbarui. TableEncryptionConfigs
Dictionary<String, DynamoDbTableEncryptionConfig> tableConfigs = new Dictionary<String, DynamoDbTableEncryptionConfig>(); DynamoDbTableEncryptionConfig config = new DynamoDbTableEncryptionConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix, // Optional: you can also remove the plaintext policy from your configuration PlaintextOverride = FORBID_WRITE_PLAINTEXT_FORBID_READ_PLAINTEXT }; tableConfigs.Add(ddbTableName, config);