Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan. NETpustaka enkripsi sisi klien untuk DynamoDB
Topik ini menjelaskan beberapa fungsi dan kelas pembantu di versi 3. x dari. NETpustaka enkripsi sisi klien untuk DynamoDB.
Untuk detail tentang pemrograman dengan. NETpustaka enkripsi sisi klien untuk DynamoDB, lihat. NET
Enkriptor item
Pada intinya, Enkripsi AWS Database SDK untuk DynamoDB adalah enkripsi item. Anda dapat menggunakan versi 3. x dari. NETpustaka enkripsi sisi klien untuk DynamoDB untuk mengenkripsi, menandatangani, memverifikasi, dan mendekripsi item tabel DynamoDB Anda dengan cara berikut.
- Enkripsi AWS Database tingkat rendah SDK untuk DynamoDB API
-
Anda dapat menggunakan konfigurasi enkripsi tabel untuk membuat klien DynamoDB yang secara otomatis mengenkripsi dan menandatangani item sisi klien dengan permintaan DynamoDB Anda.
PutItem
Anda dapat menggunakan klien ini secara langsung, atau Anda dapat membuat model dokumen atau model persistensi objek. - Tingkat yang lebih rendah
DynamoDbItemEncryptor
-
Tingkat yang lebih rendah
DynamoDbItemEncryptor
secara langsung mengenkripsi dan menandatangani atau mendekripsi dan memverifikasi item tabel Anda tanpa memanggil DynamoDB. Itu tidak membuat DynamoDB atauPutItem
permintaanGetItem
. Misalnya, Anda dapat menggunakan level yang lebih rendahDynamoDbItemEncryptor
untuk langsung mendekripsi dan memverifikasi item DynamoDB yang telah Anda ambil. Jika Anda menggunakan tingkat yang lebih rendahDynamoDbItemEncryptor
, sebaiknya gunakan model pemrograman tingkat rendah yang AWS SDK for .NET disediakan untuk berkomunikasi dengan DynamoDB.Tingkat yang lebih rendah
DynamoDbItemEncryptor
tidak mendukung enkripsi yang dapat dicari.
Tindakan atribut dalam Enkripsi AWS Database SDK untuk DynamoDB
Tindakan atribut menentukan nilai atribut mana yang dienkripsi dan ditandatangani, yang hanya ditandatangani, yang ditandatangani dan disertakan dalam konteks enkripsi, dan mana yang diabaikan.
Untuk menentukan tindakan atribut dengan. NETklien, secara manual mendefinisikan tindakan atribut menggunakan model objek. Tentukan tindakan atribut Anda dengan membuat Dictionary
objek di mana pasangan nama-nilai mewakili nama atribut dan tindakan yang ditentukan.
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 atribut dan sertakan dalam konteks enkripsi. Anda tidak dapat mengenkripsi atribut tanpa menandatanganinya juga. Tentukan DO_NOTHING
untuk mengabaikan atribut.
Partisi dan atribut sortir harus salah satu SIGN_ONLY
atauSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. Jika Anda mendefinisikan atribut apa pun sebagaiSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
, maka atribut partisi dan sortir juga harusSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.
catatan
Setelah menentukan tindakan atribut, Anda harus menentukan atribut mana yang dikecualikan dari tanda tangan. Untuk mempermudah menambahkan atribut baru yang tidak ditandatangani di masa mendatang, sebaiknya pilih awalan yang berbeda (seperti ":
“) untuk mengidentifikasi atribut unsigned Anda. Sertakan awalan ini dalam nama atribut untuk semua atribut yang ditandai DO_NOTHING
saat Anda menentukan skema DynamoDB dan tindakan atribut.
Model objek berikut menunjukkan cara menentukanENCRYPT_AND_SIGN
,, SIGN_ONLY
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
, dan DO_NOTHING
atribut tindakan dengan. NETklien. Contoh ini menggunakan awalan ":
" untuk mengidentifikasi DO_NOTHING
atribut.
catatan
Untuk menggunakan tindakan SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
kriptografi, Anda harus menggunakan Enkripsi AWS SDK Database versi 3.3 atau yang lebih baru. Terapkan versi baru ke semua pembaca sebelum memperbarui model data Anda untuk disertakanSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
.
var attributeActionsOnEncrypt = new Dictionary<string, CryptoAction> { ["partition_key"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, // The partition attribute must be signed ["sort_key"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, // The sort attribute must be signed ["attribute1"] = CryptoAction.ENCRYPT_AND_SIGN, ["attribute2"] = CryptoAction.SIGN_ONLY, ["attribute3"] = CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT, [":attribute4"] = CryptoAction.DO_NOTHING };
Konfigurasi enkripsi dalam Enkripsi AWS Database SDK untuk DynamoDB
Bila Anda menggunakan Enkripsi AWS DatabaseSDK, Anda harus secara eksplisit mendefinisikan konfigurasi enkripsi untuk tabel DynamoDB Anda. Nilai yang diperlukan dalam konfigurasi enkripsi Anda bergantung pada apakah Anda mendefinisikan tindakan atribut secara manual atau dengan kelas data beranotasi.
Cuplikan berikut mendefinisikan konfigurasi enkripsi tabel DynamoDB menggunakan AWS Enkripsi Database tingkat rendah untuk SDK DynamoDB dan mengizinkan atribut unsigned yang ditentukan oleh awalan yang berbeda. API
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: SearchConfig only required if you use beacons Search = new SearchConfig { WriteVersion = 1, // MUST be 1 Versions = beaconVersions } }; tableConfigs.Add(ddbTableName, config);
- Nama tabel logis
-
Sebuah nama tabel logis untuk tabel DynamoDB Anda.
Nama tabel logis terikat secara kriptografis ke semua data yang disimpan dalam tabel untuk menyederhanakan operasi pemulihan DynamoDB. Kami sangat menyarankan untuk menentukan nama tabel DynamoDB Anda sebagai nama tabel logis saat Anda pertama kali menentukan konfigurasi enkripsi Anda. Anda harus selalu menentukan nama tabel logis yang sama. Agar dekripsi berhasil, nama tabel logis harus sesuai dengan nama yang ditentukan pada enkripsi. Jika nama tabel DynamoDB Anda berubah setelah memulihkan tabel DynamoDB Anda dari cadangan, nama tabel logis memastikan bahwa operasi dekripsi masih mengenali tabel.
- Atribut yang tidak ditandatangani yang diizinkan
-
Atribut yang ditandai
DO_NOTHING
dalam tindakan atribut Anda.Atribut unsigned yang diizinkan memberi tahu klien atribut mana yang dikecualikan dari tanda tangan. Klien mengasumsikan bahwa semua atribut lainnya termasuk dalam tanda tangan. Kemudian, saat mendekripsi catatan, klien menentukan atribut mana yang perlu diverifikasi dan mana yang harus diabaikan dari atribut unsigned yang diizinkan yang Anda tentukan. Anda tidak dapat menghapus atribut dari atribut yang tidak ditandatangani yang diizinkan.
Anda dapat menentukan atribut unsigned yang diizinkan secara eksplisit dengan membuat array yang mencantumkan semua atribut Anda.
DO_NOTHING
Anda juga dapat menentukan awalan yang berbeda saat menamaiDO_NOTHING
atribut Anda dan menggunakan awalan untuk memberi tahu klien atribut mana yang tidak ditandatangani. Kami sangat menyarankan untuk menentukan awalan yang berbeda karena menyederhanakan proses penambahanDO_NOTHING
atribut baru di masa depan. Untuk informasi selengkapnya, lihat Memperbarui model data Anda.Jika Anda tidak menentukan awalan untuk semua
DO_NOTHING
atribut, Anda dapat mengonfigurasiallowedUnsignedAttributes
array yang secara eksplisit mencantumkan semua atribut yang diharapkan klien tidak ditandatangani saat bertemu dengan mereka pada dekripsi. Anda hanya harus secara eksplisit mendefinisikan atribut unsigned yang diizinkan jika benar-benar diperlukan. - Konfigurasi Pencarian (Opsional)
-
SearchConfig
Mendefinisikan versi beacon.SearchConfig
Harus ditentukan untuk menggunakan enkripsi yang dapat dicari atau suar yang ditandatangani. - Suite Algoritma (Opsional)
-
algorithmSuiteId
Mendefinisikan algoritma mana yang sesuai dengan AWS Database Encryption SDK menggunakan.Kecuali Anda secara eksplisit menentukan rangkaian algoritme alternatif, Enkripsi AWS Database SDK menggunakan rangkaian algoritme default. Rangkaian algoritme default menggunakan GCM algoritma AES - dengan derivasi kunci, tanda tangan digital, dan komitmen kunci. Meskipun rangkaian algoritme default kemungkinan cocok untuk sebagian besar aplikasi, Anda dapat memilih rangkaian algoritme alternatif. Misalnya, beberapa model kepercayaan akan dipenuhi oleh rangkaian algoritma tanpa tanda tangan digital. Untuk informasi tentang rangkaian algoritme yang SDK didukung oleh Enkripsi AWS Database, lihatSuite algoritma yang didukung dalam Enkripsi AWS Database SDK.
Untuk memilih rangkaian AES - GCM algoritma tanpa tanda tangan ECDSA digital, sertakan cuplikan berikut dalam konfigurasi enkripsi tabel Anda.
AlgorithmSuiteId = DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384
Memperbarui item dengan Enkripsi AWS Database SDK
Enkripsi AWS Database SDK tidak mendukung ddb: UpdateItem untuk item yang menyertakan atribut terenkripsi atau ditandatangani. Untuk memperbarui atribut terenkripsi atau ditandatangani, Anda harus menggunakan ddb:. PutItem Saat Anda menentukan kunci utama yang sama dengan item yang ada dalam PutItem
permintaan Anda, item baru sepenuhnya menggantikan item yang ada. Anda juga dapat menggunakan CLOBBERuntuk menghapus dan mengganti semua atribut yang disimpan setelah memperbarui item Anda.