Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan DynamoDB Encryption Client untuk Python
catatan
Pustaka enkripsi sisi klien kami diubah namanya menjadi AWS Database Encryption SDK. Topik berikut memberikan informasi tentang versi 1. x —2. x dari DynamoDB Encryption Client untuk Java dan versi 1. x —3. x dari Klien Enkripsi DynamoDB untuk Python. Untuk informasi selengkapnya, lihat SDK Enkripsi AWS Database untuk dukungan versi DynamoDB.
Topik ini menjelaskan beberapa fitur DynamoDB Encryption Client untuk Python yang mungkin tidak ditemukan dalam implementasi bahasa pemrograman lainnya. Fitur-fitur ini dirancang untuk membuatnya lebih mudah untuk menggunakan DynamoDB Encryption Client dengan cara yang paling aman. Jika Anda tidak memiliki kasus penggunaan yang tidak biasa, kami sarankan Anda menggunakannya.
Untuk detail tentang pemrograman dengan Klien Enkripsi DynamoDB, lihat contoh Python dalam panduan ini, contoh di repositori GitHub aktif, dan dokumentasi Python aws-dynamodb-encryption-python
Kelas pembantu klien
DynamoDB Encryption Client untuk Python termasuk beberapa kelas pembantu klien yang mencerminkan kelas-kelas Boto 3 untuk DynamoDB. Kelas-kelas pembantu ini dirancang untuk membuatnya lebih mudah untuk menambahkan enkripsi dan penandatanganan ke aplikasi DynamoDB yang ada dan menghindari masalah yang paling umum, sebagai berikut:
-
Mencegah Anda mengenkripsi kunci utama dalam item Anda, baik dengan menambahkan tindakan penggantian untuk kunci utama ke AttributeActionsobjek, atau dengan melempar pengecualian jika
AttributeActions
objek Anda secara eksplisit memberi tahu klien untuk mengenkripsi kunci utama. Jika tindakan default di objekAttributeActions
Anda adalahDO_NOTHING
, kelas pembantu klien menggunakan tindakan tersebut untuk kunci primer. Jika tidak, mereka menggunakanSIGN_ONLY
. -
Buat TableInfo objek dan isi konteks enkripsi DynamoDB berdasarkan panggilan ke DynamoDB. Ini membantu untuk memastikan bahwa konteks enkripsi DynamoDB Anda akurat dan klien dapat mengidentifikasi kunci utama.
-
Metode Support, seperti
put_item
danget_item
, yang secara transparan mengenkripsi dan mendekripsi tabel item ketika Anda menulis atau membaca dari tabel DynamoDB. Hanya metodeupdate_item
yang tidak didukung.
Anda dapat menggunakan kelas pembantu klien,alih-alih berinteraksi langsung dengan enkriptor item yang tingkatnya lebih rendah. Gunakan kelas-kelas ini kecuali Anda perlu mengatur opsi lanjutan dalam enkriptor item.
Kelas pembantu klien meliputi:
-
EncryptedTable
untuk aplikasi yang menggunakan sumber daya Tabel di DynamoDB untuk memproses satu tabel pada satu waktu. -
EncryptedResource
untuk aplikasi yang menggunakan kelas Service Resource di DynamoDB untuk pemrosesan batch. -
EncryptedClient
untuk aplikasi yang menggunakan klien tingkat rendah di DynamoDB .
Untuk menggunakan kelas pembantu klien, pemanggil harus memiliki izin untuk memanggil operasi DynamoDB pada tabel target DescribeTable.
TableInfo kelas
TableInfo
Jika Anda menggunakankelas pembantu klien, itu menciptakan dan menggunakan objek TableInfo
untuk Anda. Jika tidak, Anda dapat membuat satu secara eksplisit. Sebagai contoh, lihat Gunakan enkriptor item.
Ketika Anda memanggil refresh_indexed_attributes
metode pada TableInfo
objek, itu mengisi nilai properti objek dengan memanggil operasi DynamoDB DescribeTable. Kueri tabel jauh lebih dapat diandalkan daripada nama indeks hard-coding. Kelas TableInfo
juga mencakup sebuah properti encryption_context_values
yang menyediakan nilai-nilai yang diperlukan untuk konteks enkripsi DynamoDB.
Untuk menggunakan refresh_indexed_attributes
metode ini, pemanggil harus memiliki izin untuk memanggil operasi DescribeTableDynamoDB pada tabel target.
Tindakan atribut di Python
Tindakan atribut memberitahukan kepada enkriptor item tentang tindakan yang dilakukan pada setiap atribut item. Untuk menentukan tindakan atribut di Python, buat objek AttributeActions
dengan tindakan default dan pengecualian untuk atribut tertentu. Nilai-nilai yang valid adalah untuk tindakan atribut yang didefinisikan dalam jenis CryptoAction
yang disebutkan.
penting
Setelah Anda menggunakan tindakan atribut untuk mengenkripsi item tabel Anda, menambahkan atau menghapus atribut dari model data Anda dapat menyebabkan kesalahan validasi tanda tangan yang mencegah Anda mendekripsi data Anda. Untuk penjelasan detail, lihat Mengubah model data Anda.
DO_NOTHING = 0 SIGN_ONLY = 1 ENCRYPT_AND_SIGN = 2
Misalnya, objek AttributeActions
ini menetapkan ENCRYPT_AND_SIGN
sebagai default untuk semua atribut, dan menentukan pengecualian untuk atribut ISBN
dan PublicationYear
.
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, attribute_actions={ 'ISBN': CryptoAction.DO_NOTHING, 'PublicationYear': CryptoAction.SIGN_ONLY } )
Jika Anda menggunakan sebuah kelas pembantu klien, Anda tidak perlu menentukan tindakan atribut untuk atribut kunci primer. Kelas pembantu klien mencegah Anda mengenkripsi kunci utama Anda.
Jika Anda tidak menggunakan kelas pembantu klien dan tindakan default adalah ENCRYPT_AND_SIGN
, Anda harus menentukan tindakan untuk kunci primer. Tindakan yang direkomendasikan untuk kunci primer adalah SIGN_ONLY
. Untuk mempermudahnya, gunakan metode set_index_keys
, yang menggunakan SIGN_ONLY untuk kunci primer, atau DO_NOTHING, ketika itu adalah tindakan default.
Awas
Jangan mengenkripsi atribut kunci utama. Atribut tersebut harus tetap dalam plaintext sehingga DynamoDB dapat menemukan item tanpa memindai keseluruhan tabel.
actions = AttributeActions( default_action=CryptoAction.ENCRYPT_AND_SIGN, ) actions.set_index_keys(*table_info.protected_index_keys())