Konfigurasikan tabel DynamoDB yang ada untuk menggunakan Enkripsi Database untuk AWS DynamoDB SDK - AWS Enkripsi Database SDK

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. Tentukan SIGN_ONLY untuk menandatangani, tetapi tidak mengenkripsi, atribut. Tentukan SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT untuk menandatangani dan atribut dan sertakan dalam konteks enkripsi. Anda tidak dapat mengenkripsi atribut tanpa menandatanganinya juga. Tentukan DO_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. CreateAwsKmsMrkMultiKeyringMetode 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);