

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

# Memperbarui model data Anda
<a name="ddb-update-data-model"></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). | 

[Saat mengonfigurasi SDK Enkripsi AWS Database untuk DynamoDB, Anda memberikan tindakan atribut.](concepts.md#crypt-actions) Pada enkripsi, AWS Database Encryption SDK menggunakan tindakan atribut untuk mengidentifikasi atribut mana yang akan dienkripsi dan ditandatangani, atribut mana yang akan ditandatangani (tetapi tidak mengenkripsi), dan mana yang harus diabaikan. Anda juga menentukan [atribut unsigned yang diizinkan](ddb-java-using.md#allowed-unauth) untuk secara eksplisit memberi tahu klien atribut mana yang dikecualikan dari tanda tangan. Saat mendekripsi, SDK Enkripsi AWS Database menggunakan atribut unsigned yang diizinkan yang Anda tetapkan untuk mengidentifikasi atribut mana yang tidak disertakan dalam tanda tangan. Tindakan atribut tidak disimpan dalam item terenkripsi dan SDK Enkripsi AWS Database tidak memperbarui tindakan atribut Anda secara otomatis.

Pilih tindakan atribut Anda dengan hati-hati. Bila ragu, gunakan **Enkripsi dan tanda tangan**. Setelah Anda menggunakan AWS Database Encryption SDK untuk melindungi item Anda, Anda tidak dapat mengubah `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut yang ada `ENCRYPT_AND_SIGN``SIGN_ONLY`, atau ke`DO_NOTHING`. Namun, Anda dapat dengan aman melakukan perubahan berikut.
+ [Tambahkan `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut baru `ENCRYPT_AND_SIGN``SIGN_ONLY`, dan](#ddb-add-auth-attribute)
+ [Hapus atribut yang ada](#ddb-remove-attribute)
+ [Ubah `ENCRYPT_AND_SIGN` atribut yang ada ke `SIGN_ONLY` atau `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`](#ddb-encrypt-to-sign)
+ [Ubah `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut `SIGN_ONLY` atau yang sudah ada ke `ENCRYPT_AND_SIGN`](#ddb-sign-to-encrypt)
+ [Tambahkan `DO_NOTHING` atribut baru](#ddb-add-unauth-attribute)
+ [Ubah `SIGN_ONLY` atribut yang ada menjadi `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`](#ddb-signOnly-to-signInclude)
+ [Ubah `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut yang ada menjadi `SIGN_ONLY`](#ddb-signInclude-to-signOnly)

**Pertimbangan untuk enkripsi yang dapat dicari**  
Sebelum Anda memperbarui model data Anda, pertimbangkan dengan cermat bagaimana pembaruan Anda dapat memengaruhi [beacon](beacons.md) apa pun yang Anda buat dari atribut. Setelah Anda menulis catatan baru dengan suar, Anda tidak dapat memperbarui konfigurasi suar. Anda tidak dapat memperbarui tindakan atribut yang terkait dengan atribut yang Anda gunakan untuk membangun beacon. Jika Anda menghapus atribut yang ada dan suar terkait, Anda tidak akan dapat menanyakan catatan yang ada menggunakan suar itu. Anda dapat membuat beacon baru untuk bidang baru yang ditambahkan ke rekaman, tetapi Anda tidak dapat memperbarui beacon yang ada untuk menyertakan bidang baru.

**Pertimbangan untuk atribut `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`**  
Secara default, kunci partisi dan sortir adalah satu-satunya atribut yang disertakan dalam konteks enkripsi. Anda dapat mempertimbangkan untuk mendefinisikan bidang tambahan `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` agar pemasok ID kunci cabang untuk [keyring AWS KMS Hierarkis](use-hierarchical-keyring.md) Anda dapat mengidentifikasi kunci cabang mana yang diperlukan untuk dekripsi dari konteks enkripsi. Untuk informasi selengkapnya, lihat [pemasok ID kunci cabang](use-hierarchical-keyring.md#branch-key-id-supplier). Jika Anda menentukan `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut apa pun, maka atribut partisi dan sortir juga harus`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.

**catatan**  
Untuk menggunakan tindakan `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` kriptografi, Anda harus menggunakan SDK Enkripsi AWS Database versi 3.3 atau yang lebih baru. Terapkan versi baru ke semua pembaca sebelum [memperbarui model data Anda](#ddb-update-data-model) untuk disertakan`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.

## Tambahkan `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut baru `ENCRYPT_AND_SIGN``SIGN_ONLY`, dan
<a name="ddb-add-auth-attribute"></a>

Untuk menambahkan atribut baru `ENCRYPT_AND_SIGN``SIGN_ONLY`, atau `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut, tentukan atribut baru dalam tindakan atribut Anda.

Anda tidak dapat menghapus `DO_NOTHING` atribut yang ada dan menambahkannya kembali sebagai`ENCRYPT_AND_SIGN`,`SIGN_ONLY`, atau `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut.

**Menggunakan kelas data beranotasi**  
Jika Anda mendefinisikan tindakan atribut Anda dengan a`TableSchema`, tambahkan atribut baru ke kelas data beranotasi Anda. Jika Anda tidak menentukan anotasi tindakan atribut untuk atribut baru, klien akan mengenkripsi dan menandatangani atribut baru secara default (kecuali atribut adalah bagian dari kunci utama). Jika Anda hanya ingin menandatangani atribut baru, Anda harus menambahkan atribut baru dengan `@DynamoDBEncryptionSignOnly` atau `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` anotasi.

**Menggunakan model objek**  
Jika Anda secara manual mendefinisikan tindakan atribut Anda, tambahkan atribut baru ke tindakan atribut dalam model objek Anda dan tentukan `ENCRYPT_AND_SIGN``SIGN_ONLY`,, atau `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` sebagai tindakan atribut.

## Hapus atribut yang ada
<a name="ddb-remove-attribute"></a>

Jika Anda memutuskan bahwa Anda tidak lagi memerlukan atribut, Anda dapat berhenti menulis data ke atribut tersebut atau Anda dapat secara resmi menghapusnya dari tindakan atribut Anda. Ketika Anda berhenti menulis data baru ke atribut, atribut masih muncul dalam tindakan atribut Anda. Ini dapat membantu jika Anda perlu mulai menggunakan atribut lagi di masa mendatang. Menghapus atribut secara formal dari tindakan atribut Anda tidak menghapusnya dari kumpulan data Anda. Dataset Anda akan tetap berisi item yang menyertakan atribut itu.

Untuk menghapus `DO_NOTHING` atribut`ENCRYPT_AND_SIGN`,, `SIGN_ONLY` atau yang sudah ada secara resmi, perbarui tindakan atribut Anda. `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`

Jika Anda menghapus `DO_NOTHING` atribut, Anda tidak boleh menghapus atribut tersebut dari atribut yang [tidak ditandatangani yang diizinkan](ddb-java-using.md#allowed-unauth). Bahkan jika Anda tidak lagi menulis nilai baru ke atribut itu, klien masih perlu tahu bahwa atribut tersebut tidak ditandatangani untuk membaca item yang ada yang berisi atribut.

**Menggunakan kelas data beranotasi**  
Jika Anda mendefinisikan tindakan atribut Anda dengan a`TableSchema`, hapus atribut dari kelas data beranotasi Anda.

**Menggunakan model objek**  
Jika Anda secara manual mendefinisikan tindakan atribut Anda, hapus atribut dari tindakan atribut dalam model objek Anda.

## Ubah `ENCRYPT_AND_SIGN` atribut yang ada ke `SIGN_ONLY` atau `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`
<a name="ddb-encrypt-to-sign"></a>

Untuk mengubah `ENCRYPT_AND_SIGN` atribut yang ada ke `SIGN_ONLY` atau`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, Anda harus memperbarui tindakan atribut Anda. Setelah Anda menerapkan pembaruan, klien akan dapat memverifikasi dan mendekripsi nilai yang ada yang ditulis ke atribut, tetapi hanya akan menandatangani nilai baru yang ditulis ke atribut.

**catatan**  
Pertimbangkan persyaratan keamanan Anda dengan cermat sebelum mengubah `ENCRYPT_AND_SIGN` atribut yang ada ke `SIGN_ONLY` atau`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`. Atribut apa pun yang dapat menyimpan data sensitif harus dienkripsi.

**Menggunakan kelas data beranotasi**  
Jika Anda mendefinisikan tindakan atribut dengan a`TableSchema`, perbarui atribut yang ada untuk menyertakan `@DynamoDBEncryptionSignOnly` atau `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` anotasi dalam kelas data beranotasi Anda.

**Menggunakan model objek**  
Jika Anda menentukan tindakan atribut secara manual, perbarui tindakan atribut yang terkait dengan atribut yang ada dari `ENCRYPT_AND_SIGN` ke `SIGN_ONLY` atau `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` dalam model objek Anda.

## Ubah `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut `SIGN_ONLY` atau yang sudah ada ke `ENCRYPT_AND_SIGN`
<a name="ddb-sign-to-encrypt"></a>

Untuk mengubah atribut `SIGN_ONLY` atau `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut yang ada`ENCRYPT_AND_SIGN`, Anda harus memperbarui tindakan atribut Anda. Setelah Anda menyebarkan pembaruan, klien akan dapat memverifikasi nilai yang ada yang ditulis ke atribut, dan akan mengenkripsi dan menandatangani nilai baru yang ditulis ke atribut.

**Menggunakan kelas data beranotasi**  
Jika Anda menentukan tindakan atribut Anda dengan a`TableSchema`, hapus `@DynamoDBEncryptionSignOnly` atau `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` anotasi dari atribut yang ada.

**Menggunakan model objek**  
Jika Anda menentukan tindakan atribut secara manual, perbarui tindakan atribut yang terkait dengan atribut dari `SIGN_ONLY` atau `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` ke `ENCRYPT_AND_SIGN` dalam model objek Anda.

## Tambahkan `DO_NOTHING` atribut baru
<a name="ddb-add-unauth-attribute"></a>

Untuk mengurangi risiko kesalahan saat menambahkan `DO_NOTHING` atribut baru, sebaiknya tentukan awalan yang berbeda saat menamai `DO_NOTHING` atribut Anda, lalu gunakan awalan tersebut untuk menentukan atribut unsigned yang [diizinkan](ddb-java-using.md#allowed-unauth).

Anda tidak dapat menghapus `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut yang ada `ENCRYPT_AND_SIGN``SIGN_ONLY`,, atau dari kelas data beranotasi dan kemudian menambahkan atribut kembali sebagai `DO_NOTHING` atribut. Anda hanya dapat menambahkan `DO_NOTHING` atribut yang sama sekali baru.

Langkah-langkah yang Anda ambil untuk menambahkan `DO_NOTHING` atribut baru bergantung pada apakah Anda menetapkan atribut unsigned yang diizinkan secara eksplisit dalam daftar atau dengan awalan.

**Menggunakan awalan atribut unsigned yang diizinkan**  
Jika Anda mendefinisikan tindakan atribut Anda dengan a`TableSchema`, tambahkan `DO_NOTHING` atribut baru ke kelas data beranotasi Anda dengan anotasi`@DynamoDBEncryptionDoNothing`. Jika Anda menentukan tindakan atribut secara manual, perbarui tindakan atribut Anda untuk menyertakan atribut baru. Pastikan untuk secara eksplisit mengkonfigurasi atribut baru dengan tindakan `DO_NOTHING` atribut. Anda harus menyertakan awalan berbeda yang sama dalam nama atribut baru.

**Menggunakan daftar atribut unsigned yang diizinkan**

1. Tambahkan `DO_NOTHING` atribut baru ke daftar atribut unsigned yang diizinkan dan terapkan daftar yang diperbarui.

1. Terapkan perubahan dari **Langkah 1**.

   Anda tidak dapat melanjutkan ke **Langkah 3** sampai perubahan telah menyebar ke semua host yang perlu membaca data ini.

1. Tambahkan `DO_NOTHING` atribut baru ke tindakan atribut Anda.

   1. Jika Anda mendefinisikan tindakan atribut Anda dengan a`TableSchema`, tambahkan `DO_NOTHING` atribut baru ke kelas data beranotasi Anda dengan anotasi`@DynamoDBEncryptionDoNothing`.

   1. Jika Anda menentukan tindakan atribut secara manual, perbarui tindakan atribut Anda untuk menyertakan atribut baru. Pastikan untuk secara eksplisit mengkonfigurasi atribut baru dengan tindakan `DO_NOTHING` atribut.

1. Terapkan perubahan dari **Langkah 3**.

## Ubah `SIGN_ONLY` atribut yang ada menjadi `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`
<a name="ddb-signOnly-to-signInclude"></a>

Untuk mengubah `SIGN_ONLY` atribut yang ada`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`, Anda harus memperbarui tindakan atribut Anda. Setelah Anda menyebarkan pembaruan, klien akan dapat memverifikasi nilai yang ada yang ditulis ke atribut, dan akan terus menandatangani nilai baru yang ditulis ke atribut. Nilai baru yang ditulis ke atribut akan disertakan dalam [konteks enkripsi](concepts.md#encryption-context).

Jika Anda menentukan `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut apa pun, maka atribut partisi dan sortir juga harus`SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT`.

**Menggunakan kelas data beranotasi**  
Jika Anda menentukan tindakan atribut Anda dengan a`TableSchema`, perbarui tindakan atribut yang terkait dengan atribut dari `@DynamoDBEncryptionSignOnly` ke`@DynamoDBEncryptionSignAndIncludeInEncryptionContext`.

**Menggunakan model objek**  
Jika Anda menentukan tindakan atribut secara manual, perbarui tindakan atribut yang terkait dengan atribut dari `SIGN_ONLY` ke `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` dalam model objek Anda.

## Ubah `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut yang ada menjadi `SIGN_ONLY`
<a name="ddb-signInclude-to-signOnly"></a>

Untuk mengubah `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut yang ada`SIGN_ONLY`, Anda harus memperbarui tindakan atribut Anda. Setelah Anda menyebarkan pembaruan, klien akan dapat memverifikasi nilai yang ada yang ditulis ke atribut, dan akan terus menandatangani nilai baru yang ditulis ke atribut. Nilai baru yang ditulis ke atribut tidak akan disertakan dalam [konteks enkripsi](concepts.md#encryption-context).

Sebelum mengubah `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` atribut yang ada`SIGN_ONLY`, pertimbangkan dengan cermat bagaimana pembaruan Anda dapat memengaruhi fungsionalitas [pemasok ID kunci cabang](use-hierarchical-keyring.md#branch-key-id-supplier) Anda.

**Menggunakan kelas data beranotasi**  
Jika Anda menentukan tindakan atribut Anda dengan a`TableSchema`, perbarui tindakan atribut yang terkait dengan atribut dari `@DynamoDBEncryptionSignAndIncludeInEncryptionContext` ke`@DynamoDBEncryptionSignOnly`.

**Menggunakan model objek**  
Jika Anda menentukan tindakan atribut secara manual, perbarui tindakan atribut yang terkait dengan atribut dari `SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT` ke `SIGN_ONLY` dalam model objek Anda.