

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

# Memilih jenis suar
<a name="choosing-beacon-type"></a>


****  

|  | 
| --- |
| Pustaka enkripsi sisi klien kami diubah namanya menjadi SDK Enkripsi AWS Database. Panduan pengembang ini masih memberikan informasi tentang Klien Enkripsi [DynamoDB](legacy-dynamodb-encryption-client.md). | 

*Dengan enkripsi yang dapat dicari, Anda dapat mencari catatan terenkripsi dengan memetakan nilai teks biasa di bidang terenkripsi dengan suar.* Jenis suar yang Anda konfigurasikan menentukan jenis kueri yang dapat Anda lakukan.

Kami sangat menyarankan untuk mengidentifikasi dan merencanakan jenis kueri yang perlu Anda lakukan sebelum mengonfigurasi beacon Anda. Setelah [Anda mengkonfigurasi beacon](configure-beacons.md) Anda, Anda harus mengkonfigurasi indeks sekunder untuk setiap suar sebelum Anda dapat mencari di bidang terenkripsi. Untuk informasi selengkapnya, lihat [Mengkonfigurasi indeks sekunder dengan beacon](ddb-searchable-encryption.md#ddb-beacon-indexes).

Beacon membuat peta antara nilai plaintext yang ditulis ke bidang dan nilai terenkripsi yang sebenarnya disimpan dalam database Anda. 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)`

Anda hanya dapat melakukan kueri di atas jika Anda membandingkan [bagian yang ditandatangani](configure-beacons.md#signed-parts) dari suar majemuk, dengan pengecualian `CONTAINS` operator, yang dapat Anda gunakan dengan suar majemuk untuk mengidentifikasi seluruh nilai bidang terenkripsi atau ditandatangani yang berisi suar rakitan. Ketika Anda membandingkan bagian yang ditandatangani, Anda dapat secara opsional menyertakan awalan dari [bagian terenkripsi](configure-beacons.md#encrypted-parts), tetapi Anda tidak dapat menyertakan nilai terenkripsi bidang. [Untuk informasi selengkapnya tentang jenis kueri yang dapat dilakukan oleh beacon standar dan gabungan, lihat Menanyakan suar.](using-beacons.md#querying-beacons)

Pertimbangkan solusi enkripsi yang dapat dicari berikut saat Anda meninjau pola akses database Anda. Contoh berikut menentukan suar mana yang akan dikonfigurasi untuk memenuhi persyaratan enkripsi dan kueri yang berbeda.

## Beacon standar
<a name="plan-standard-beacon"></a>

[Beacon standar](beacons.md#standard-beacon-overview) hanya dapat melakukan pencarian kesetaraan. Anda dapat menggunakan beacon standar untuk melakukan kueri berikut.

### Kueri satu bidang terenkripsi
<a name="se-example1"></a>

Jika Anda ingin mengidentifikasi catatan yang berisi nilai tertentu untuk bidang terenkripsi, buat suar standar.

#### Contoh
<a name="example1"></a>

Untuk contoh berikut, pertimbangkan database bernama `UnitInspection` yang melacak data inspeksi untuk fasilitas produksi. Setiap catatan dalam database berisi bidang yang disebut`work_id`,`inspection_date`,`inspector_id_last4`, dan`unit`. ID inspektur lengkap adalah angka antara 0—999.999.999. Namun, untuk memastikan bahwa kumpulan data didistribusikan secara merata, `inspector_id_last4` satu-satunya menyimpan empat digit terakhir dari ID inspektur. Setiap bidang dalam database diidentifikasi oleh kunci utama`work_id`. `unit`Bidang `inspector_id_last4` dan ditandai `ENCRYPT_AND_SIGN` dalam [tindakan kriptografi](concepts.md#crypt-actions).

Berikut ini adalah contoh entri plaintext dalam database. `UnitInspection`

```
{
    "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b",
    "inspection_date": 2023-06-07,
    "inspector_id_last4": 8744,
    "unit": 229304973450   
}
```

**Kueri satu bidang terenkripsi dalam catatan**  
Jika `inspector_id_last4` bidang perlu dienkripsi, tetapi Anda masih memerlukan kueri untuk kecocokan yang tepat, buat suar standar dari bidang tersebut. `inspector_id_last4` Kemudian, gunakan suar standar untuk membuat indeks sekunder. Anda dapat menggunakan indeks sekunder ini untuk kueri pada bidang terenkripsi. `inspector_id_last4`

Untuk bantuan mengonfigurasi suar standar, lihat [Mengonfigurasi](configure-beacons.md#config-standard-beacons) suar standar.

### Kueri bidang virtual
<a name="se-example2"></a>

Bidang [virtual adalah bidang](beacons.md#virtual-field) konseptual yang dibangun dari satu atau lebih bidang sumber. Jika Anda ingin melakukan pencarian kesetaraan untuk segmen tertentu dari bidang terenkripsi, atau melakukan pencarian kesetaraan pada rangkaian beberapa bidang, buat suar standar dari bidang virtual. Semua bidang virtual harus menyertakan setidaknya satu bidang sumber terenkripsi.

#### Contoh
<a name="example2"></a>

Contoh berikut membuat bidang virtual untuk `Employees` database. Berikut ini adalah contoh catatan plaintext dalam database. `Employees`

```
{
    "EmployeeID": 101,
    "SSN": 000-00-0000,
    "LastName": "Jones",
    "FirstName": "Mary",
    "Address": {
                "Street": "123 Main",
                "City": "Anytown",
                "State": "OH",
                "ZIPCode": 12345
    }
}
```

**Kueri segmen bidang terenkripsi**  
Untuk contoh ini, `SSN` bidang dienkripsi.  
Jika Anda ingin menanyakan `SSN` bidang menggunakan empat digit terakhir dari nomor jaminan sosial, buat bidang virtual yang mengidentifikasi segmen yang ingin Anda kueri.  
`Last4SSN`Bidang virtual, dibangun dari `Suffix(4)` memungkinkan Anda untuk query`Last4SSN=0000`. Gunakan bidang virtual ini untuk membangun suar standar. Kemudian, gunakan suar standar untuk membuat indeks sekunder. Anda dapat menggunakan indeks sekunder ini untuk kueri pada bidang virtual. Kueri ini mengembalikan semua catatan dengan `SSN` nilai yang berakhir dengan empat digit terakhir yang Anda tentukan.

**Kueri penggabungan beberapa bidang**  
Contoh berikut menunjukkan jenis transformasi dan kueri yang dapat Anda lakukan dengan bidang virtual. Dalam aplikasi, bidang contoh yang digunakan dalam contoh ini mungkin tidak memenuhi rekomendasi keunikan [distribusi](searchable-encryption.md#searchable-encryption-distribution) dan [korelasi](searchable-encryption.md#searchable-encryption-correlated-values) untuk beacon.
Jika Anda ingin melakukan pencarian kesetaraan pada rangkaian `FirstName` dan bidang, Anda dapat membuat `LastName` bidang virtual, dibangun dari huruf pertama `NameTag` bidang, diikuti oleh `FirstName` bidang, semuanya dalam `LastName` huruf kecil. Gunakan bidang virtual ini untuk membangun suar standar. Kemudian, gunakan suar standar untuk membuat indeks sekunder. Anda dapat menggunakan indeks sekunder ini untuk kueri `NameTag=mjones` pada bidang virtual.  
Setidaknya salah satu bidang sumber harus dienkripsi. Entah `FirstName` atau `LastName` bisa dienkripsi, atau keduanya bisa dienkripsi. Setiap bidang sumber teks biasa harus ditandai sebagai `SIGN_ONLY` atau `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` dalam tindakan [kriptografi](concepts.md#crypt-actions) Anda.

Untuk bantuan mengonfigurasi bidang virtual dan beacon yang menggunakannya, lihat [Membuat](configure-beacons.md#create-virtual-field) bidang virtual.

## Suar majemuk
<a name="plan-compound-beacons"></a>

[Compound beacon](beacons.md#compound-beacon-overview) membuat indeks dari string plaintext literal dan beacon standar untuk melakukan operasi database yang kompleks. Anda dapat menggunakan suar majemuk untuk melakukan kueri berikut.

### Kueri kombinasi bidang terenkripsi pada satu indeks
<a name="se-example3"></a>

Jika Anda perlu menanyakan kombinasi bidang terenkripsi pada satu indeks, buat suar majemuk yang menggabungkan beacon standar individual yang dibangun untuk setiap bidang terenkripsi untuk membentuk indeks tunggal.

Setelah mengonfigurasi suar majemuk, Anda dapat membuat indeks sekunder yang menentukan suar majemuk sebagai kunci partisi untuk melakukan kueri pencocokan persis atau dengan kunci pengurutan untuk melakukan kueri yang lebih kompleks. Indeks sekunder yang menentukan suar majemuk sebagai kunci pengurutan dapat melakukan kueri pencocokan persis dan kueri kompleks yang lebih disesuaikan.

#### Contoh
<a name="example3"></a>

Untuk contoh berikut, pertimbangkan database bernama `UnitInspection` yang melacak data inspeksi untuk fasilitas produksi. Setiap catatan dalam database berisi bidang yang disebut`work_id`,`inspection_date`,`inspector_id_last4`, dan`unit`. ID inspektur lengkap adalah angka antara 0—999.999.999. Namun, untuk memastikan bahwa kumpulan data didistribusikan secara merata, `inspector_id_last4` satu-satunya menyimpan empat digit terakhir dari ID inspektur. Setiap bidang dalam database diidentifikasi oleh kunci utama`work_id`. `unit`Bidang `inspector_id_last4` dan ditandai `ENCRYPT_AND_SIGN` dalam [tindakan kriptografi](concepts.md#crypt-actions).

Berikut ini adalah contoh entri plaintext dalam database. `UnitInspection`

```
{
    "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b",
    "inspection_date": 2023-06-07,
    "inspector_id_last4": 8744,
    "unit": 229304973450
}
```

**Lakukan pencarian kesetaraan pada kombinasi bidang terenkripsi**  
Jika Anda ingin menanyakan `UnitInspection` database untuk pencocokan yang tepat`inspector_id_last4.unit`, pertama-tama buat beacon standar yang berbeda untuk bidang `inspector_id_last4` dan`unit`. Kemudian, buat suar majemuk dari dua suar standar.  
Setelah Anda mengkonfigurasi suar majemuk, buat indeks sekunder yang menentukan suar majemuk sebagai kunci partisi. Gunakan indeks sekunder ini untuk menanyakan kecocokan yang tepat pada`inspector_id_last4.unit`. Misalnya, Anda dapat menanyakan suar ini untuk menemukan daftar inspeksi yang dilakukan inspektur untuk unit tertentu.

**Lakukan kueri kompleks pada kombinasi bidang terenkripsi**  
Jika Anda ingin menanyakan `UnitInspection` database pada `inspector_id_last4` dan`inspector_id_last4.unit`, pertama buat beacon standar yang berbeda untuk `inspector_id_last4` dan `unit` bidang. Kemudian, buat suar majemuk dari dua suar standar.  
Setelah Anda mengkonfigurasi suar majemuk, buat indeks sekunder yang menentukan suar majemuk sebagai kunci pengurutan. Gunakan indeks sekunder ini untuk menanyakan `UnitInspection` database untuk entri yang dimulai dengan inspektur tertentu atau kueri database untuk daftar semua unit dalam rentang ID unit tertentu yang diperiksa oleh inspektur tertentu. Anda juga dapat melakukan pencarian kecocokan tepat pada`inspector_id_last4.unit`.

Untuk bantuan mengonfigurasi suar majemuk, lihat [Mengonfigurasi](configure-beacons.md#config-compound-beacons) suar majemuk.

### Kueri kombinasi bidang terenkripsi dan teks biasa pada satu indeks
<a name="se-example4"></a>

Jika Anda perlu menanyakan kombinasi bidang terenkripsi dan teks biasa pada satu indeks, buat suar majemuk yang menggabungkan beacon standar individu dan bidang teks biasa untuk membentuk indeks tunggal. [Bidang plaintext yang digunakan untuk membangun suar majemuk harus ditandai `SIGN_ONLY` atau `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` dalam tindakan kriptografi Anda.](concepts.md#crypt-actions)

Setelah mengonfigurasi suar majemuk, Anda dapat membuat indeks sekunder yang menentukan suar majemuk sebagai kunci partisi untuk melakukan kueri pencocokan persis atau dengan kunci pengurutan untuk melakukan kueri yang lebih kompleks. Indeks sekunder yang menentukan suar majemuk sebagai kunci pengurutan dapat melakukan kueri pencocokan persis dan kueri kompleks yang lebih disesuaikan.

#### Contoh
<a name="example4"></a>

Untuk contoh berikut, pertimbangkan database bernama `UnitInspection` yang melacak data inspeksi untuk fasilitas produksi. Setiap catatan dalam database berisi bidang yang disebut`work_id`,`inspection_date`,`inspector_id_last4`, dan`unit`. ID inspektur lengkap adalah angka antara 0—999.999.999. Namun, untuk memastikan bahwa kumpulan data didistribusikan secara merata, `inspector_id_last4` satu-satunya menyimpan empat digit terakhir dari ID inspektur. Setiap bidang dalam database diidentifikasi oleh kunci utama`work_id`. `unit`Bidang `inspector_id_last4` dan ditandai `ENCRYPT_AND_SIGN` dalam [tindakan kriptografi](concepts.md#crypt-actions).

Berikut ini adalah contoh entri plaintext dalam database. `UnitInspection`

```
{
    "work_id": "1c7fcff3-6e74-41a8-b7f7-925dc039830b",
    "inspection_date": 2023-06-07,
    "inspector_id_last4": 8744,
    "unit": 229304973450
}
```

**Lakukan pencarian kesetaraan pada kombinasi bidang**  
Jika Anda ingin menanyakan `UnitInspection` database untuk inspeksi yang dilakukan oleh inspektur tertentu pada tanggal tertentu, pertama-tama buat suar standar untuk bidang tersebut. `inspector_id_last4` `inspector_id_last4`Bidang ditandai `ENCRYPT_AND_SIGN` dalam [tindakan kriptografi](concepts.md#crypt-actions). Semua bagian terenkripsi memerlukan suar standar mereka sendiri. `inspection_date`Bidang ditandai `SIGN_ONLY` dan tidak memerlukan suar standar. Selanjutnya, buat suar majemuk dari `inspection_date` lapangan dan suar `inspector_id_last4` standar.  
Setelah Anda mengkonfigurasi suar majemuk, buat indeks sekunder yang menentukan suar majemuk sebagai kunci partisi. Gunakan indeks sekunder ini untuk menanyakan database untuk catatan dengan kecocokan persis dengan inspektur dan tanggal inspeksi tertentu. Misalnya, Anda dapat menanyakan database untuk daftar semua inspeksi yang `8744` dilakukan oleh inspektur yang ID-nya berakhir pada tanggal tertentu.

**Lakukan kueri kompleks pada kombinasi bidang**  
Jika Anda ingin menanyakan database untuk inspeksi yang dilakukan dalam `inspection_date` rentang, atau kueri database untuk inspeksi yang dilakukan pada tertentu yang `inspection_date` dibatasi oleh `inspector_id_last4` atau`inspector_id_last4.unit`, pertama-tama buat beacon standar yang berbeda untuk bidang dan. `inspector_id_last4` `unit` Kemudian, buat suar majemuk dari `inspection_date` bidang plaintext dan dua beacon standar.  
Setelah Anda mengkonfigurasi suar majemuk, buat indeks sekunder yang menentukan suar majemuk sebagai kunci pengurutan. Gunakan indeks sekunder ini untuk melakukan kueri untuk inspeksi yang dilakukan pada tanggal tertentu oleh inspektur tertentu. Misalnya, Anda dapat menanyakan database untuk daftar semua unit yang diperiksa pada tanggal yang sama. Atau, Anda dapat menanyakan database untuk daftar semua inspeksi yang dilakukan pada unit tertentu di antara rentang tanggal inspeksi tertentu.

Untuk bantuan mengonfigurasi suar majemuk, lihat [Mengonfigurasi](configure-beacons.md#config-compound-beacons) suar majemuk.