Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS KMS gantungan kunci
Pustaka enkripsi sisi klien kami diubah namanya menjadi SDK Enkripsi AWS Database. Panduan pengembang ini masih memberikan informasi tentang Klien Enkripsi DynamoDB. |
AWS KMS Keyring menggunakan enkripsi simetris atau RSA asimetris AWS KMS keysuntuk menghasilkan, mengenkripsi, dan mendekripsi kunci data. AWS Key Management Service (AWS KMS) melindungi kunci KMS Anda dan melakukan operasi kriptografi dalam batas FIPS. Kami menyarankan Anda menggunakan AWS KMS keyring, atau keyring dengan properti keamanan serupa, bila memungkinkan.
Anda juga dapat menggunakan kunci KMS Multi-wilayah simetris dalam keyring. AWS KMS Untuk detail dan contoh selengkapnya menggunakan Multi-region AWS KMS keys, lihatMenggunakan Multi-region AWS KMS keys. Untuk informasi tentang kunci Multi-region, lihat Menggunakan kunci Multi-region di Panduan AWS Key Management Service Pengembang.
AWS KMS gantungan kunci dapat mencakup dua jenis kunci pembungkus:
-
Kunci generator: Menghasilkan kunci data plaintext dan mengenkripsinya. Sebuah keyring yang mengenkripsi data harus memiliki satu kunci generator.
-
Kunci tambahan: Mengenkripsi kunci data teks biasa yang dihasilkan oleh kunci generator. AWS KMS keyrings dapat memiliki nol atau lebih tombol tambahan.
Anda harus memiliki kunci generator untuk mengenkripsi catatan. Ketika AWS KMS keyring hanya memiliki satu AWS KMS kunci, kunci itu digunakan untuk menghasilkan dan mengenkripsi kunci data.
Seperti semua gantungan kunci, AWS KMS gantungan kunci dapat digunakan secara independen atau dalam multi-keyring dengan gantungan kunci lain dari jenis yang sama atau berbeda.
Topik
Izin yang diperlukan untuk keyrings AWS KMS
SDK Enkripsi AWS Database tidak memerlukan Akun AWS dan tidak bergantung pada apa pun Layanan AWS. Namun, untuk menggunakan AWS KMS keyring, Anda memerlukan izin minimum Akun AWS dan berikut pada keyring Anda. AWS KMS keys
-
Untuk mengenkripsi dengan AWS KMS keyring, Anda memerlukan GenerateDataKey izin kms: pada kunci generator. Anda memerlukan izin KMS: Encrypt pada semua kunci tambahan di keyring. AWS KMS
-
Untuk mendekripsi dengan AWS KMS keyring, Anda memerlukan izin KMS: Decrypt pada setidaknya satu kunci di keyring. AWS KMS
-
Untuk mengenkripsi dengan multi-keyring yang terdiri dari AWS KMS keyrings, Anda memerlukan GenerateDataKey izin kms: pada kunci generator di keyring generator. Anda memerlukan izin KMS: Encrypt pada semua kunci lain di semua keyrings lainnya. AWS KMS
-
Untuk mengenkripsi dengan AWS KMS keyring RSA asimetris, Anda tidak perlu kms: GenerateDataKey atau KMS:Encrypt karena Anda harus menentukan materi kunci publik yang ingin Anda gunakan untuk enkripsi saat Anda membuat keyring. Tidak ada AWS KMS panggilan yang dilakukan saat mengenkripsi dengan keyring ini. Untuk mendekripsi dengan AWS KMS keyring RSA asimetris, Anda memerlukan izin KMS: Dekripsi.
Untuk informasi selengkapnya tentang izin AWS KMS keys, lihat Otentikasi dan kontrol akses di Panduan AWS Key Management Service Pengembang.
Mengidentifikasi AWS KMS keys dalam AWS KMS keyring
AWS KMS Gantungan kunci dapat mencakup satu atau lebih AWS KMS keys. Untuk menentukan AWS KMS key dalam AWS KMS keyring, gunakan pengenal AWS KMS kunci yang didukung. Pengidentifikasi kunci yang dapat Anda gunakan untuk mengidentifikasi AWS KMS key dalam keyring bervariasi dengan operasi dan implementasi bahasa. Untuk detail tentang pengidentifikasi kunci AWS KMS key, lihat Pengidentifikasi Kunci di Panduan AWS Key Management Service Pengembang.
Sebagai praktik terbaik, gunakan pengenal kunci paling spesifik yang praktis untuk tugas Anda.
-
Untuk mengenkripsi dengan AWS KMS keyring, Anda dapat menggunakan ID kunci, ARN kunci, nama alias, atau alias ARN untuk mengenkripsi data.
catatan
Jika Anda menentukan nama alias atau alias ARN untuk kunci KMS dalam keyring enkripsi, operasi enkripsi menyimpan ARN kunci yang saat ini terkait dengan alias dalam metadata kunci data terenkripsi. Itu tidak menyimpan alias. Perubahan pada alias tidak memengaruhi kunci KMS yang digunakan untuk mendekripsi kunci data terenkripsi Anda.
-
Untuk mendekripsi dengan AWS KMS keyring, Anda harus menggunakan ARN kunci untuk mengidentifikasi. AWS KMS keys Lihat perinciannya di Memilih tombol pembungkus.
-
Dalam keyring yang digunakan untuk enkripsi dan dekripsi, Anda harus menggunakan ARN kunci untuk mengidentifikasi. AWS KMS keys
Saat mendekripsi, AWS Database Encryption SDK mencari AWS KMS keyring untuk kunci AWS KMS key yang dapat mendekripsi salah satu kunci data terenkripsi. Secara khusus, SDK Enkripsi AWS Database menggunakan pola berikut untuk setiap kunci data terenkripsi dalam deskripsi material.
-
AWS Database Encryption SDK mendapatkan ARN kunci AWS KMS key yang mengenkripsi kunci data dari metadata deskripsi material.
-
AWS Database Encryption SDK mencari keyring dekripsi untuk ARN dengan kunci AWS KMS key yang cocok.
-
Jika menemukan ARN AWS KMS key dengan kunci yang cocok di keyring, SDK Enkripsi AWS Database meminta AWS KMS untuk menggunakan kunci KMS untuk mendekripsi kunci data terenkripsi.
-
Jika tidak, ia melompat ke kunci data terenkripsi berikutnya, jika ada.
Membuat AWS KMS keyring
Anda dapat mengonfigurasi setiap AWS KMS keyring dengan satu AWS KMS key atau beberapa AWS KMS keys yang sama atau berbeda Akun AWS dan Wilayah AWS. AWS KMS key Harus berupa kunci enkripsi simetris (SYMMETRIC_DEFAULT
) atau kunci KMS RSA asimetris. Anda juga dapat menggunakan enkripsi simetris Multi-region KMS key. Anda dapat menggunakan satu atau lebih AWS KMS keyring dalam multi-keyring.
Anda dapat membuat AWS KMS keyring yang mengenkripsi dan mendekripsi data, atau Anda dapat membuat AWS KMS gantungan kunci khusus untuk mengenkripsi atau mendekripsi. Saat Anda membuat AWS KMS keyring untuk mengenkripsi data, Anda harus menentukan kunci generator, AWS KMS key yang digunakan untuk menghasilkan kunci data plaintext dan mengenkripsinya. Kunci data secara matematis tidak terkait dengan kunci KMS. Kemudian, jika Anda memilih, Anda dapat menentukan tambahan AWS KMS keys yang mengenkripsi kunci data plaintext yang sama. Untuk mendekripsi bidang terenkripsi yang dilindungi oleh keyring ini, keyring dekripsi yang Anda gunakan harus menyertakan setidaknya satu dari yang ditentukan dalam keyring, atau tidak. AWS KMS keys AWS KMS keys( AWS KMS Gantungan kunci tanpa AWS KMS keys dikenal sebagai gantungan kunci AWS KMS penemuan.)
Semua kunci pembungkus dalam keyring enkripsi atau multi-keyring harus dapat mengenkripsi kunci data. Jika ada kunci pembungkus gagal untuk mengenkripsi, metode enkripsi gagal. Akibatnya, penelepon harus memiliki izin yang diperlukan untuk semua kunci di keyring. Jika Anda menggunakan keyring penemuan untuk mengenkripsi data, sendiri atau dalam multi-keyring, operasi enkripsi gagal.
Contoh berikut menggunakan CreateAwsKmsMrkMultiKeyring
metode untuk membuat AWS KMS keyring dengan kunci KMS enkripsi simetris. CreateAwsKmsMrkMultiKeyring
Metode ini secara otomatis membuat AWS KMS klien dan memastikan bahwa keyring akan menangani kunci Single-region dan Multi-region dengan benar. Contoh-contoh ini menggunakan ARN kunci untuk mengidentifikasi kunci KMS. Untuk detailnya, lihat Mengidentifikasi AWS KMS keys dalam AWS KMS keyring
Contoh berikut menggunakan CreateAwsKmsRsaKeyring
metode untuk membuat AWS KMS keyring dengan kunci KMS RSA asimetris. Untuk membuat AWS KMS keyring RSA asimetris, berikan nilai berikut.
-
kmsClient
: buat AWS KMS klien baru -
kmsKeyID
: kunci ARN yang mengidentifikasi kunci KMS RSA asimetris Anda -
publicKey
: file PEM yang dikodekan UTF-8 yang mewakili kunci publik dari kunci yang Anda kirimkan ByteBufferkmsKeyID
-
encryptionAlgorithm
: algoritma enkripsi harusRSAES_OAEP_SHA_256
atauRSAES_OAEP_SHA_1
Menggunakan Multi-region AWS KMS keys
Anda dapat menggunakan Multi-region AWS KMS keys sebagai kunci pembungkus di SDK Enkripsi AWS Database. Jika Anda mengenkripsi dengan kunci Multi-wilayah dalam satu Wilayah AWS, Anda dapat mendekripsi menggunakan kunci Multi-wilayah terkait di yang berbeda. Wilayah AWS
Kunci KMS Multi-Region adalah satu AWS KMS keys set berbeda Wilayah AWS yang memiliki bahan kunci dan ID kunci yang sama. Anda dapat menggunakan kunci terkait ini seolah-olah mereka adalah kunci yang sama di Wilayah yang berbeda. Kunci Multi-Region mendukung pemulihan bencana umum dan skenario pencadangan yang memerlukan enkripsi di satu Wilayah dan mendekripsi di Wilayah yang berbeda tanpa melakukan panggilan Lintas wilayah. AWS KMS Untuk informasi tentang kunci Multi-region, lihat Menggunakan kunci Multi-region di Panduan AWS Key Management Service Pengembang.
Untuk mendukung kunci Multi-region, AWS Database Encryption SDK menyertakan keyrings AWS KMS Multi-Region-aware. CreateAwsKmsMrkMultiKeyring
Metode ini mendukung kunci Single-region dan Multi-region.
-
Untuk kunci Single-region, simbol Multi-region-aware berperilaku seperti keyring wilayah Tunggal. AWS KMS Ini mencoba untuk mendekripsi ciphertext hanya dengan kunci Single-region yang mengenkripsi data. Untuk menyederhanakan pengalaman AWS KMS keyring Anda, sebaiknya gunakan
CreateAwsKmsMrkMultiKeyring
metode ini setiap kali Anda menggunakan kunci KMS enkripsi simetris. -
Untuk kunci Multi-region, simbol Multi-Region-aware mencoba mendekripsi ciphertext dengan kunci Multi-region yang sama yang mengenkripsi data atau dengan kunci Multi-region terkait di Wilayah yang Anda tentukan.
Dalam gantungan kunci Multi-Region-aware yang mengambil lebih dari satu kunci KMS, Anda dapat menentukan beberapa kunci Single-region dan Multi-region. Namun, Anda hanya dapat menentukan satu kunci dari setiap set kunci Multi-wilayah terkait. Jika Anda menentukan lebih dari satu pengenal kunci dengan ID kunci yang sama, panggilan konstruktor gagal.
Contoh berikut membuat AWS KMS keyring dengan kunci KMS Multi-region. Contoh menentukan kunci Multi-region sebagai kunci generator dan kunci Single-region sebagai kunci anak.
Saat Anda menggunakan AWS KMS gantungan kunci Multi-wilayah, Anda dapat mendekripsi ciphertext dalam mode ketat atau mode temukan. Untuk mendekripsi ciphertext dalam mode ketat, buat instance simbol Multi-Region-aware dengan kunci ARN dari kunci Multi-region terkait di wilayah tempat Anda mendekripsi ciphertext. Jika Anda menentukan kunci ARN dari kunci Multi-wilayah terkait di Wilayah yang berbeda (misalnya, wilayah tempat catatan dienkripsi), simbol Multi-Region-aware akan membuat panggilan lintas wilayah untuk itu. AWS KMS key
Saat mendekripsi dalam mode ketat, simbol Multi-Region-aware memerlukan ARN kunci. Ini hanya menerima satu ARN kunci dari setiap set kunci Multi-wilayah terkait.
Anda juga dapat mendekripsi dalam mode penemuan dengan tombol AWS KMS Multi-wilayah. Saat mendekripsi dalam mode penemuan, Anda tidak menentukan apa pun. AWS KMS keys(Untuk informasi tentang gantungan kunci AWS KMS penemuan wilayah tunggal, lihatMenggunakan AWS KMS keyring penemuan.)
Jika Anda dienkripsi dengan kunci Multi-region, simbol Multi-Region-aware dalam mode penemuan akan mencoba mendekripsi dengan menggunakan kunci Multi-region terkait di Region lokal. Jika tidak ada; panggilan gagal. Dalam mode penemuan, SDK Enkripsi AWS Database tidak akan mencoba panggilan lintas wilayah untuk kunci Multi-wilayah yang digunakan untuk enkripsi.
Menggunakan AWS KMS keyring penemuan
Saat mendekripsi, ini adalah praktik terbaik untuk menentukan kunci pembungkus yang dapat digunakan SDK Enkripsi AWS Database. Untuk mengikuti praktik terbaik ini, gunakan keyring AWS KMS dekripsi yang membatasi kunci AWS KMS pembungkus ke kunci yang Anda tentukan. Namun, Anda juga dapat membuat keyring AWS KMS penemuan, yaitu AWS KMS keyring yang tidak menentukan kunci pembungkus apa pun.
AWS Database Encryption SDK menyediakan keyring AWS KMS penemuan standar dan keyring penemuan untuk AWS KMS kunci Multi-region. Untuk informasi tentang menggunakan kunci Multi-region dengan AWS Database Encryption SDK, lihat. Menggunakan Multi-region AWS KMS keys
Karena tidak menentukan kunci pembungkus apa pun, keyring penemuan tidak dapat mengenkripsi data. Jika Anda menggunakan keyring penemuan untuk mengenkripsi data, sendiri atau dalam multi-keyring, operasi enkripsi gagal.
Saat mendekripsi, keyring penemuan memungkinkan SDK Enkripsi AWS Database meminta AWS KMS untuk mendekripsi kunci data terenkripsi apa pun dengan menggunakan kunci yang dienkripsi, terlepas dari siapa AWS KMS key yang memiliki atau memiliki akses ke sana. AWS KMS key Panggilan hanya berhasil ketika penelepon memiliki kms:Decrypt
izin pada. AWS KMS key
penting
Jika Anda menyertakan keyring AWS KMS penemuan dalam multi-keyring dekripsi, keyring penemuan mengesampingkan semua batasan kunci KMS yang ditentukan oleh gantungan kunci lain di multi-keyring. Multi-keyring berperilaku seperti keyring yang paling tidak membatasi. Jika Anda menggunakan keyring penemuan untuk mengenkripsi data, sendiri atau dalam multi-keyring, operasi enkripsi gagal
AWS Database Encryption SDK menyediakan keyring AWS KMS penemuan untuk kenyamanan. Namun, kami menyarankan Anda menggunakan keyring yang lebih terbatas bila memungkinkan karena alasan berikut.
-
Keaslian — Keyring AWS KMS penemuan dapat menggunakan apa pun AWS KMS key yang digunakan untuk mengenkripsi kunci data dalam deskripsi materi, selama penelepon memiliki izin untuk menggunakannya untuk mendekripsi. AWS KMS key Ini mungkin bukan AWS KMS key yang ingin digunakan oleh penelepon. Misalnya, salah satu kunci data terenkripsi mungkin telah dienkripsi di bawah yang kurang aman AWS KMS key yang dapat digunakan siapa pun.
-
Latensi dan kinerja — Keyring AWS KMS penemuan mungkin terlihat lebih lambat daripada keyring lain karena SDK Enkripsi AWS Database mencoba mendekripsi semua kunci data terenkripsi, termasuk yang dienkripsi oleh AWS KMS keys di lain Akun AWS dan Wilayah, dan AWS KMS keys bahwa pemanggil tidak memiliki izin untuk digunakan untuk dekripsi.
Jika Anda menggunakan keyring penemuan, kami sarankan Anda menggunakan filter penemuan untuk membatasi kunci KMS yang dapat digunakan untuk kunci yang ditentukan Akun AWS dan partisi. Untuk bantuan menemukan ID akun dan partisi Anda, lihat Akun AWS Pengenal Anda dan format ARN di. Referensi Umum AWS
Contoh kode berikut membuat instance keyring penemuan dengan filter AWS KMS penemuan yang membatasi kunci KMS yang dapat digunakan SDK Enkripsi AWS Database untuk yang ada di partisi dan akun contoh. aws
111122223333
Sebelum menggunakan kode ini, ganti contoh Akun AWS dan nilai partisi dengan nilai yang valid untuk Anda Akun AWS dan partisi. Jika kunci KMS Anda berada di Wilayah China, gunakan nilai aws-cn
partisi. Jika kunci KMS Anda masuk AWS GovCloud (US) Regions, gunakan nilai aws-us-gov
partisi. Untuk yang lainnya Wilayah AWS, gunakan nilai aws
partisi.
Menggunakan AWS KMS keyring penemuan regional
Keyring penemuan AWS KMS regional adalah keyring yang tidak menentukan ARN kunci KMS. Sebaliknya, ini memungkinkan SDK Enkripsi AWS Database untuk mendekripsi hanya menggunakan kunci KMS pada khususnya. Wilayah AWS
Saat mendekripsi dengan keyring penemuan AWS KMS regional, SDK Enkripsi AWS Database mendekripsi kunci data terenkripsi yang dienkripsi di bawah kunci yang ditentukan. AWS KMS key Wilayah AWS Agar berhasil, penelepon harus memiliki kms:Decrypt
izin setidaknya satu dari yang AWS KMS keys ditentukan Wilayah AWS yang mengenkripsi kunci data.
Seperti keyrings penemuan lainnya, keyring penemuan regional tidak berpengaruh pada enkripsi. Ini hanya berfungsi saat mendekripsi bidang terenkripsi. Jika Anda menggunakan keyring penemuan regional dalam multi-keyring yang digunakan untuk mengenkripsi dan mendekripsi, ini hanya efektif saat mendekripsi. Jika Anda menggunakan keyring penemuan Multi-wilayah untuk mengenkripsi data, sendiri atau dalam multi-keyring, operasi enkripsi gagal.
penting
Jika Anda menyertakan keyring penemuan AWS KMS regional dalam multi-keyring dekripsi, keyring penemuan regional mengesampingkan semua batasan kunci KMS yang ditentukan oleh gantungan kunci lain di multi-keyring. Multi-keyring berperilaku seperti keyring yang paling tidak membatasi. Keyring AWS KMS penemuan tidak berpengaruh pada enkripsi saat digunakan sendiri atau dalam multi-keyring.
Keyring penemuan regional di SDK Enkripsi AWS Database mencoba mendekripsi hanya dengan kunci KMS di Wilayah yang ditentukan. Saat Anda menggunakan keyring penemuan, Anda mengonfigurasi Wilayah pada AWS KMS klien. Implementasi SDK Enkripsi AWS Database ini tidak memfilter kunci KMS menurut Wilayah, tetapi AWS KMS akan gagal dalam permintaan dekripsi untuk kunci KMS di luar Wilayah yang ditentukan.
Jika Anda menggunakan keyring penemuan, kami sarankan Anda menggunakan filter penemuan untuk membatasi kunci KMS yang digunakan dalam dekripsi ke kunci yang ditentukan dan partisi. Akun AWS
Misalnya, kode berikut membuat keyring penemuan AWS KMS regional dengan filter penemuan. Keyring ini membatasi SDK Enkripsi AWS Database ke kunci KMS di akun 111122223333 di Wilayah AS Barat (Oregon) (us-west-2).