Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Single-valued vs. kunci konteks multinilai
Perbedaan antara kunci konteks bernilai tunggal dan multinilai terletak pada jumlah nilai dalam konteks permintaan, bukan jumlah nilai dalam kondisi kebijakan.
-
Single-valuedkunci konteks kondisi memiliki paling banyak satu nilai dalam konteks permintaan. Misalnya, saat Anda menandai resource AWS, setiap tag resource disimpan sebagai pasangan kunci-nilai. Karena kunci tag sumber daya hanya dapat memiliki nilai tag tunggal, aw:ResourceTag/kunci tag adalah kunci konteks bernilai tunggal. Jangan gunakan operator set kondisi dengan kunci konteks bernilai tunggal.
-
Kunci konteks kondisi multivalue dapat memiliki beberapa nilai dalam konteks permintaan. Misalnya, saat Anda menandai sumber daya AWS, Anda dapat menyertakan beberapa pasangan kunci-nilai tag dalam satu permintaan. Oleh karena itu, aw: TagKeys adalah kunci konteks multinilai. Kunci konteks multinilai memerlukan operator set kondisi.
Misalnya, permintaan dapat berasal dari paling banyak satu titik akhir VPC, begitu aws: SourceVpce juga kunci konteks bernilai tunggal. Karena layanan dapat memiliki lebih dari satu nama utama layanan yang termasuk dalam layanan, aw: PrincipalServiceNamesList adalah kunci konteks multinilai.
penting
Perbedaan antara kunci konteks bernilai tunggal dan multinilai bergantung pada jumlah nilai dalam konteks permintaan, bukan jumlah nilai dalam kondisi kebijakan.
Untuk contoh kebijakan yang menunjukkan kondisi dengan beberapa kunci konteks dan nilai, lihatContoh kebijakan kondisi.
Poin kunci
-
Klasifikasi Single-valued dan Multivalue disertakan dalam deskripsi setiap kunci konteks kondisi sebagai tipe Nilai dalam topik. AWS kunci konteks kondisi global
-
Kunci konteks multinilai dalam Refer ensi Otorisasi Layanan menggunakan
ArrayOfawalan yang diikuti oleh tipe kategori operator kondisi, sepertiArrayOfStringatauArrayOfARN, yang menunjukkan bahwa permintaan dapat menyertakan beberapa nilai untuk kunci konteks kondisi. -
Anda dapat menggunakan kunci konteks bernilai tunggal yang tersedia sebagai variabel kebijakan, tetapi Anda tidak dapat menggunakan kunci konteks multinilai sebagai variabel kebijakan. Untuk informasi lebih lanjut tentang variabel-variable kebijakan, lihat Elemen kebijakan IAM: Variabel dan tag.
-
Saat menggunakan kunci konteks yang menyertakan pasangan kunci-nilai, penting untuk dicatat bahwa meskipun mungkin ada beberapa nilai tag-key, masing-masing hanya
tag-keydapat memiliki satu nilai.-
aw:PrincipalTag/kunci tag, aw:RequestTag/kunci tag dan aw:ResourceTag/kunci tag merupakan kunci konteks bernilai tunggal.
-
aw: TagKeysmendefinisikan kunci tag apa yang diizinkan dalam permintaan tetapi tidak menyertakan nilai tag-key. Karena Anda dapat menyertakan beberapa pasangan kunci-nilai tag dalam permintaan,
aws:TagKeysadalah kunci konteks multinilai.
-
-
Kunci konteks multinilai memerlukan operator set kondisi. Jangan gunakan operator set kondisi
ForAllValuesatauForAnyValuedengan kunci konteks bernilai tunggal. Menggunakan operator set kondisi dengan kunci konteks bernilai tunggal dapat menyebabkan kebijakan yang terlalu permisif.
Mengatur operator untuk kunci konteks multinilai
Untuk membandingkan kunci konteks kondisi Anda dengan kunci konteks permintaan dengan beberapa nilai, Anda harus menggunakan operator ForAllValues atau ForAnyValue set. Operator set ini digunakan untuk membandingkan dua set nilai, seperti set tag dalam permintaan dan kumpulan tag dalam kondisi kebijakan.
ForAnyValueQualifier ForAllValues and menambahkan fungsionalitas pengaturan operasi ke operator kondisi, memungkinkan Anda menguji kunci konteks permintaan dengan beberapa nilai terhadap beberapa nilai kunci konteks dalam kondisi kebijakan. Selain itu, jika Anda menyertakan kunci konteks string multinilai dalam kebijakan Anda dengan wildcard atau variabel, Anda juga harus menggunakan operator StringLike kondisi. Beberapa nilai kunci kondisi harus ditutup dalam tanda kurung seperti array, misalnya,"Key2":["Value2A", "Value2B"].
ForAllValues
ForAllValuesQualifier menguji apakah nilai setiap anggota konteks permintaan cocok dengan operator kondisi yang mengikuti kualifikasi. Kondisi dikembalikan true jika setiap nilai kunci konteks dalam permintaan cocok dengan nilai kunci konteks dalam kebijakan. Ini juga kembali true jika tidak ada kunci konteks dalam permintaan.
penting
Berhati-hatilah jika Anda menggunakan ForAllValues dengan Allow efek, karena bisa terlalu permisif jika kehadiran kunci konteks yang hilang dalam konteks permintaan tidak terduga. Anda harus selalu menyertakan operator Null kondisi dalam kebijakan Anda dengan false nilai untuk memeriksa apakah kunci konteks ada dan nilainya tidak null. Sebagai contoh, lihat Mengontrol akses berdasarkan kunci tanda.
Contoh ForAllValues set operator
Dalam contoh berikut, ForAllValues digunakan dengan aws: TagKeys untuk memungkinkan pengguna menghapus tag tertentu yang ditetapkan ke instance EC2. Kebijakan ini memungkinkan pengguna untuk menghapus hanya cost-center tag environment dan. Anda dapat menghapusnya secara terpisah atau bersama-sama. Kunci tag dalam permintaan harus sama persis dengan kunci yang ditentukan dalam kebijakan.
Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.
| Kondisi Kebijakan | Permintaan Konteks | Hasil |
|---|---|---|
|
|
Cocokkan |
|
|
Cocokkan |
|
|
Cocokkan |
|
|
Tidak cocok |
|
Tidak |
Tidak cocok |
Perhatikan bahwa dalam contoh terakhir, hasilnya adalah “Tidak cocok” karena pemeriksaan kondisi Null mencegah pencocokan saat kunci konteks hilang. Ini adalah praktik terbaik untuk menghindari kebijakan yang terlalu permisif.
ForAnyValue
ForAnyValueQualifier menguji apakah setidaknya satu anggota dari kumpulan nilai kunci konteks permintaan cocok dengan setidaknya satu anggota dari kumpulan nilai kunci konteks dalam kondisi kebijakan Anda. Kondisi dikembalikan true jika salah satu nilai kunci konteks dalam permintaan cocok dengan salah satu nilai kunci konteks dalam kebijakan. Untuk tidak ada kunci konteks yang cocok atau jika kunci tidak ada, kondisi kembalifalse.
penting
Saat menggunakan ForAnyValue dengan Deny efek, jika kunci konteks tidak ada dalam permintaan, kebijakan akan dinilai sebagai Tidak cocok. Untuk perilaku yang konsisten, tambahkan pemeriksaan Null kondisi eksplisit di kebijakan Anda untuk memverifikasi apakah kunci konteks ada. Lihat perinciannya di Operator ketentuan memeriksa keberadaan kunci kondisi.
Contoh ForAnyValue set operator
Dalam contoh berikut, ForAnyValue digunakan dengan aws: TagKeys untuk memungkinkan pengguna menghapus tag tertentu yang ditetapkan ke instance EC2. Kebijakan ini memungkinkan pengguna untuk menghapus tag untuk instance jika kunci tag yang ditentukan dalam permintaan termasuk environment ataucost-center. Permintaan dapat menyertakan kunci tag tambahan di luar yang ditentukan dalam kebijakan, tetapi harus menyertakan setidaknya satu kunci yang ditentukan agar sesuai dengan kondisi tersebut.
Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.
| Kondisi Kebijakan | Permintaan Konteks | Hasil |
|---|---|---|
|
|
Cocokkan |
|
|
Cocokkan |
|
|
Cocokkan |
|
|
Cocokkan |
|
|
Tidak cocok |
|
Tidak |
Tidak cocok |