. NETcontoh - AWS SDK Enkripsi Basis Data

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. NETcontoh dalam repositori aws-database-encryption-sdk -dynamodb aktif. GitHub

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

Menggunakan Enkripsi AWS Database tingkat rendah SDK untuk DynamoDB API

Contoh berikut menunjukkan cara menggunakan Enkripsi AWS Database tingkat rendah untuk API DynamoDB dengan keyring SDK untuk secara otomatis mengenkripsi dan menandatangani item sisi klien dengan AWS KMS permintaan DynamoDB Anda. PutItem

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. 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);
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 sebagaiSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT. 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 };
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. DynamoDbItemEncryptorItu 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. 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);
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 sebagaiSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT. 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 };
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 menggunakan config 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 DynamoDbItemEncryptorItu 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;