Menggunakan beacon - AWS Enkripsi Database SDK

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

Menggunakan beacon

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

Beacon memungkinkan Anda untuk mencari catatan terenkripsi tanpa mendekripsi seluruh database yang sedang ditanyakan. Beacon dirancang untuk diimplementasikan dalam database baru yang tidak berpenghuni. Setiap suar yang dikonfigurasi dalam database yang ada hanya akan memetakan catatan baru yang ditulis ke database. Beacon dihitung dari nilai plaintext bidang, setelah bidang dienkripsi, tidak ada cara bagi beacon untuk memetakan data yang ada. Setelah Anda menulis catatan baru dengan suar, Anda tidak dapat memperbarui konfigurasi suar. Namun, Anda dapat menambahkan menambahkan beacon baru untuk bidang baru yang Anda tambahkan ke catatan Anda.

Setelah Anda mengkonfigurasi beacon Anda, Anda harus menyelesaikan langkah-langkah berikut sebelum Anda mulai mengisi database Anda dan melakukan query pada beacon Anda.

  1. Buat keyring AWS KMS Hierarkis

    Untuk menggunakan enkripsi yang dapat dicari, Anda harus menggunakan keyring AWS KMS Hierarkis untuk menghasilkan, mengenkripsi, dan mendekripsi kunci data yang digunakan untuk melindungi catatan Anda.

    Setelah Anda mengkonfigurasi beacon Anda, kumpulkan prasyarat keyring Hierarkis dan buat keyring Hierarkis Anda.

    Untuk detail selengkapnya tentang mengapa keyring Hierarkis diperlukan, lihat Menggunakan keyring Hierarkis untuk enkripsi yang dapat dicari.

  2. Tentukan versi beacon

    Tentukan keyStorekeySource, daftar semua suar standar yang Anda konfigurasikan, daftar semua suar majemuk yang Anda konfigurasikan, daftar bagian terenkripsi, daftar bagian yang ditandatangani, dan versi suar. Anda harus menentukan 1 untuk versi beacon. Untuk panduan tentang mendefinisikan AndakeySource, lihatMendefinisikan sumber kunci suar Anda.

    Contoh Java berikut mendefinisikan versi beacon untuk database penyewa tunggal. Untuk bantuan mendefinisikan versi beacon untuk database multitenant, lihat Enkripsi yang dapat dicari untuk database multitenant.

    Java
    List<BeaconVersion> beaconVersions = new ArrayList<>(); beaconVersions.add( BeaconVersion.builder() .standardBeacons(standardBeaconList) .compoundBeacons(compoundBeaconList) .encryptedParts(encryptedPartsList) .signedParts(signedPartsList) .version(1) // MUST be 1 .keyStore(keyStore) .keySource(BeaconKeySource.builder() .single(SingleKeyStore.builder() .keyId(branchKeyId) .cacheTTL(6000) .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 { Single = new SingleKeyStore { KeyId = branch-key-id, CacheTTL = 6000 } } } };
  3. Konfigurasikan indeks sekunder

    Setelah Anda mengkonfigurasi beacon Anda, Anda harus mengkonfigurasi indeks sekunder yang mencerminkan setiap suar sebelum Anda dapat mencari di bidang terenkripsi. Untuk informasi selengkapnya, lihat Mengkonfigurasi indeks sekunder dengan beacon.

  4. Tentukan tindakan kriptografi Anda

    Semua bidang yang digunakan untuk membangun suar standar harus ditandai. ENCRYPT_AND_SIGN Semua bidang lain yang digunakan untuk membangun beacon harus ditandai atau. SIGN_ONLY SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

  5. Konfigurasikan klien SDK Enkripsi AWS Database

    Untuk mengonfigurasi klien SDK Enkripsi AWS Database yang melindungi item tabel di tabel DynamoDB Anda, lihat pustaka enkripsi sisi klien Java untuk DynamoDB.

Meminta suar

Jenis suar yang Anda konfigurasikan menentukan jenis kueri yang dapat Anda lakukan. Beacon standar menggunakan ekspresi filter untuk melakukan pencarian kesetaraan. Compound beacon menggabungkan string plaintext literal dan beacon standar untuk melakukan kueri kompleks. Saat Anda menanyakan data terenkripsi, Anda mencari nama suar.

Anda tidak dapat membandingkan nilai dari dua beacon standar, bahkan jika mereka mengandung plaintext dasar yang sama. Dua beacon standar akan menghasilkan dua tag HMAC yang berbeda untuk nilai plaintext yang sama. Akibatnya, beacon standar tidak dapat melakukan kueri berikut.

  • beacon1 = beacon2

  • beacon1 IN (beacon2)

  • value IN (beacon1, beacon2, ...)

  • CONTAINS(beacon1, beacon2)

Compound beacon dapat melakukan query berikut.

  • BEGINS_WITH(a), di mana a mencerminkan seluruh nilai bidang tempat suar majemuk rakitan dimulai. Anda tidak dapat menggunakan BEGINS_WITH operator untuk mengidentifikasi nilai yang dimulai dengan substring tertentu. Namun, Anda dapat menggunakanBEGINS_WITH(S_), di mana S_ mencerminkan awalan untuk bagian yang dimulai dengan suar majemuk rakitan.

  • CONTAINS(a), di mana a mencerminkan seluruh nilai bidang yang terkandung dalam suar majemuk rakitan. Anda tidak dapat menggunakan CONTAINS operator untuk mengidentifikasi catatan yang berisi substring tertentu atau nilai dalam satu set.

    Misalnya, Anda tidak dapat melakukan CONTAINS(path, "a" kueri yang a mencerminkan nilai dalam satu set.

  • Anda dapat membandingkan bagian yang ditandatangani dari suar majemuk. Saat membandingkan bagian yang ditandatangani, Anda dapat menambahkan awalan bagian terenkripsi secara opsional ke satu atau beberapa bagian yang ditandatangani, tetapi Anda tidak dapat menyertakan nilai bidang terenkripsi dalam kueri apa pun.

    Misalnya, Anda dapat membandingkan bagian yang ditandatangani dan kueri pada signedField1 = signedField2 atauvalue IN (signedField1, signedField2, ...).

    Anda juga dapat membandingkan bagian yang ditandatangani dan awalan dari bagian terenkripsi dengan kueri pada. signedField1.A_ = signedField2.B_

  • field BETWEEN a AND b, di mana a dan b merupakan bagian yang ditandatangani. Anda secara opsional dapat menambahkan awalan dari bagian terenkripsi ke satu atau beberapa bagian yang ditandatangani, tetapi Anda tidak dapat menyertakan nilai bidang terenkripsi dalam kueri apa pun.

Anda harus menyertakan awalan untuk setiap bagian yang Anda sertakan dalam kueri pada suar majemuk. Misalnya, jika Anda membuat suar majemuk,, dari dua bidangcompoundBeacon, encryptedField dansignedField, Anda harus menyertakan awalan yang dikonfigurasi untuk dua bagian tersebut saat Anda menanyakan suar.

compoundBeacon = E_encryptedFieldValue.S_signedFieldValue