Memecahkan masalah dalam aplikasi DynamoDB Encryption Client Anda - AWS SDK Enkripsi Basis Data

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

Memecahkan masalah dalam aplikasi DynamoDB Encryption Client Anda

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 DynamoDB Encryption Client untuk Python. Untuk informasi selengkapnya, lihat SDK Enkripsi AWS Database untuk dukungan versi DynamoDB.

Bagian ini menjelaskan masalah yang mungkin Anda alami saat menggunakan DynamoDB Encryption Client dan menawarkan saran-saran untuk menyelesaikannya.

Untuk memberikan umpan balik pada Klien Enkripsi DynamoDB, ajukan masalah di aws-dynamodb-encryption-javaatau aws-dynamodb-encryption-pythonGitHubrepositori.

Untuk memberikan umpan balik tentang dokumentasi ini, gunakan tautan umpan balik pada halaman mana pun. Anda juga dapat mengajukan masalah atau berkontribusi aws-dynamodb-encryption-docs, repositori sumber terbuka untuk dokumentasi ini. GitHub

Akses ditolak

Masalah: Aplikasi Anda ditolak aksesnya ke sumber daya yang dibutuhkan.

Saranan: Pelajari tentang izin yang diperlukan dan tambahkan izin tersebut ke konteks keamanan di mana aplikasi Anda dijalankan.

Detail

Untuk menjalankan aplikasi yang menggunakan pustaka DynamoDB Encryption Client, pemanggil harus memiliki izin untuk menggunakan komponennya. Jika tidak, aksesnya ke elemen yang dibutuhkan akan ditolak.

  • DynamoDB Encryption Client tidak memerlukan akun Amazon Web Services (AWS) atau tergantung pada layanan AWS mana pun. Namun, jika aplikasi Anda menggunakanAWS, Anda memerlukan Akun AWS dan pengguna yang memiliki izin untuk menggunakan akun.

  • DynamoDB Encryption Client tidak memerlukan Amazon DynamoDB. Namun, Jika aplikasi yang menggunakan klien membuat tabel DynamoDB, menempatkan item ke dalam tabel, atau mendapatkan item dari tabel, pemanggil harus memiliki izin untuk menggunakan operasi DynamoDB yang diperlukan di Anda. Akun AWS Untuk detailnya, lihat topik kontrol akses di Panduan Developer Amazon DynamoDB.

  • Jika aplikasi Anda menggunakan kelas pembantu klien di Klien Enkripsi DynamoDB untuk Python, pemanggil harus memiliki izin untuk memanggil operasi DynamoDB. DescribeTable

  • Klien Enkripsi DynamoDB tidak memerlukan AWS Key Management Service ()AWS KMS. Namun, jika aplikasi Anda menggunakan Penyedia Materi KMS Langsung, atau menggunakan Penyedia Terbaru dengan toko penyedia yang menggunakanAWS KMS, pemanggil harus memiliki izin untuk menggunakan AWS KMS GenerateDataKeydan Dekripsi operasi.

Verifikasi tanda tangan gagal

Masalah: Item tidak dapat didekripsi karena verifikasi tanda tangan gagal. Item juga mungkin tidak dienkripsi dan ditandatangani sesuai keinginan Anda.

Saranan: Pastikan bahwa tindakan atribut yang Anda berikan mencakup semua atribut dalam item. Saat mendekripsi item, pastikan untuk memberikan tindakan atribut yang sesuai dengan tindakan yang digunakan untuk mengenkripsi item.

Detail

Tindakan atribut yang Anda berikan memberi tahu DynamoDB Encryption Client atribut mana yang perlu dienkripsi dan ditandatangani, atribut mana yang perlu ditanandatangani (tapi tidak dienkripsi), dan mana yang diabaikan.

Jika tindakan atribut yang Anda tentukan tidak mencakup semua atribut dalam item, item mungkin tidak dienkripsi dan ditandatangani sesuai keinginan Anda. Jika tindakan atribut yang Anda berikan saat mendekripsi item berbeda dari tindakan atribut yang Anda berikan saat mengenkripsi item, verifikasi tanda tangan mungkin gagal. Ini adalah masalah khusus untuk aplikasi terdistribusi di mana tindakan atribut baru mungkin tidak disebarkan ke semua host.

Kesalahan validasi tanda tangan sulit untuk diselesaikan. Untuk membantu mencegahnya, lakukan tindakan pencegahan ekstra saat mengubah model data Anda. Untuk detailnya, lihat Mengubah model data Anda.

Masalah dengan tabel global versi lama

Masalah: Item dalam tabel global Amazon DynamoDB versi lama tidak dapat didekripsi karena verifikasi tanda tangan gagal.

Saran: Atur tindakan atribut sehingga bidang replikasi yang dipesan tidak dienkripsi atau ditandatangani.

Detail

Anda dapat menggunakan DynamoDB Encryption Client dengan tabel global DynamoDB. Kami menyarankan Anda menggunakan tabel global dengan kunci KMS multi-wilayah dan mereplikasi kunci KMS ke semua Wilayah AWS tempat tabel global direplikasi.

Dimulai dengan tabel global versi 2019.11.21, Anda dapat menggunakan tabel global dengan Klien Enkripsi DynamoDB tanpa konfigurasi khusus. Namun, jika Anda menggunakan tabel global versi 2017.11.29, Anda harus memastikan bahwa bidang replikasi yang dipesan tidak dienkripsi atau ditandatangani.

Jika Anda menggunakan tabel global versi 2017.11.29, Anda harus mengatur tindakan atribut untuk atribut berikut ke Java atau DO_NOTHING@DoNotTouch Python.

  • aws:rep:deleting

  • aws:rep:updatetime

  • aws:rep:updateregion

Jika Anda menggunakan versi lain dari tabel global, tidak ada tindakan yang diperlukan.

Kinerja yang buruk dari Penyedia Terbaru

Masalah: Aplikasi Anda kurang responsif, terutama setelah diperbarui ke versi DynamoDB Encryption Client yang lebih baru.

Saran: Sesuaikan time-to-live nilai dan ukuran cache.

Detail

Penyedia Terbaru dirancang untuk meningkatkan kinerja aplikasi yang menggunakan DynamoDB Encryption Client dengan mengizinkan penggunaan kembali secara terbatas materi kriptografis. Bila Anda mengonfigurasi Penyedia Terbaru untuk aplikasi Anda, Anda harus menyeimbangkan peningkatan kinerja dengan masalah keamanan yang timbul dari caching dan penggunaan kembali.

Dalam versi yang lebih baru dari DynamoDB Encryption Client, nilai time-to-live (TTL) menentukan berapa lama penyedia materi kriptografi cache (CMP) dapat digunakan. TTL juga menentukan seberapa sering Penyedia Terbaru memeriksa versi baru dari CMP.

Jika TTL terlalu lama, aplikasi Anda mungkin melanggar aturan bisnis atau standar keamanan Anda. Jika TTL terlalu singkat, panggilan berulang ke toko penyedia dapat menyebabkan toko penyedia Anda untuk membatasi permintaan dari aplikasi Anda dan aplikasi lain yang juga menggunakan akun layanan Anda. Untuk mengatasi masalah ini, sesuaikan TTL dan ukuran cache ke nilai yang memenuhi sasaran latensi dan ketersediaan Anda serta sesuai dengan standar keamanan Anda. Untuk detailnya, lihat Menetapkan time-to-live nilai.