Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konteks enkripsi
catatan
Anda tidak dapat menentukan konteks enkripsi dalam operasi kriptografi dengan KMSkunci asimetris atau kunci. HMAC KMS Algoritma dan MAC algoritma asimetris tidak mendukung konteks enkripsi.
Semua operasi AWS KMS kriptografi dengan KMSkunci enkripsi simetris menerima konteks enkripsi, satu set opsional pasangan nilai kunci non-rahasia yang dapat berisi informasi kontekstual tambahan tentang data. Anda dapat menyisipkan konteks enkripsi dalam Encrypt
operasi AWS KMS untuk meningkatkan otorisasi dan auditabilitas panggilan AWS KMS API dekripsi Anda. AWS KMS menggunakan konteks enkripsi sebagai data otentikasi tambahan (AAD) untuk mendukung enkripsi yang diautentikasi. Konteks enkripsi terikat secara kriptografis ke ciphertext sehingga konteks enkripsi yang sama diperlukan untuk mendekripsi data.
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 (AmazonEBS) 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.
Aturan konteks enkripsi
AWS KMS memberlakukan 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 atau IAM kebijakan utama, 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 IAM kebijakan, lihat persyaratan IAM nama di Panduan IAM Pengguna.
Konteks enkripsi dalam kebijakan
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 dan IAM kebijakan utama.
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 KMS kunci 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.
Konteks enkripsi dalam hibah
Saat membuat hibah, Anda dapat menyertakan batasan hibah yang menetapkan ketentuan untuk izin hibah. AWS KMS mendukung dua kendala hibah, EncryptionContextEquals
danEncryptionContextSubset
, 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.
Konteks enkripsi pencatatan
AWS KMS digunakan AWS CloudTrail untuk mencatat konteks enkripsi sehingga Anda dapat menentukan KMS kunci dan data mana yang telah diakses. Entri log menunjukkan dengan tepat KMS kunci 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.
Menyimpan konteks enkripsi
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.