Enkripsi yang dapat dicari untuk database multitenant - AWS Enkripsi Database SDK

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Enkripsi yang dapat dicari untuk database multitenant

Pustaka enkripsi sisi klien kami diubah namanya menjadi Enkripsi AWS Database. SDK Panduan pengembang ini masih memberikan informasi tentang Klien Enkripsi DynamoDB.

Untuk mengimplementasikan enkripsi yang dapat dicari di database Anda, Anda harus menggunakan keyring AWS KMS Hierarkis. Keyring AWS KMS Hierarkis menghasilkan, mengenkripsi, dan mendekripsi kunci data yang digunakan untuk melindungi catatan Anda. Ini juga menciptakan kunci suar yang digunakan untuk menghasilkan suar. Saat menggunakan keyring AWS KMS Hierarkis dengan database multitenant, ada kunci cabang dan kunci suar yang berbeda untuk setiap penyewa. Untuk menanyakan data terenkripsi dalam database multitenant, Anda harus mengidentifikasi bahan kunci suar yang digunakan untuk menghasilkan suar yang Anda kueri. Untuk informasi selengkapnya, lihat Menggunakan keyring Hierarkis untuk enkripsi yang dapat dicari.

Saat Anda menentukan versi beacon untuk database multitenant, tentukan daftar semua beacon standar yang Anda konfigurasikan, daftar semua suar majemuk yang Anda konfigurasikan, versi suar, dan a. keySource Anda harus mendefinisikan sumber kunci suar Anda sebagaiMultiKeyStore, dan menyertakankeyFieldName, waktu cache untuk hidup untuk cache kunci suar lokal, dan ukuran cache maksimum untuk cache kunci suar lokal.

Jika Anda mengonfigurasi suar yang ditandatangani, mereka harus disertakan dalam suar Anda. compoundBeaconList Signed beacon adalah jenis suar majemuk yang mengindeks dan melakukan kueri kompleks pada dan bidang. SIGN_ONLY SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

Java
List<BeaconVersion> beaconVersions = new ArrayList<>(); beaconVersions.add( BeaconVersion.builder() .standardBeacons(standardBeaconList) .compoundBeacons(compoundBeaconList) .version(1) // MUST be 1 .keyStore(branchKeyStoreName) .keySource(BeaconKeySource.builder() .multi(MultiKeyStore.builder() .keyFieldName(keyField) .cacheTTL(6000) .maxCacheSize(10) .build()) .build()) .build() );
C# / .NET
var beaconVersions = new List<BeaconVersion> { new BeaconVersion { StandardBeacons = standardBeaconList, CompoundBeacons = compoundBeaconList, EncryptedParts = encryptedPartsList, SignedParts = signedPartsList, Version = 1, // MUST be 1 KeyStore = branchKeyStoreName, KeySource = new BeaconKeySource { Multi = new MultiKeyStore { KeyId = branch-key-id, CacheTTL = 6000, MaxCacheSize = 10 } } } };
keyFieldName

keyFieldNameMendefinisikan nama bidang yang menyimpan yang branch-key-id terkait dengan kunci suar yang digunakan untuk menghasilkan suar untuk penyewa tertentu.

Saat Anda menulis catatan baru ke database Anda, branch-key-id yang mengidentifikasi kunci suar yang digunakan untuk menghasilkan suar apa pun untuk catatan itu disimpan di bidang ini.

Secara default, keyField adalah bidang konseptual yang tidak secara eksplisit disimpan dalam database Anda. Enkripsi AWS Database SDK mengidentifikasi branch-key-id dari kunci data terenkripsi dalam deskripsi materi dan menyimpan nilai dalam konseptual keyField untuk Anda rujuk dalam suar majemuk dan suar bertanda tangan Anda. Karena deskripsi materi ditandatangani, konseptual keyField dianggap sebagai bagian yang ditandatangani.

Anda juga dapat memasukkan keyField dalam tindakan kriptografi Anda sebagai SIGN_ONLY atau SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT bidang untuk secara eksplisit menyimpan bidang dalam database Anda. Jika Anda melakukan ini, Anda harus secara manual memasukkan branch-key-id dalam keyField setiap kali Anda menulis catatan ke database Anda.

Menanyakan beacon dalam database multitenant

Untuk menanyakan suar, Anda harus menyertakan kueri keyField dalam kueri Anda untuk mengidentifikasi bahan kunci suar yang sesuai yang diperlukan untuk menghitung ulang suar. Anda harus menentukan yang branch-key-id terkait dengan kunci suar yang digunakan untuk menghasilkan suar untuk catatan. Anda tidak dapat menentukan nama ramah yang mengidentifikasi penyewa branch-key-id di pemasok ID kunci cabang. Anda dapat memasukkan keyField dalam kueri Anda dengan cara berikut.

Suar majemuk

Apakah Anda secara eksplisit menyimpan keyField dalam catatan Anda atau tidak, Anda dapat memasukkan keyField langsung ke dalam suar majemuk Anda sebagai bagian yang ditandatangani. Bagian yang keyField ditandatangani harus diperlukan.

Misalnya, jika Anda ingin membangun suar majemuk,, dari dua bidangcompoundBeacon, encryptedField dansignedField, Anda juga harus menyertakan keyField sebagai bagian yang ditandatangani. Hal ini memungkinkan Anda untuk melakukan query berikut padacompoundBeacon.

compoundBeacon = E_encryptedFieldValue.S_signedFieldValue.K_branch-key-id
Suar yang ditandatangani

Enkripsi AWS Database SDK menggunakan beacon standar dan gabungan untuk menyediakan solusi enkripsi yang dapat dicari. Beacon ini harus menyertakan setidaknya satu bidang terenkripsi. Namun, Enkripsi AWS Database SDK juga mendukung suar bertanda tangan yang dapat dikonfigurasi sepenuhnya dari SIGN_ONLY plaintext dan bidang. SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

Beacon yang ditandatangani dapat dibangun dari satu bagian. Apakah Anda secara eksplisit menyimpan keyField dalam catatan Anda atau tidak, Anda dapat membuat suar yang ditandatangani dari keyField dan menggunakannya untuk membuat kueri gabungan yang menggabungkan kueri pada suar yang keyField ditandatangani dengan kueri di salah satu beacon Anda yang lain. Misalnya, Anda dapat melakukan kueri berikut.

keyField = K_branch-key-id AND compoundBeacon = E_encryptedFieldValue.S_signedFieldValue

Untuk bantuan mengonfigurasi suar bertanda tangan, lihat Membuat beacon yang ditandatangani

Query langsung pada keyField

Jika Anda menentukan keyField dalam tindakan kriptografi Anda dan secara eksplisit menyimpan bidang dalam catatan Anda, Anda dapat membuat kueri gabungan yang menggabungkan kueri pada suar Anda dengan kueri di file. keyField Anda dapat memilih untuk menanyakan langsung keyField jika Anda ingin menanyakan suar standar. Misalnya, Anda dapat melakukan kueri berikut.

keyField = branch-key-id AND standardBeacon = S_standardBeaconValue