Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konsep AWS KMS
Pelajari istilah dan konsep dasar yang digunakan dalam AWS Key Management Service (AWS KMS) dan bagaimana mereka bekerja sama untuk membantu melindungi data Anda.
Topik
- AWS KMS keys
- Kunci dan AWS kunci pelanggan
- Kunci KMS enkripsi simetris
- Tombol Asymmetric KMS
- Kunci HMAC KMS
- Kunci data
- Pasangan kunci data
- Alias
- Penyimpanan kunci kustom
- Operasi kriptografi
- Pengidentifikasi kunci () KeyId
- Material kunci
- Asal material kunci
- Spesifikasi kunci
- Penggunaan kunci
- Enkripsi amplop
- Konteks enkripsi
- Kebijakan kunci
- Pemberian Izin
- Mengaudit penggunaan kunci KMS
- Infrastruktur manajemen kunci
AWS KMS keys
AWS KMS keys(Kunci KMS) adalah sumber daya utama diAWS KMS. Anda dapat menggunakan kunci KMS untuk mengenkripsi, mendekripsi, dan mengenkripsi ulang data. Ini juga dapat menghasilkan kunci data yang dapat Anda gunakan di luar AWS KMS. Biasanya, Anda akan menggunakan kunci KMS enkripsi simetris, tetapi Anda dapat membuat dan menggunakan kunci KMS asimetris untuk enkripsi atau penandatanganan, dan membuat dan menggunakan kunci KMS HMAC untuk menghasilkan dan memverifikasi tag HMAC.
catatan
AWS KMSmengganti istilah customer master key (CMK) dengan AWS KMS keydan kunci KMS. Konsepnya tidak berubah. Untuk mencegah perubahan yang melanggar, AWS KMS adalah menjaga beberapa variasi dari istilah ini.
An AWS KMS keyadalah representasi logis dari kunci kriptografi. Kunci KMS berisi metadata, seperti ID kunci, spesifikasi kunci, penggunaan kunci, tanggal pembuatan, deskripsi, dan status kunci. Yang paling penting, ini berisi referensi ke bahan utama yang digunakan ketika Anda melakukan operasi kriptografi dengan kunci KMS.
Anda dapat membuat kunci KMS dengan materi kunci kriptografi yang dihasilkan dalam modul keamanan perangkat keras yang divalidasi AWS KMS FIPS
Secara default, AWS KMS membuat materi kunci untuk kunci KMS. Anda tidak dapat mengekstrak, mengekspor, melihat, atau mengelola material kunci ini. Satu-satunya pengecualian adalah kunci publik dari asymmetric key pair, yang dapat Anda ekspor untuk digunakan di luar. AWS Selain itu, Anda tidak dapat menghapus materi kunci ini; Anda harus menghapus kunci KMS. Namun, Anda dapat mengimpor materi kunci Anda sendiri ke dalam kunci KMS, atau menggunakan penyimpanan kunci khusus untuk membuat kunci KMS yang menggunakan materi kunci di AWS CloudHSM klaster Anda, atau materi kunci di pengelola kunci eksternal yang Anda miliki dan kelola di luar. AWS
AWS KMSjuga mendukung kunci Multi-wilayah, yang memungkinkan Anda mengenkripsi data dalam satu Wilayah AWS dan mendekripsi dalam yang berbeda. Wilayah AWS
Untuk informasi tentang membuat dan mengelola kunci KMS, lihatMengelola kunci. Untuk informasi tentang penggunaan kunci KMS, lihat Referensi AWS Key Management Service API.
Kunci dan AWS kunci pelanggan
Kunci KMS yang Anda buat adalah kunci yang dikelola pelanggan. Layanan AWSyang menggunakan kunci KMS untuk mengenkripsi sumber daya layanan Anda sering membuat kunci untuk Anda. Kunci KMS yang Layanan AWS dibuat di AWS akun Anda adalah Kunci yang dikelola AWS. Kunci KMS yang Layanan AWS dibuat di akun layanan adalah Kunci milik AWS.
Jenis kunci KMS | Dapat melihat metadata kunci KMS | Dapat mengelola kunci KMS | Digunakan hanya untuk Akun AWS saya | Rotasi otomatis | Penetapan Harga |
---|---|---|---|---|---|
Kunci yang dikelola pelanggan | Ya | Ya | Ya | Opsional. Setiap tahun (sekitar 365 hari) | Biaya bulanan (pro-rated per jam) Biaya per penggunaan |
Kunci yang dikelola AWS | Ya | Tidak | Ya | Wajib. Setiap tahun (sekitar 365 hari) | Tidak ada biaya bulanan Biaya per penggunaan (beberapa Layanan AWS membayar biaya ini untuk Anda) |
Kunci milik AWS | Tidak | Tidak | Tidak | Bervariasi | Tidak ada biaya |
AWSlayanan yang terintegrasi dengan AWS KMS berbeda dalam dukungan mereka untuk kunci KMS. Beberapa AWS layanan mengenkripsi data Anda secara default dengan Kunci milik AWS atau fileKunci yang dikelola AWS. Beberapa AWS layanan mendukung kunci yang dikelola pelanggan. AWSLayanan lain mendukung semua jenis kunci KMS untuk memungkinkan Anda kemudahanKunci milik AWS, visibilitasKunci yang dikelola AWS, atau kontrol kunci yang dikelola pelanggan. Untuk informasi mendetail tentang opsi enkripsi yang ditawarkan layanan AWS, lihat topik Enkripsi Saat Istirahat dalam panduan pengguna atau panduan developer untuk layanan.
Kunci yang dikelola pelanggan
Kunci KMS yang Anda buat adalah kunci yang dikelola pelanggan. Kunci yang dikelola pelanggan adalah kunci KMS Akun AWS yang Anda buat, miliki, dan kelola. Anda memiliki kontrol penuh atas kunci KMS ini, termasuk membuat dan memelihara kebijakan utama mereka, kebijakan IAM, dan hibah, mengaktifkan danmenonaktifkannya, memutar materi kriptografi mereka, menambahkan tag, membuat alias yang merujuk ke kunci KMS, dan menjadwalkan kunci KMS untuk dihapus.
Kunci terkelola pelanggan muncul di halaman kunci terkelola Pelanggan AWS Management Console untukAWS KMS. Untuk mengidentifikasi kunci yang dikelola pelanggan secara definitif, gunakan operasi. DescribeKey Untuk kunci yang dikelola pelanggan, nilai KeyManager
bidang DescribeKey
respons adalahCUSTOMER
.
Anda dapat menggunakan kunci yang dikelola pelanggan Anda dalam operasi kriptografi dan penggunaan audit di AWS CloudTrail log. Selain itu, banyak AWSlayanan yang terintegrasi dengan AWS KMS memungkinkan Anda menentukan kunci yang dikelola pelanggan untuk melindungi data yang disimpan dan dikelola untuk Anda.
Kunci yang dikelola pelanggan dikenakan biaya bulanan dan biaya untuk penggunaan melebihi tingkat gratis. Biaya tersebut dihitung terhadap kuota AWS KMS untuk akun Anda. Untuk detailnya, lihat Harga AWS Key Management Service
Kunci yang dikelola AWS
Kunci yang dikelola AWSadalah kunci KMS di akun Anda yang dibuat, dikelola, dan digunakan atas nama Anda oleh AWSlayanan yang terintegrasi dengannya AWS KMS
Beberapa AWS layanan memungkinkan Anda memilih Kunci yang dikelola AWS atau kunci yang dikelola pelanggan untuk melindungi sumber daya Anda dalam layanan itu. Secara umum, kecuali Anda diminta untuk mengontrol kunci enkripsi yang melindungi sumber daya Anda, an Kunci yang dikelola AWS adalah pilihan yang baik. Anda tidak perlu membuat atau mempertahankan kunci atau kebijakan utamanya, dan tidak pernah ada biaya bulanan untuk sebuahKunci yang dikelola AWS.
Anda memiliki izin untuk melihat akun Anda, melihat kebijakan utama mereka, dan mengaudit penggunaannya di AWS CloudTrail log. Kunci yang dikelola AWS Namun, Anda tidak dapat mengubah properti apa punKunci yang dikelola AWS, memutarnya, mengubah kebijakan utamanya, atau menjadwalkannya untuk dihapus. Dan, Anda tidak dapat menggunakan Kunci yang dikelola AWS dalam operasi kriptografi secara langsung; layanan yang membuatnya menggunakannya atas nama Anda.
Kunci yang dikelola AWSmuncul di Kunci yang dikelola AWShalaman AWS Management Console forAWS KMS. Anda juga dapat mengidentifikasi Kunci yang dikelola AWS dengan alias mereka, yang memiliki formataws/
, sepertiservice-name
aws/redshift
. Untuk mengidentifikasi secara definitifKunci yang dikelola AWS, gunakan operasi. DescribeKey SebabKunci yang dikelola AWS, nilai KeyManager
bidang DescribeKey
responsnya adalahAWS
.
Semua Kunci yang dikelola AWS secara otomatis diputar setiap tahun. Anda tidak dapat mengubah jadwal rotasi ini.
catatan
Pada Mei 2022, AWS KMS mengubah jadwal rotasi Kunci yang dikelola AWS dari setiap tiga tahun (sekitar 1.095 hari) menjadi setiap tahun (sekitar 365 hari).
Kunci yang dikelola AWS baru secara otomatis dirotasi satu tahun setelah dibuat, dan kira-kira setiap tahun setelahnya.
Kunci yang dikelola AWS yang ada secara otomatis dirotasi satu tahun setelah rotasi terbarunya, dan setiap tahun setelahnya.
Tidak ada biaya bulanan untukKunci yang dikelola AWS. Penggunaan CMK tersebut dapat dikenakan biaya jika melebihi dari tingkat gratis, tetapi beberapa layanan AWS menutup biaya ini untuk Anda. Untuk detail selengkapnya, lihat topik Enkripsi Tidak Aktif di panduan pengguna atau panduan developer untuk layanan tersebut. Untuk detail selengkapnya, lihat Harga AWS Key Management Service
Kunci yang dikelola AWSjangan dihitung terhadap kuota sumber daya pada jumlah kunci KMS di setiap Wilayah akun Anda. Tetapi ketika digunakan atas nama prinsipal di akun Anda, kunci KMS dihitung terhadap kuota permintaan. Untuk detailnya, lihat Kuota.
Kunci milik AWS
Kunci milik AWSadalah kumpulan kunci KMS yang dimiliki dan dikelola AWS layanan untuk digunakan dalam beberapa. Akun AWS Meskipun tidak Kunci milik AWS ada dalam AndaAkun AWS, AWS layanan dapat menggunakan Kunci milik AWS untuk melindungi sumber daya di akun Anda.
Beberapa AWS layanan memungkinkan Anda memilih Kunci milik AWS atau kunci yang dikelola pelanggan. Secara umum, kecuali Anda diminta untuk mengaudit atau mengontrol kunci enkripsi yang melindungi sumber daya Anda, a Kunci milik AWS adalah pilihan yang baik. Kunci milik AWSbenar-benar gratis (tidak ada biaya bulanan atau biaya penggunaan), mereka tidak dihitung terhadap AWS KMSkuota untuk akun Anda, dan mereka mudah digunakan. Anda tidak perlu membuat atau mempertahankan kunci atau kebijakan utamanya.
Rotasi Kunci milik AWS bervariasi antar layanan. Untuk informasi tentang rotasi tertentuKunci milik AWS, lihat topik Enkripsi saat Istirahat di panduan pengguna atau panduan pengembang untuk layanan.
Kunci KMS enkripsi simetris
Saat Anda membuatAWS KMS key, secara default, Anda mendapatkan kunci KMS untuk enkripsi simetris. Ini adalah jenis kunci KMS dasar dan paling umum digunakan.
DalamAWS KMS, kunci KMS enkripsi simetris mewakili kunci enkripsi AES-GCM 256-bit, kecuali di Wilayah China, di mana ia mewakili kunci enkripsi SM4 128-bit. Bahan kunci simetris tidak pernah dibiarkan tidak AWS KMS terenkripsi. Untuk menggunakan kunci KMS enkripsi simetris, Anda harus menelepon. AWS KMS Kunci enkripsi simetris digunakan dalam enkripsi simetris, di mana kunci yang sama digunakan untuk enkripsi dan dekripsi. Kecuali tugas Anda secara eksplisit memerlukan enkripsi asimetris, kunci KMS enkripsi simetris, yang tidak pernah dibiarkan AWS KMS tidak terenkripsi, adalah pilihan yang baik.
AWSlayanan yang terintegrasi dengan
Secara teknis, spesifikasi kunci untuk kunci simetris adalah SYMMETRIC_DEFAULT, penggunaan kuncinya adalah ENCRYPT_DECRYPT, dan algoritma enkripsi adalah SYMMETRIC_DEFAULT. Untuk detailnya, lihat Spesifikasi kunci SYMMETRIC_DEFAULT.
Anda dapat menggunakan kunci KMS enkripsi simetris AWS KMS untuk mengenkripsi, mendekripsi, dan mengenkripsi ulang data, dan menghasilkan kunci data dan pasangan kunci data. Anda dapat membuat kunci KMS enkripsi simetris multi-wilayah, mengimpor materi kunci Anda sendiri ke kunci KMS enkripsi simetris, dan membuat kunci KMS enkripsi simetris di toko kunci khusus. Untuk tabel yang membandingkan operasi yang dapat Anda lakukan pada kunci KMS dari berbagai jenis, lihatReferensi tipe kunci.
Tombol Asymmetric KMS
Anda dapat membuat kunci KMS asimetris di. AWS KMS Kunci KMS asimetris mewakili kunci publik yang terkait secara matematis dan private key pair. Kunci privat tidak pernah membiarkan AWS KMS tidak terenkripsi. Untuk menggunakan kunci privat, Anda harus memanggil AWS KMS. Anda dapat menggunakan kunci publik di dalam AWS KMS dengan memanggil operasi AWS KMS API, atau Anda dapat mengunduh kunci publik dan menggunakannya di luarAWS KMS. Anda juga dapat membuat kunci KMS asimetris Multi-wilayah.
Anda dapat membuat kunci KMS asimetris yang mewakili pasangan kunci RSA atau pasangan kunci SM2 (hanya Wilayah China) untuk enkripsi atau penandatanganan dan verifikasi kunci publik, atau pasangan kunci kurva elips untuk penandatanganan dan verifikasi.
Untuk informasi selengkapnya tentang membuat dan menggunakan kunci KMS asimetris, lihat. Kunci asimetris di AWS KMS
Kunci HMAC KMS
Kunci KMS HMAC mewakili kunci simetris dengan panjang yang bervariasi yang digunakan untuk menghasilkan dan memverifikasi kode otentikasi pesan berbasis hash (HMAC). Materi kunci untuk kunci HMAC tidak pernah dibiarkan tidak AWS KMS terenkripsi. Untuk menggunakan kunci HMAC, panggil operasi GenerateMac
atau VerifyMac
API.
Anda juga dapat membuat kunci KMS HMAC Multi-wilayah.
Untuk informasi selengkapnya tentang membuat dan menggunakan kunci HMAC KMS, lihat. Kunci HMAC di AWS KMS
Kunci data
Kunci data adalah kunci simetris yang dapat Anda gunakan untuk mengenkripsi data, termasuk sejumlah besar data dan kunci enkripsi data lainnya. Tidak seperti kunci KMS simetris, yang tidak dapat diunduh, kunci data dikembalikan kepada Anda untuk digunakan di luar. AWS KMS
Saat AWS KMS menghasilkan kunci data, ia mengembalikan kunci data plaintext untuk segera digunakan (opsional) dan salinan kunci data terenkripsi yang dapat Anda simpan dengan aman bersama data. Ketika Anda siap untuk mendekripsi data, pertama-tama Anda meminta AWS KMS untuk mendekripsi kunci data terenkripsi.
AWS KMSmenghasilkan, mengenkripsi, dan mendekripsi kunci data. Namun, AWS KMS tidak menyimpan, mengelola, atau melacak kunci data Anda, atau melakukan operasi kriptografi dengan kunci data. Anda harus menggunakan dan mengelola kunci data di luar AWS KMS. Untuk bantuan menggunakan kunci data dengan aman, lihat. AWS Encryption SDK
Membuat kunci data
Untuk membuat kunci data, panggil GenerateDataKeyoperasi. AWS KMSmenghasilkan kunci data. Kemudian mengenkripsi salinan kunci data di bawah kunci KMS enkripsi simetris yang Anda tentukan. Operasi mengembalikan salinan plaintext dari kunci data dan salinan kunci data yang dienkripsi di bawah kunci KMS. Gambar berikut menunjukkan operasi ini.
![Menghasilkan kunci data](images/generate-data-key.png)
AWS KMSjuga mendukung GenerateDataKeyWithoutPlaintextoperasi, yang mengembalikan hanya kunci data terenkripsi. Jika Anda perlu menggunakan kunci data, minta AWS KMS untuk mendekripsinya.
Mengenkripsi data dengan kunci data
AWS KMS tidak dapat menggunakan kunci data untuk mengenkripsi data. Tetapi Anda bisa menggunakan kunci data di luar AWS KMS, seperti menggunakan OpenSSL atau pustaka kriptografi seperti AWS Encryption SDK.
Setelah menggunakan kunci data plaintext untuk mengenkripsi data, hapus kunci data dari memori sesegera mungkin. Anda dapat dengan aman menyimpan kunci data terenkripsi dengan data terenkripsi sehingga tersedia untuk mendekripsi data.
![Mengenkripsi data pengguna di luar AWS KMS](images/encrypt-with-data-key.png)
Mendekripsi data dengan kunci data
Untuk mendekripsi data Anda, teruskan kunci data terenkripsi ke operasi Dekripsi. AWS KMSmenggunakan kunci KMS Anda untuk mendekripsi kunci data dan kemudian mengembalikan kunci data plaintext. Gunakan kunci data plaintext untuk mendekripsi data Anda kemudian hapus kunci data plaintext dari memori sesegera mungkin.
Diagram berikut menunjukkan cara menggunakan operasi Decrypt
untuk mendekripsi kunci data terenkripsi.
![Mendekripsi kunci data](images/decrypt.png)
Bagaimana kunci KMS yang tidak dapat digunakan memengaruhi kunci data
Ketika kunci KMS menjadi tidak dapat digunakan, efeknya hampir seketika (tergantung pada konsistensi akhirnya). Status kunci dari perubahan kunci KMS untuk mencerminkan kondisi barunya, dan semua permintaan untuk menggunakan kunci KMS dalam operasi kriptografi gagal.
Namun, efek pada kunci data yang dienkripsi oleh kunci KMS, dan pada data yang dienkripsi oleh kunci data, ditunda hingga kunci KMS digunakan lagi, seperti untuk mendekripsi kunci data.
Kunci KMS dapat menjadi tidak dapat digunakan karena berbagai alasan, termasuk tindakan berikut yang mungkin Anda lakukan.
-
Menghapus materi kunci dari kunci KMS dengan bahan kunci impor, atau membiarkan bahan kunci yang diimpor kedaluwarsa.
-
Memutuskan sambungan penyimpanan AWS CloudHSM kunci yang menghosting kunci KMS, atau menghapus kunci dari AWS CloudHSM cluster yang berfungsi sebagai bahan kunci untuk kunci KMS.
-
Memutuskan sambungan penyimpanan kunci eksternal yang menghosting kunci KMS, atau tindakan lain yang mengganggu permintaan enkripsi dan dekripsi ke proxy penyimpanan kunci eksternal, termasuk menghapus kunci eksternal dari pengelola kunci eksternalnya.
Efek ini sangat penting bagi banyak orang Layanan AWS yang menggunakan kunci data untuk melindungi sumber daya yang dikelola layanan. Contoh berikut menggunakan Amazon Elastic Block Store (Amazon EBS) dan Amazon Elastic Compute Cloud (Amazon EC2). Berbeda Layanan AWS menggunakan kunci data dengan cara yang berbeda. Untuk detailnya, lihat bagian Perlindungan data pada bagian Keamanan untuk bagianLayanan AWS.
Misalnya, pertimbangkan skenario ini:
-
Anda membuat volume EBS terenkripsi dan menentukan kunci KMS untuk melindunginya. Amazon EBS meminta AWS KMS untuk menggunakan kunci KMS Anda untuk menghasilkan kunci data terenkripsi untuk volume. Amazon EBS menyimpan kunci data terenkripsi dengan metadata volume.
-
Saat Anda melampirkan volume EBS ke instans EC2, Amazon EC2 menggunakan kunci KMS Anda untuk mendekripsi kunci data terenkripsi volume EBS. Amazon EC2 menggunakan kunci data di perangkat keras Nitro, yang bertanggung jawab untuk mengenkripsi semua disk I/O ke volume EBS. Kunci data tetap ada di perangkat keras Nitro sementara volume EBS dilampirkan ke instans EC2.
-
Anda melakukan tindakan yang membuat kunci KMS tidak dapat digunakan. Ini tidak memiliki efek langsung pada instans EC2 atau volume EBS. Amazon EC2 menggunakan kunci data—bukan kunci KMS—untuk mengenkripsi semua disk I/O saat volume dilampirkan ke instans.
-
Namun, saat volume EBS terenkripsi dicopot dari instans EC2, Amazon EBS menghapus kunci data dari perangkat keras Nitro. Pada saat volume EBS yang terenkripsi dilampirkan ke instans EC2, pelampiran akan gagal karena Amazon EBS tidak dapat menggunakan kunci KMS untuk mendekripsi kunci data terenkripsi dari volume tersebut. Untuk menggunakan volume EBS lagi, Anda harus membuat kunci KMS dapat digunakan lagi.
Pasangan kunci data
Pasangan kunci data adalah kunci data asimetris yang terdiri dari kunci publik dan kunci pribadi yang terkait secara matematis. Mereka dirancang untuk digunakan dalam enkripsi sisi klien dan dekripsi atau penandatanganan dan verifikasi di luar. AWS KMS
Berbeda dengan pasangan kunci data yang dihasilkan alat seperti OpenSSLAWS KMS, melindungi kunci pribadi di setiap data key pair di bawah kunci KMS enkripsi simetris yang Anda tentukan. AWS KMS Namun, AWS KMS tidak menyimpan, mengelola, atau melacak pasangan kunci data Anda, atau melakukan operasi kriptografi dengan pasangan kunci data. Anda harus menggunakan dan mengelola pasangan kunci data di luar AWS KMS.
AWS KMS mendukung jenis pasangan kunci data berikut:
-
Pasangan kunci RSA: RSA_2048, RSA_3072, dan RSA_4096
-
Pasangan kunci kurva elips: ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, dan ECC_SECG_P256K1
-
Pasangan kunci SM (hanya Wilayah China): SM2
Jenis pasangan kunci data yang Anda pilih biasanya bergantung pada kasus penggunaan atau persyaratan peraturan Anda. Sebagian besar sertifikat memerlukan kunci RSA. Kunci kurva elips sering digunakan untuk tanda tangan digital. Kunci ECC_SECG_P256K1 umumnya digunakan untuk cryptocurrency. AWS KMSmerekomendasikan agar Anda menggunakan pasangan kunci ECC untuk menandatangani, dan menggunakan pasangan kunci RSA untuk enkripsi atau penandatanganan, tetapi tidak keduanya. Namun, AWS KMS tidak dapat menerapkan pembatasan apa pun pada penggunaan pasangan kunci data di luar AWS KMS.
Membuat pasangan kunci data
Untuk membuat data key pair, panggil GenerateDataKeyPairor GenerateDataKeyPairWithoutPlaintextoperations. Tentukan kunci KMS enkripsi simetris yang ingin Anda gunakan untuk mengenkripsi kunci pribadi.
GenerateDataKeyPair
mengembalikan kunci publik plaintext, kunci privat plaintext, dan kunci privat terenkripsi. Gunakan operasi ini ketika Anda memerlukan kunci privat plaintext segera, seperti untuk menghasilkan tanda tangan digital.
GenerateDataKeyPairWithoutPlaintext
mengembalikan kunci publik plaintext dan kunci privat terenkripsi, tetapi bukan kunci privat plaintext. Gunakan operasi ini ketika Anda tidak memerlukan kunci privat plaintext segera, seperti ketika Anda mengenkripsi dengan kunci publik. Kemudian, ketika Anda membutuhkan kunci privat plaintext untuk mendekripsi data, Anda dapat memanggil operasi Decrypt.
Gambar berikut menunjukkan operasi GenerateDataKeyPair
. Operasi GenerateDataKeyPairWithoutPlaintext
menghilangkan kunci privat plaintext.
![Menghasilkan pasangan kunci data](images/generate-data-key-pair.png)
Mengenkripsi data dengan pasangan kunci data
Ketika Anda mengenkripsi dengan pasangan kunci data, Anda menggunakan kunci publik pasangan untuk mengenkripsi data dan kunci privat pasangan yang sama untuk mendekripsi data. Biasanya, Anda menggunakan pasangan kunci data ketika banyak pihak perlu mengenkripsi data yang hanya pihak dengan kunci pribadi dapat mendekripsi.
Pihak dengan kunci publik menggunakan kunci tersebut untuk mengenkripsi data, seperti yang ditunjukkan dalam diagram berikut.
![Mengenkripsi data pengguna dengan kunci publik dari pasangan kunci data di luar AWS KMS](images/encrypt-with-data-key-pair.png)
Mendekripsi data dengan pasangan kunci data
Untuk mendekripsi data Anda, gunakan kunci privat dalam pasangan kunci data. Agar operasi berhasil, kunci publik dan privat harus berasal dari pasangan kunci data yang sama, dan Anda harus menggunakan algoritme enkripsi yang sama.
Untuk mendekripsi kunci privat terenkripsi, berikan kunci untuk operasi Decrypt. Gunakan kunci privat plaintext untuk mendekripsi data. Kemudian, hapus kunci privat plaintext dari memori sesegera mungkin.
Diagram berikut menunjukkan cara menggunakan kunci privat dalam pasangan kunci data untuk mendekripsi ciphertext.
![Mendekripsi data dengan kunci privat dalam pasangan kunci data di luar AWS KMS.](images/decrypt-with-data-key-pair.png)
Menandatangani pesan dengan pasangan kunci data
Untuk menghasilkan tanda tangan kriptografi untuk suatu pesan, gunakan kunci privat dalam pasangan kunci data. Siapa pun yang memiliki kunci publik dapat menggunakannya untuk memverifikasi bahwa pesan telah ditandatangani dengan kunci privat Anda dan bahwa pesan tersebut tidak berubah sejak ditandatangani.
Jika Anda mengenkripsi kunci pribadi Anda, teruskan kunci pribadi terenkripsi ke operasi Dekripsi. AWS KMSmenggunakan kunci KMS Anda untuk mendekripsi kunci data dan kemudian mengembalikan kunci pribadi plaintext. Gunakan kunci privat plaintext untuk menghasilkan tanda tangan. Kemudian, hapus kunci privat plaintext dari memori sesegera mungkin.
Untuk menandatangani pesan, buat intisari pesan menggunakan fungsi hash kriptografi, seperti perintah dgst
Diagram berikut menunjukkan cara menggunakan kunci privat dalam pasangan kunci data untuk menandatangani pesan.
![Menghasilkan tanda tangan kriptografi dengan kunci privat dalam pasangan kunci data di luar AWS KMS.](images/sign-with-data-key-pair.png)
Memverifikasi tanda tangan dengan pasangan kunci data
Siapa pun yang memiliki kunci publik dalam pasangan kunci data Anda dapat menggunakannya untuk memverifikasi tanda tangan yang Anda hasilkan dengan kunci privat Anda. Verifikasi mengonfirmasi bahwa pengguna yang diotorisasi menandatangani pesan tersebut dengan kunci privat dan algoritme penandatanganan yang ditentukan, dan pesan tersebut tidak berubah sejak ditandatangani.
Agar berhasil, pihak yang memverifikasi tanda tangan harus menghasilkan jenis intisari yang sama, menggunakan algoritme yang sama, dan menggunakan kunci publik yang sesuai dengan kunci privat yang digunakan untuk menandatangani pesan.
Diagram berikut menunjukkan cara menggunakan kunci publik dalam pasangan kunci data untuk memverifikasi pesan.
![Memverifikasi tanda tangan kriptografi dengan kunci publik dalam pasangan kunci data di luar AWS KMS.](images/verify-with-data-key-pair.png)
Alias
Gunakan alias sebagai nama ramah untuk kunci KMS. Misalnya, Anda dapat merujuk ke kunci KMS sebagai kunci uji, bukan 1234abcd-12ab-34cd-56ef-1234567890ab.
Alias membuatnya lebih mudah untuk mengidentifikasi kunci KMS di. AWS Management Console Anda dapat menggunakan alias untuk mengidentifikasi kunci KMS dalam beberapa AWS KMS operasi, termasuk operasi kriptografi. Dalam aplikasi, Anda dapat menggunakan satu alias untuk merujuk ke kunci KMS yang berbeda di masing-masing. Wilayah AWS
Anda juga dapat mengizinkan dan menolak akses ke kunci KMS berdasarkan aliasnya tanpa mengedit kebijakan atau mengelola hibah. Fitur ini adalah bagian dari dukungan AWS KMS untuk kontrol akses berbasis atribut (ABAC). Untuk rincian selengkapnya, lihat ABAC untuk AWS KMS.
DalamAWS KMS, alias adalah sumber daya independen, bukan properti kunci KMS. Dengan demikian, Anda dapat menambahkan, mengubah, dan menghapus alias tanpa mempengaruhi kunci KMS terkait.
penting
Jangan sertakan informasi rahasia atau sensitif dalam nama alias. Alias dapat muncul dalam plaintext di CloudTrail log dan output lainnya.
Pelajari lebih lanjut:
-
Untuk informasi mendetail tentang alias, lihat Menggunakan alias.
-
Untuk informasi tentang format pengidentifikasi kunci, termasuk alias, lihat Pengidentifikasi kunci () KeyId.
-
Untuk bantuan menemukan alias yang terkait dengan kunci KMS, lihat Menemukan nama alias dan ARN alias
-
Untuk contoh membuat dan mengelola alias dalam beberapa bahasa pemrograman, lihat Bekerja dengan alias.
Penyimpanan kunci kustom
Toko kunci khusus adalah AWS KMS sumber daya yang didukung oleh manajer kunci di luar AWS KMS yang Anda miliki dan kelola. Ketika Anda menggunakan kunci KMS di toko kunci khusus untuk operasi kriptografi, operasi kriptografi sebenarnya dilakukan di manajer kunci Anda menggunakan kunci kriptografinya.
AWS KMSmendukung penyimpanan AWS CloudHSM kunci yang didukung oleh AWS CloudHSM cluster dan penyimpanan kunci eksternal yang didukung oleh manajer kunci eksternal di luarAWS.
Untuk informasi selengkapnya, lihat Penyimpanan kunci kustom.
Operasi kriptografi
DalamAWS KMS, operasi kriptografi adalah operasi API yang menggunakan kunci KMS untuk melindungi data. Karena kunci KMS tetap berada di dalamAWS KMS, Anda harus memanggil AWS KMS untuk menggunakan kunci KMS dalam operasi kriptografi.
Untuk melakukan operasi kriptografi dengan kunci KMS, gunakan AWS SDK, AWS Command Line Interface (AWS CLI), atau. AWS Tools for PowerShell Anda tidak dapat melakukan operasi kriptografi di konsol AWS KMS. Untuk contoh memanggil operasi kriptografi dalam beberapa bahasa pemrograman, lihat Memprogram API AWS KMS.
Tabel berikut mencantumkan operasi kriptografis AWS KMS. Ini juga menunjukkan jenis kunci dan persyaratan penggunaan kunci untuk kunci KMS yang digunakan dalam operasi.
Operasi | Tipe Kunci | Penggunaan kunci |
---|---|---|
Dekripsi | Simetris atau asimetris | ENCRYPT_DECRYPT |
Enkripsi | Simetris atau asimetris | ENCRYPT_DECRYPT |
GenerateDataKey | Simetris | ENCRYPT_DECRYPT |
GenerateDataKeyPair | Simetris [1] Tidak didukung pada kunci KMS di toko kunci khusus. |
ENCRYPT_DECRYPT |
GenerateDataKeyPairWithoutPlaintext | Simetris [1] Tidak didukung pada kunci KMS di toko kunci khusus. |
ENCRYPT_DECRYPT |
GenerateDataKeyWithoutPlaintext | Simetris | ENCRYPT_DECRYPT |
GenerateMac | HMAC | GENERATE_VERIFY_MAC |
GenerateRandom | N/A. Operasi ini tidak menggunakan kunci KMS. | N/A |
ReEncrypt | Simetris atau asimetris | ENCRYPT_DECRYPT |
Tanda | Asimetris | SIGN_VERIFY |
Verifikasi | Asimetris | SIGN_VERIFY |
VerifyMac | HMAC | GENERATE_VERIFY_MAC |
[1] Menghasilkan data key pair asimetris yang dilindungi oleh kunci KMS enkripsi simetris.
Untuk informasi tentang izin untuk operasi kriptografi, lihat AWS KMS izin.
Untuk membuat AWS KMS responsif dan sangat fungsional untuk semua pengguna, AWS KMS menetapkan kuota pada jumlah operasi kriptografi yang disebut dalam setiap detik. Untuk detailnya, lihat Kuota bersama untuk operasi kriptografis.
Pengidentifikasi kunci () KeyId
Pengidentifikasi kunci bertindak seperti nama untuk kunci KMS Anda. Mereka membantu Anda mengenali kunci KMS Anda di konsol. Anda menggunakannya untuk menunjukkan kunci KMS mana yang ingin Anda gunakan dalam operasi AWS KMS API, kebijakan utama, kebijakan IAM, dan hibah. Nilai pengidentifikasi kunci sama sekali tidak terkait dengan materi kunci yang terkait dengan kunci KMS.
AWS KMS menentukan beberapa pengidentifikasi kunci. Ketika Anda membuat kunci KMS, AWS KMS menghasilkan kunci ARN dan kunci ID, yang merupakan properti dari kunci KMS. Saat Anda membuat alias, AWS KMS menghasilkan alias ARN berdasarkan nama alias yang Anda tentukan. Anda dapat melihat pengidentifikasi kunci dan alias dalam AWS Management Console dan dalam AWS KMS API.
Di AWS KMS konsol, Anda dapat melihat dan memfilter kunci KMS berdasarkan ARN kunci mereka, ID kunci, atau nama alias, dan mengurutkan berdasarkan ID kunci dan nama alias. Untuk bantuan menemukan pengenal kunci di konsol, lihatMenemukan ID kunci dan kunci ARN.
Di AWS KMS API, parameter yang Anda gunakan untuk mengidentifikasi kunci KMS diberi nama KeyId
atau variasi, seperti TargetKeyId
atauDestinationKeyId
. Namun, nilai-nilai parameter tersebut tidak terbatas pada ID kunci. Beberapa dapat mengambil pengidentifikasi kunci yang valid. Untuk informasi tentang nilai untuk setiap parameter, lihat deskripsi parameter di Referensi AWS Key Management Service API.
catatan
Saat menggunakan AWS KMS API, hati-hati terkait pengidentifikasi kunci yang Anda gunakan. API yang berbeda memerlukan pengidentifikasi kunci yang berbeda. Secara umum, gunakan pengenal kunci paling lengkap dan praktis untuk tugas Anda.
AWS KMS mendukung pengidentifikasi kunci berikut.
- ARN kunci
-
Kunci ARN adalah Nama Sumber Daya Amazon (ARN) dari kunci KMS. Ini adalah pengidentifikasi unik dan sepenuhnya memenuhi syarat untuk kunci KMS. Sebuah ARN kunci termasuk Akun AWS, Wilayah, dan ID kunci. Untuk bantuan menemukan ARN kunci dari kunci KMS, lihat. Menemukan ID kunci dan kunci ARN
Format ARN kunci adalah sebagai berikut:
arn:
<partition>
:kms:<region>
:<account-id>
:key/<key-id>
Berikut ini adalah contoh kunci ARN untuk kunci KMS Single-region.
arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
Elemen
key-id
dari ARN kunci dari kunci multi-Wilayah dimulai dengan prefiksmrk-
. Berikut ini adalah contoh kunci ARN untuk kunci Multi-region.arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab
- ID Kunci
-
ID kunci secara unik mengidentifikasi kunci KMS dalam akun dan Wilayah. Untuk bantuan menemukan ID kunci dari kunci KMS, lihatMenemukan ID kunci dan kunci ARN.
Berikut ini adalah ID kunci contoh untuk kunci KMS Single-region.
1234abcd-12ab-34cd-56ef-1234567890ab
ID kunci dari kunci multi-Wilayah dimulai dengan prefiks
mrk-
. Berikut ini adalah ID kunci contoh untuk kunci Multi-region.mrk-1234abcd12ab34cd56ef1234567890ab
- ARN Alias
-
ARN alias adalah Amazon Resource Name (ARN) dari alias AWS KMS. Ini adalah pengidentifikasi unik yang sepenuhnya memenuhi syarat untuk alias, dan untuk kunci KMS yang diwakilinya. ARN alias termasuk Akun AWS, Wilayah, dan nama alias.
Pada waktu tertentu, alias ARN mengidentifikasi satu kunci KMS tertentu. Namun, karena Anda dapat mengubah kunci KMS yang terkait dengan alias, alias ARN dapat mengidentifikasi kunci KMS yang berbeda pada waktu yang berbeda. Untuk bantuan menemukan alias ARN dari kunci KMS, lihat. Menemukan nama alias dan ARN alias
Format ARN alias adalah sebagai berikut:
arn:
<partition>
:kms:<region>
:<account-id>
:alias/<alias-name>
Berikut ini adalah ARN alias untuk
ExampleAlias
fiktif.arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias
- Nama alias
-
Nama alias adalah satu string berisi hingga 256 karakter. Ini secara unik mengidentifikasi kunci KMS terkait dalam akun dan Wilayah. Dalam AWS KMS API, nama alias selalu diawali dengan
alias/
. Untuk bantuan menemukan nama alias kunci KMS, lihat. Menemukan nama alias dan ARN aliasFormat nama alias adalah sebagai berikut:
alias/
<alias-name>
Sebagai contoh:
alias/ExampleAlias
aws/
Awalan untuk nama alias dicadangkan untuk. Kunci yang dikelola AWS Anda tidak dapat membuat alias dengan prefiks ini. Misalnya, nama alias Kunci yang dikelola AWS untuk Amazon Simple Storage Service (Amazon S3) Simple Storage Service S3) adalah sebagai berikut.alias/aws/s3
Material kunci
Materi kunci adalah string bit yang digunakan dalam algoritma kriptografi. Materi kunci rahasia harus dirahasiakan untuk melindungi operasi kriptografi yang menggunakannya. Materi kunci publik dirancang untuk dibagikan.
Setiap kunci KMS menyertakan referensi ke materi utamanya dalam metadatanya. Asal material kunci kunci KMS enkripsi simetris dapat bervariasi. Anda dapat menggunakan material kunci yang dihasilkan AWS KMS, material kunci yang dihasilkan dalam klaster AWS CloudHSM dari penyimpanan kunci kustom, atau impor material kunci Anda sendiri. Jika Anda menggunakan bahan AWS KMS kunci untuk kunci KMS enkripsi simetris Anda, Anda dapat mengaktifkan rotasi otomatis materi kunci Anda.
Secara default, setiap kunci KMS memiliki bahan kunci yang unik. Namun, Anda dapat membuat satu set kunci multi-wilayah dengan material kunci yang sama.
Asal material kunci
Asal material utama adalah properti kunci KMS yang mengidentifikasi sumber bahan kunci dalam kunci KMS. Anda memilih asal bahan utama saat Anda membuat kunci KMS, dan Anda tidak dapat mengubahnya. Sumber material utama mempengaruhi keamanan, daya tahan, ketersediaan, latensi, dan karakteristik throughput kunci KMS.
Untuk menemukan asal material kunci dari kunci KMS, gunakan DescribeKeyoperasi, atau lihat nilai Origin pada tab konfigurasi Cryptographic pada halaman detail untuk kunci KMS di konsol. AWS KMS Untuk bantuan, lihat Melihat Kunci.
Kunci KMS dapat memiliki salah satu nilai asal material utama berikut.
AWS_KMS
-
AWS KMSmembuat dan mengelola materi kunci untuk kunci KMS di toko kuncinya sendiri. Ini adalah nilai default dan yang direkomendasikan untuk sebagian besar kunci KMS.
Untuk bantuan dalam membuat kunci dengan material kunci dari AWS KMS, lihat Membuat kunci.
EXTERNAL (Import key material)
-
Kunci KMS telah mengimpor bahan kunci. Saat Anda membuat kunci KMS dengan asal material
External
kunci, kunci KMS tidak memiliki materi kunci. Nanti, Anda dapat mengimpor materi kunci ke kunci KMS. Jika Anda menggunakan material kunci impor, Anda perlu mengamankan dan mengelola material kunci tersebut di luar AWS KMS, termasuk mengganti material kunci jika masa berlakunya berakhir. Untuk detail, lihat Tentang material kunci yang diimpor.Untuk bantuan membuat kunci KMS untuk materi kunci impor, lihatLangkah 1: Buat kunci KMS tanpa bahan kunci.
AWS_CLOUDHSM
-
AWS KMSmembuat materi kunci di AWS CloudHSM cluster untuk toko AWS CloudHSM kunci Anda.
Untuk bantuan membuat kunci KMS di toko AWS CloudHSM kunci, lihatMembuat kunci KMS di toko AWS CloudHSM kunci.
EXTERNAL_KEY_STORE
-
Materi utamanya adalah kunci kriptografi di manajer kunci eksternal di luar. AWS Asal ini hanya didukung untuk kunci KMS di toko kunci eksternal.
Untuk bantuan membuat kunci KMS di toko kunci eksternal, lihatMembuat kunci KMS di toko kunci eksternal.
Spesifikasi kunci
Spesifikasi kunci adalah properti yang mewakili konfigurasi kriptografi kunci. Arti dari spesifikasi kunci berbeda dengan tipe kunci.
-
AWS KMSkunci — Spesifikasi kunci menentukan apakah kunci KMS simetris atau asimetris. Ini juga menentukan jenis bahan utamanya, dan algoritma yang didukungnya. Anda memilih spesifikasi kunci ketika Anda membuat kunci KMS, dan Anda tidak dapat mengubahnya. Spesifikasi kunci default, SYMMETRIC_DEFAULT, mewakili kunci enkripsi simetris 256-bit.
catatan
Kunci
KeySpec
untuk KMS dikenal sebagai aCustomerMasterKeySpec
.CustomerMasterKeySpec
Parameter CreateKeyoperasi tidak digunakan lagi. Sebagai gantinya, gunakanKeySpec
parameter, yang bekerja dengan cara yang sama. Untuk mencegah perubahan yang melanggar, responsCreateKey
dan DescribeKeyoperasi sekarang mencakup keduanyaKeySpec
danCustomerMasterKeySpec
anggota dengan nilai yang sama.Untuk daftar spesifikasi kunci dan membantu memilih spesifikasi kunci, lihat Memilih spesifikasi kunci. Untuk menemukan spesifikasi kunci kunci KMS, gunakan DescribeKeyoperasi, atau lihat tab konfigurasi Kriptografi pada halaman detail untuk kunci KMS di konsol. AWS KMS Untuk bantuan, lihat Melihat Kunci.
Untuk membatasi spesifikasi kunci yang dapat digunakan prinsipal saat membuat kunci KMS, gunakan kunci kondisi kms:. KeySpec Anda juga dapat menggunakan tombol
kms:KeySpec
kondisi untuk mengizinkan prinsipal memanggil AWS KMS operasi hanya pada kunci KMS dengan spesifikasi kunci tertentu. Misalnya, Anda dapat menolak izin untuk menjadwalkan penghapusan kunci KMS apa pun dengan spesifikasi kunci.RSA_4096
-
Data keys (GenerateDataKey) — Spesifikasi kunci menentukan panjang kunci data AES.
-
Data keys pairs (GenerateDataKeyPair) — Spesifikasi key pair menentukan jenis material kunci dalam data key pair.
Penggunaan kunci
Penggunaan kunci adalah properti yang menentukan operasi kriptografi yang didukung kunci. Kunci KMS dapat memiliki penggunaan kunciENCRYPT_DECRYPT
,SIGN_VERIFY
, atauGENERATE_VERIFY_MAC
. Setiap kunci KMS hanya dapat memiliki satu penggunaan kunci. Menggunakan kunci KMS untuk lebih dari satu jenis operasi membuat produk dari kedua operasi lebih rentan terhadap serangan.
Untuk bantuan memilih penggunaan kunci untuk kunci KMS Anda, lihatMemilih penggunaan kunci. Untuk menemukan penggunaan kunci kunci KMS, gunakan DescribeKeyoperasi, atau pilih tab konfigurasi Kriptografi pada halaman detail untuk kunci KMS di konsol. AWS KMS Untuk bantuan, lihat Melihat Kunci.
Enkripsi amplop
Saat Anda mengenkripsi data, data Anda terlindungi, tetapi Anda harus melindungi kunci enkripsi. Salah satu strateginya adalah dengan mengenkripsikannya. Enkripsi amplop adalah praktik mengenkripsi data plaintext dengan kunci data, kemudian mengenkripsi kunci data di bawah kunci lain.
Anda bahkan dapat mengenkripsi kunci enkripsi data di bawah kunci enkripsi lain, dan mengenkripsi kunci enkripsi tersebut di bawah kunci enkripsi lain. Namun pada akhirnya, satu kunci harus tetap dalam plaintext sehingga Anda dapat mendekripsi kunci dan data Anda. Kunci enkripsi kunci plaintext tingkat atas ini dikenal sebagai kunci root.
![Enkripsi amplop](images/key-hierarchy-root.png)
AWS KMSmembantu Anda melindungi kunci enkripsi Anda dengan menyimpan dan mengelolanya dengan aman. Kunci root yang disimpan diAWS KMS, yang dikenal sebagai AWS KMS keys, tidak pernah membiarkan modul keamanan perangkat keras yang divalidasi AWS KMS FIPS
![Enkripsi amplop dengan beberapa kunci enkripsi kunci](images/key-hierarchy-kms-key.png)
Enkripsi amplop menawarkan beberapa manfaat:
-
Melindungi kunci data
Saat mengenkripsi kunci data, Anda tidak perlu khawatir menyimpan kunci data terenkripsi, karena kunci data terlindung secara inheren oleh enkripsi. Anda dapat menyimpan kunci data terenkripsi dengan aman di samping data yang dienkripsi.
-
Mengenkripsi data yang sama di bawah beberapa kunci
Operasi enkripsi dapat sangat memakan waktu, terutama ketika data yang dienkripsi adalah objek berukuran besar. Alih-alih mengenkripsi ulang data mentah beberapa kali dengan kunci yang berbeda, Anda dapat mengenkripsi ulang hanya kunci data yang melindungi data mentah.
-
Menggabungkan kekuatan beberapa algoritma
Secara umum, algoritme kunci simetris lebih cepat dan menghasilkan ciphertext yang lebih kecil dari algoritme kunci publik. Namun algoritme kunci publik memberikan pemisahan peran yang melekat dan manajemen kunci yang lebih mudah. Enkripsi amplop memungkinkan Anda menggabungkan kekuatan masing-masing strategi.
Konteks enkripsi
Semua operasi AWS KMS kriptografi dengan kunci KMS enkripsi simetris menerima konteks enkripsi, satu set opsional pasangan nilai kunci non-rahasia yang dapat berisi informasi kontekstual tambahan tentang data. AWS KMSmenggunakan konteks enkripsi sebagai data otentikasi tambahan (AAD) untuk mendukung enkripsi yang diautentikasi.
Ketika Anda menyertakan konteks enkripsi dalam permintaan enkripsi, itu terikat pada ciphertext secara kriptografis sehingga konteks enkripsi yang sama diperlukan untuk mendekripsi (atau mendekripsi dan mengenkripsi ulang) data. Jika konteks enkripsi yang disediakan dalam permintaan dekripsi tidak tepat, cocok huruf besar/kecil, permintaan dekripsi gagal. Hanya urutan pasangan kunci-nilai dalam konteks enkripsi yang dapat bervariasi.
catatan
Anda tidak dapat menentukan konteks enkripsi dalam operasi kriptografi dengan kunci KMS asimetris atau kunci KMS HMAC. Algoritma asimetris dan algoritma MAC tidak mendukung konteks enkripsi.
Konteks enkripsi tidak rahasia dan tidak dienkripsi. Konteks enkripsi muncul dalam plaintext di Log AWS CloudTrail, sehingga Anda dapat menggunakannya untuk mengidentifikasi dan mengategorikan operasi kriptografi Anda. Konteks enkripsi Anda tidak boleh menyertakan informasi sensitif. Sebaiknya konteks enkripsi Anda menjelaskan data yang dienkripsi atau didekripsi. Misalnya, ketika mengenkripsi file, Anda mungkin menggunakan bagian dari jalur file sebagai konteks enkripsi.
"encryptionContext": { "department": "10103.0" }
Misalnya, saat mengenkripsi volume dan snapshot yang dibuat dengan operasi Amazon Elastic Block Store (Amazon EBS) CreateSnapshot, Amazon EBS menggunakan ID volume sebagai nilai konteks enkripsi.
"encryptionContext": { "aws:ebs:id": "
vol-abcde12345abc1234
" }
Anda juga dapat menggunakan konteks enkripsi untuk memperbaiki atau membatasi akses ke AWS KMS keys akun Anda. Anda dapat menggunakan konteks enkripsi sebagai batasan dalam hibah dan sebagai kondisi dalam pernyataan kebijakan.
Untuk mempelajari cara menggunakan konteks enkripsi untuk melindungi integritas data terenkripsi, lihat posting Cara Melindungi Integritas Data Terenkripsi Anda dengan Menggunakan AWS Key Management Service dan EncryptionContext
Lebih lanjut tentang konteks enkripsi.
AWS KMSmemberlakukan aturan berikut untuk kunci dan nilai konteks enkripsi.
-
Kunci dan nilai dalam pasangan konteks enkripsi harus berupa string literal sederhana. Jika Anda menggunakan jenis yang berbeda, seperti bilangan bulat atau float, AWS KMS menafsirkannya sebagai string.
-
Kunci dan nilai dalam konteks enkripsi dapat mencakup karakter Unicode. Jika konteks enkripsi menyertakan karakter yang tidak diizinkan dalam kebijakan utama atau kebijakan IAM, Anda tidak akan dapat menentukan konteks enkripsi dalam kunci kondisi kebijakan, seperti kms:EncryptionContext:context-keydan kms:EncryptionContextKeys. Untuk detail tentang aturan dokumen kebijakan utama, lihatFormat kebijakan utama. Untuk detail tentang aturan dokumen kebijakan IAM, lihat Persyaratan nama IAM di Panduan Pengguna IAM.
Konteks enkripsi digunakan terutama untuk memverifikasi integritas dan keaslian. Tetapi Anda juga dapat menggunakan konteks enkripsi untuk mengontrol akses ke enkripsi simetris AWS KMS keys dalam kebijakan utama dan kebijakan IAM.
Kunci EncryptionContextKeys kondisi kms:EncryptionContext: dan kms: mengizinkan (atau menolak) izin hanya jika permintaan menyertakan kunci konteks enkripsi tertentu atau pasangan kunci-nilai.
Misalnya, pernyataan kebijakan kunci berikut memungkinkan RoleForExampleApp
peran untuk menggunakan kunci KMS dalam Decrypt
operasi. Ini menggunakan kunci kms:EncryptionContext:context-key
kondisi untuk mengizinkan izin ini hanya ketika konteks enkripsi dalam permintaan menyertakan pasangan konteks AppName:ExampleApp
enkripsi.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }
Untuk informasi lebih lanjut tentang kunci kondisi konteks enkripsi, lihat Kunci kondisi untuk AWS KMS.
Saat Anda membuat hibah, Anda dapat menyertakan batasan hibah yang menetapkan kondisi untuk izin hibah. AWS KMS mendukung dua batasan hibah, EncryptionContextEquals
dan EncryptionContextSubset
, yang keduanya melibatkan konteks enkripsi dalam permintaan untuk operasi kriptografi. Ketika Anda menggunakan batasan hibah ini, izin dalam hibah hanya efektif ketika konteks enkripsi dalam permintaan untuk operasi kriptografi memenuhi persyaratan batasan hibah.
Misalnya, Anda dapat menambahkan batasan EncryptionContextEquals
hibah ke hibah yang memungkinkan operasi. GenerateDataKey Dengan batasan ini, hibah memungkinkan operasi hanya ketika konteks enkripsi dalam permintaan cocok huruf besar/kecil untuk konteks enkripsi dalam batasan hibah.
$
aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --operations GenerateDataKey \ --constraints EncryptionContextEquals={Purpose=Test}
Permintaan seperti berikut dari prinsipal penerima hibah akan memenuhi batasan EncryptionContextEquals
.
aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --encryption-context Purpose=Test
$
Untuk detail tentang batasan hibah, lihat Menggunakan batas pemberian izin. Untuk informasi mendetail tentang hibah, lihat Hibah di AWS KMS.
AWS KMSdigunakan AWS CloudTrail untuk mencatat konteks enkripsi sehingga Anda dapat menentukan kunci dan data KMS mana yang telah diakses. Entri log menunjukkan dengan tepat kunci KMS mana yang digunakan untuk mengenkripsi atau mendekripsi data tertentu yang direferensikan oleh konteks enkripsi dalam entri log.
penting
Karena konteks enkripsi dicatat, konteks tidak boleh berisi informasi sensitif.
Untuk menyederhanakan penggunaan konteks enkripsi ketika Anda memanggil operasi Decrypt
atau ReEncrypt
, Anda dapat menyimpan konteks enkripsi bersama data terenkripsi. Sebaiknya Anda hanya menyimpan konteks enkripsi yang mencukupi untuk membantu Anda membuat konteks enkripsi penuh ketika Anda membutuhkannya untuk enkripsi atau dekripsi.
Misalnya, jika konteks enkripsi sepenuhnya memenuhi syarat untuk file, simpan hanya bagian dari jalur tersebut dengan konten file terenkripsi. Kemudian, ketika Anda membutuhkan konteks enkripsi penuh, rekonstruksi konteks dari fragmen yang disimpan. Jika seseorang merusak file, seperti mengganti namanya atau memindahkannya ke lokasi lain, perubahan nilai konteks enkripsi dan permintaan dekripsi akan gagal.
Kebijakan kunci
Saat Anda membuat kunci KMS, Anda menentukan siapa yang dapat menggunakan dan mengelola kunci KMS itu. Izin ini disertakan dalam dokumen yang disebut kebijakan kunci. Anda dapat menggunakan kebijakan kunci untuk menambah, menghapus, atau mengubah izin kapan saja untuk kunci yang dikelola pelanggan. Tetapi Anda tidak dapat mengedit kebijakan kunci untuk fileKunci yang dikelola AWS. Untuk informasi selengkapnya, lihat Kebijakan utama di AWS KMS.
Pemberian Izin
Hibah adalah instrumen kebijakan yang memungkinkan AWS prinsipal untuk digunakan AWS KMS keys dalam operasi kriptografi. Hal ini juga dapat membiarkan mereka melihat kunci KMS (DescribeKey) dan membuat dan mengelola hibah. Saat mengotorisasi akses ke kunci KMS, hibah dipertimbangkan bersama dengan kebijakan utama dan kebijakan IAM. Hibah sering digunakan untuk izin sementara karena Anda dapat membuatnya, menggunakan izinnya, dan menghapusnya tanpa mengubah kebijakan kunci atau kebijakan IAM. Karena hibah bisa sangat spesifik, serta mudah dibuat dan dicabut, hibah tersebut sering digunakan untuk memberikan izin sementara atau izin yang lebih terperinci.
Untuk informasi mendetail tentang hibah, termasuk terminologi hibah, lihat Hibah di AWS KMS.
Mengaudit penggunaan kunci KMS
Anda dapat menggunakan AWS CloudTrail untuk mengaudit penggunaan kunci. CloudTrail membuat file log yang berisi riwayat panggilan AWS API dan peristiwa terkait untuk akun Anda. File log ini mencakup semua permintaan AWS KMS API yang dibuat dengan Konsol Manajemen AWS, AWS SDK, dan alat baris perintah. File log juga mencakup permintaan untuk AWS KMS yang dibuat oleh layanan AWS atas nama Anda. Anda dapat menggunakan file log ini untuk menemukan informasi penting, termasuk kapan kunci KMS digunakan, operasi yang diminta, identitas pemohon, dan alamat IP sumber. Untuk informasi selengkapnya, lihat Logging dengan AWS CloudTrail dan Panduan Pengguna AWS CloudTrail.
Infrastruktur manajemen kunci
Praktik umum dalam kriptografi adalah mengenkripsi dan mendekripsi dengan algoritme yang tersedia untuk umum dan peer-review seperti AES (Advanced Encryption Standard) dan kunci rahasia. Salah satu masalah utama dengan kriptografi adalah ia sangat sulit untuk menyimpan rahasia kunci. Ini biasanya pekerjaan infrastruktur manajemen kunci (KMI). AWS KMSmengoperasikan infrastruktur utama untuk Anda. AWS KMSmembuat dan menyimpan kunci root Anda dengan aman, disebut AWS KMS keys. Untuk informasi lebih lanjut tentang bagaimana AWS KMS beroperasi, lihat Detail Kriptografi AWS Key Management Service.