Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Izin hak istimewa paling sedikit
Karena KMS kunci Anda melindungi informasi sensitif, kami sarankan untuk mengikuti prinsip akses yang paling tidak memiliki hak istimewa. Delegasikan izin minimum yang diperlukan untuk melakukan tugas saat Anda menentukan kebijakan utama Anda. Hanya izinkan semua tindakan (kms:*
) pada kebijakan KMS utama jika Anda berencana untuk membatasi izin lebih lanjut dengan kebijakan tambahanIAM. Jika Anda berencana untuk mengelola izin dengan IAM kebijakan, batasi siapa yang memiliki kemampuan untuk membuat dan melampirkan IAM kebijakan ke IAM kepala sekolah dan memantau perubahan kebijakan.
Jika Anda mengizinkan semua tindakan (kms:*
) dalam kebijakan kunci dan IAM kebijakan, prinsipal memiliki izin administratif dan penggunaan untuk KMS kunci tersebut. Sebagai praktik keamanan terbaik, kami sarankan hanya mendelegasikan izin ini ke kepala sekolah tertentu. Anda dapat melakukan ini dengan secara eksplisit menyebutkan prinsipal dalam kebijakan utama atau dengan membatasi prinsip mana kebijakan tersebut IAM dilampirkan. Anda juga dapat menggunakan tombol kondisi untuk membatasi izin. Misalnya, Anda dapat menggunakan aws:PrincipalTag
untuk mengizinkan semua tindakan jika prinsipal yang melakukan API panggilan memiliki tag yang ditentukan dalam aturan kondisi.
Untuk bantuan memahami bagaimana pernyataan kebijakan dievaluasi AWS, lihat Logika evaluasi kebijakan di Panduan IAM Pengguna. Sebaiknya tinjau topik ini sebelum menulis kebijakan untuk mengurangi kemungkinan kebijakan Anda memiliki efek yang tidak diinginkan, seperti menyediakan akses ke kepala sekolah yang seharusnya tidak memiliki akses.
Tip
Saat menguji aplikasi di lingkungan non-produksi, gunakan IAMAccess Analyzer
Jika Anda menggunakan IAM pengguna alih-alih IAM peran, kami sangat menyarankan untuk mengaktifkan otentikasi AWS multi-faktor (MFA) untuk mengurangi kerentanan kredensyal jangka panjang. Anda dapat menggunakan MFA untuk melakukan hal berikut:
-
Mengharuskan pengguna memvalidasi kredensialnya MFA sebelum melakukan tindakan istimewa, seperti menjadwalkan penghapusan kunci.
-
Pisahkan kepemilikan kata sandi akun administrator dan MFA perangkat antar individu untuk menerapkan otorisasi terpisah.
Pelajari selengkapnya
Menerapkan izin yang paling tidak memiliki hak istimewa
Ketika Anda memberikan izin AWS layanan untuk menggunakan KMS kunci, pastikan bahwa izin tersebut hanya berlaku untuk sumber daya yang harus diakses layanan atas nama Anda. Strategi hak istimewa terkecil ini membantu mencegah penggunaan KMS kunci yang tidak sah saat permintaan diteruskan di antara AWS layanan.
Untuk menerapkan strategi hak istimewa terkecil, gunakan kami sarankan menggunakan kunci kondisi konteks AWS KMS enkripsi dan kunci kondisi akun sumber ARN atau sumber global.
Menggunakan kunci kondisi konteks enkripsi
Cara paling efektif untuk menerapkan izin yang paling tidak memiliki hak istimewa saat menggunakan AWS KMS sumber daya adalah dengan memasukkan kms:EncryptionContext:kunci-konteks atau kms:EncryptionContextKeyskunci kondisi dalam kebijakan yang memungkinkan prinsipal untuk memanggil AWS KMS operasi kriptografi. Kunci kondisi ini sangat efektif karena mengaitkan izin dengan konteks enkripsi yang terikat pada ciphertext saat sumber daya dienkripsi.
Gunakan kunci kondisi konteks enkripsi hanya jika tindakan dalam pernyataan kebijakan adalah CreateGrantatau operasi kriptografi AWS KMS simetris yang mengambil EncryptionContext
parameter, seperti operasi seperti GenerateDataKeyatau Dekripsi. (Untuk daftar operasi yang didukung, lihat kms:EncryptionContext:kunci-konteks atau kms:EncryptionContextKeys.) Jika Anda menggunakan kunci kondisi ini untuk mengizinkan operasi lain, seperti DescribeKey, izin akan ditolak.
Tetapkan nilai ke konteks enkripsi yang digunakan layanan saat mengenkripsi sumber daya. Informasi ini biasanya tersedia di bagian Keamanan dokumentasi layanan. Misalnya, konteks enkripsi untuk AWS Proton mengidentifikasi sumber daya Proton dan template AWS terkaitnya. Konteks AWS Secrets Manager enkripsi mengidentifikasi rahasia dan versinya. Konteks enkripsi untuk Lokasi Amazon mengidentifikasi pelacak atau koleksi.
Contoh pernyataan kebijakan kunci berikut memungkinkan Amazon Location Service untuk membuat hibah atas nama pengguna yang berwenang. Pernyataan kebijakan ini membatasi izin dengan menggunakan kms: ViaService, kms: CallerAccount, dan kunci kms:EncryptionContext:context-key
kondisi untuk mengikat izin ke sumber daya pelacak tertentu.
{ "Sid": "Allow Amazon Location to create grants on behalf of authorized users", "Effect": "Allow", "Principal": { "AWS": "
arn:aws:iam::111122223333:role/LocationTeam
" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "geo.us-west-2.amazonaws.com", "kms:CallerAccount": "111122223333
", "kms:EncryptionContext:aws:geo:arn": "arn:aws:geo:us-west-2:111122223333:tracker/SAMPLE-Tracker
" } } }
Menggunakan aws:SourceArn
atau aws:SourceAccount
mengkondisikan kunci
Ketika prinsipal dalam pernyataan kebijakan utama adalah prinsipal AWS layanan, kami sangat menyarankan agar Anda menggunakan aws:SourceArn atau aws:SourceAccountkunci kondisi global, selain kunci kms:EncryptionContext:context-key
kondisi. Nilai ARN dan akun disertakan dalam konteks otorisasi hanya ketika permintaan datang AWS KMS dari AWS layanan lain. Kombinasi kondisi ini mengimplementasikan izin yang paling tidak memiliki hak istimewa dan menghindari skenario wakil yang berpotensi membingungkan. Prinsipal layanan biasanya tidak digunakan sebagai prinsipal dalam kebijakan utama, tetapi beberapa AWS layanan, seperti, memerlukannya. AWS CloudTrail
Untuk menggunakan aws:SourceArn
atau kunci kondisi aws:SourceAccount
global, tetapkan nilai ke Amazon Resource Name (ARN) atau akun sumber daya yang sedang dienkripsi. Misalnya, dalam pernyataan kebijakan kunci yang memberikan AWS CloudTrail izin untuk mengenkripsi jejak, tetapkan nilai aws:SourceArn
ke ARN jejak. Bila memungkinkan, gunakanaws:SourceArn
, yang lebih spesifik. Tetapkan nilai ke ARN atau ARN pola dengan karakter wildcard. Jika Anda tidak tahu sumber dayanya, gunakan aws:SourceAccount
sebagai gantinya. ARN
catatan
Jika sumber daya ARN menyertakan karakter yang tidak diizinkan dalam kebijakan AWS KMS kunci, Anda tidak dapat menggunakan sumber daya tersebut ARN dalam nilai kunci aws:SourceArn
kondisi. Sebagai gantinya, gunakan tombol aws:SourceAccount
kondisi. Untuk detail tentang aturan dokumen kebijakan utama, lihatFormat kebijakan utama.
Dalam contoh kebijakan kunci berikut, prinsipal yang mendapatkan izin adalah prinsipal AWS CloudTrail layanan,cloudtrail.amazonaws.com
. Untuk menerapkan hak istimewa paling sedikit, kebijakan ini menggunakan kunci aws:SourceArn
dan kms:EncryptionContext:context-key
kondisi. Pernyataan kebijakan memungkinkan CloudTrail untuk menggunakan KMS kunci untuk menghasilkan kunci data yang digunakan untuk mengenkripsi jejak. kms:EncryptionContext:context-key
Kondisi aws:SourceArn
dan dievaluasi secara independen. Setiap permintaan untuk menggunakan KMS kunci untuk operasi yang ditentukan harus memenuhi kedua kondisi.
Untuk membatasi izin layanan ke finance
jejak di akun contoh (111122223333) dan us-west-2
Wilayah, pernyataan kebijakan ini menetapkan kunci aws:SourceArn
kondisi ke jejak tertentu. ARN Pernyataan kondisi menggunakan ArnEqualsoperator untuk memastikan bahwa setiap elemen dalam dievaluasi ARN secara independen saat pencocokan. Contoh ini juga menggunakan kunci kms:EncryptionContext:context-key
kondisi untuk membatasi izin untuk melacak di akun dan Wilayah tertentu.
Sebelum menggunakan kebijakan kunci ini, ganti contoh ID akun, Wilayah, dan nama jejak dengan nilai yang valid dari akun Anda.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CloudTrail to encrypt logs", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ArnEquals": { "aws:SourceArn": [ "arn:aws:cloudtrail:
us-west-2
:111122223333
:trail/finance
" ] }, "StringLike": { "kms:EncryptionContext:aws:cloudtrail:arn": [ "arn:aws:cloudtrail:*:111122223333
:trail/*" ] } } } ] }