Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
. NETcontoh
Contoh berikut menunjukkan cara menggunakan. NETpustaka enkripsi sisi klien untuk DynamoDB untuk melindungi item tabel dalam aplikasi Anda. Untuk menemukan lebih banyak contoh (dan berkontribusi sendiri), lihat. NET
Contoh berikut menunjukkan cara mengkonfigurasi file. NETpustaka enkripsi sisi klien untuk DynamoDB dalam tabel Amazon DynamoDB baru yang tidak terisi. Jika Anda ingin mengonfigurasi tabel Amazon DynamoDB yang ada untuk enkripsi sisi klien, lihat. Tambahkan versi 3.x ke tabel yang ada
Topik
Menggunakan Enkripsi AWS Database tingkat rendah SDK untuk DynamoDB API
Anda dapat menggunakan keyring apa pun yang didukung, tetapi kami sarankan menggunakan salah satu AWS KMS gantungan kunci jika memungkinkan.
Lihat contoh kode lengkapnya: BasicPutGetExample.cs
- Langkah 1: Buat AWS KMS keyring
-
Contoh berikut digunakan
CreateAwsKmsMrkMultiKeyring
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);
- Langkah 2: Konfigurasikan tindakan atribut Anda
-
Contoh berikut mendefinisikan
attributeActionsOnEncrypt
Kamus yang mewakili tindakan atribut sampel untuk item tabel.catatan
Contoh berikut tidak mendefinisikan atribut apa pun sebagai
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Jika Anda menentukanSIGN_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 };
- Langkah 3: Tentukan atribut mana yang 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 mengasumsikan bahwa nama atribut apa pun dengan awalan ":
" dikecualikan dari tanda tangan. Untuk informasi selengkapnya, lihat Allowed unsigned attributes.const String unsignAttrPrefix = ":";
- Langkah 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. Untuk informasi selengkapnya, lihat Konfigurasi enkripsi dalam Enkripsi AWS Database SDK untuk DynamoDB.
catatan
Untuk menggunakan enkripsi yang dapat dicari atau suar yang ditandatangani, Anda juga harus menyertakan SearchConfigdalam konfigurasi enkripsi Anda.
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 }; tableConfigs.Add(ddbTableName, config);
- Langkah 5: Buat klien AWS SDK DynamoDB baru
-
Contoh berikut membuat klien AWS SDK DynamoDB baru menggunakan
TableEncryptionConfigs
dari Langkah 4.var ddb = new Client.DynamoDbClient( new DynamoDbTablesEncryptionConfig { TableEncryptionConfigs = tableConfigs });
- Langkah 6: Enkripsi dan tandatangani item tabel DynamoDB
-
Contoh berikut mendefinisikan
item
Kamus yang mewakili item tabel sampel dan menempatkan item dalam tabel DynamoDB. Item dienkripsi dan ditandatangani sisi klien sebelum dikirim ke DynamoDB.var item = new Dictionary<String, AttributeValue> { ["partition_key"] = new AttributeValue("BasicPutGetExample"), ["sort_key"] = new AttributeValue { N = "0" }, ["attribute1"] = new AttributeValue("encrypt and sign me!"), ["attribute2"] = new AttributeValue("sign me!"), [":attribute3"] = new AttributeValue("ignore me!") }; PutItemRequest putRequest = new PutItemRequest { TableName = ddbTableName, Item = item }; PutItemResponse putResponse = await ddb.PutItemAsync(putRequest);
Menggunakan level yang lebih rendah DynamoDbItemEncryptor
Contoh berikut menunjukkan cara menggunakan level yang lebih rendah DynamoDbItemEncryptor
dengan AWS KMS keyring untuk langsung mengenkripsi dan menandatangani item tabel. DynamoDbItemEncryptor
Itu tidak menempatkan item di tabel DynamoDB Anda.
Anda dapat menggunakan keyring apa pun yang didukung dengan DynamoDB Enhanced Client, tetapi sebaiknya gunakan salah AWS KMS satu gantungan kunci bila memungkinkan.
catatan
Tingkat yang lebih rendah DynamoDbItemEncryptor
tidak mendukung enkripsi yang dapat dicari. Gunakan Enkripsi AWS Database tingkat rendah untuk API DynamoDB SDK untuk menggunakan enkripsi yang dapat dicari.
Lihat contoh kode lengkapnya: ItemEncryptDecryptExample.cs
- Langkah 1: Buat AWS KMS keyring
-
Contoh berikut digunakan
CreateAwsKmsMrkMultiKeyring
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);
- Langkah 2: Konfigurasikan tindakan atribut Anda
-
Contoh berikut mendefinisikan
attributeActionsOnEncrypt
Kamus yang mewakili tindakan atribut sampel untuk item tabel.catatan
Contoh berikut tidak mendefinisikan atribut apa pun sebagai
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Jika Anda menentukanSIGN_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 };
- Langkah 3: Tentukan atribut mana yang 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 mengasumsikan bahwa nama atribut apa pun dengan awalan ":
" dikecualikan dari tanda tangan. Untuk informasi selengkapnya, lihat Allowed unsigned attributes.String unsignAttrPrefix = ":";
- Langkah 4: Tentukan
DynamoDbItemEncryptor
konfigurasi -
Contoh berikut mendefinisikan konfigurasi untuk.
DynamoDbItemEncryptor
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. Untuk informasi selengkapnya, lihat Konfigurasi enkripsi dalam Enkripsi AWS Database SDK untuk DynamoDB.
var config = new DynamoDbItemEncryptorConfig { LogicalTableName = ddbTableName, PartitionKeyName = "partition_key", SortKeyName = "sort_key", AttributeActionsOnEncrypt = attributeActionsOnEncrypt, Keyring = kmsKeyring, AllowedUnsignedAttributePrefix = unsignAttrPrefix };
- Langkah 5: Buat
DynamoDbItemEncryptor
-
Contoh berikut membuat baru
DynamoDbItemEncryptor
menggunakanconfig
dari Langkah 4.var itemEncryptor = new DynamoDbItemEncryptor(config);
- Langkah 6: Langsung mengenkripsi dan menandatangani item tabel
-
Contoh berikut langsung mengenkripsi dan menandatangani item menggunakan.
DynamoDbItemEncryptor
DynamoDbItemEncryptor
Itu tidak menempatkan item di tabel DynamoDB Anda.var originalItem = new Dictionary<String, AttributeValue> { ["partition_key"] = new AttributeValue("ItemEncryptDecryptExample"), ["sort_key"] = new AttributeValue { N = "0" }, ["attribute1"] = new AttributeValue("encrypt and sign me!"), ["attribute2"] = new AttributeValue("sign me!"), [":attribute3"] = new AttributeValue("ignore me!") }; var encryptedItem = itemEncryptor.EncryptItem( new EncryptItemInput { PlaintextItem = originalItem } ).EncryptedItem;