Menggunakan DynamoDB Encryption Client untuk Python - 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 DynamoDB Encryption Client untuk Python

catatan

Pustaka enkripsi sisi klien kami diubah namanya menjadi Enkripsi Database. AWS 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 Enkripsi AWS Database SDK 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 untuk Klien Enkripsi DynamoDB.

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 objek AttributeActions Anda adalah DO_NOTHING, kelas pembantu klien menggunakan tindakan tersebut untuk kunci primer. Jika tidak, mereka menggunakan SIGN_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 dan get_item, yang secara transparan mengenkripsi dan mendekripsi tabel item ketika Anda menulis atau membaca dari tabel DynamoDB. Hanya metode update_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:

Untuk menggunakan kelas pembantu klien, pemanggil harus memiliki izin untuk memanggil operasi DynamoDB pada tabel target DescribeTable.

TableInfo kelas

TableInfoKelas adalah kelas pembantu yang mewakili tabel DynamoDB, lengkap dengan bidang untuk kunci utama dan indeks sekunder. Ini membantu Anda untuk mendapatkan informasi akurat dan real-time tentang tabel.

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 membuatnya mudah, gunakan set_index_keys metode, yang menggunakan SIGN _ ONLY untuk kunci utama, 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())