Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
IAMJSONelemen kebijakan: Condition
Elemen Condition
(atau blok Condition
) memungkinkan Anda menentukan ketentuan saat kebijiakan berlaku. Elemen Condition
bersifat opsional. Dalam Condition
elemen, Anda membangun ekspresi di mana Anda menggunakan operator kondisi (sama, kurang dari, dan lainnya) untuk mencocokkan kunci konteks dan nilai dalam kebijakan terhadap kunci dan nilai dalam konteks permintaan. Untuk mempelajari selengkapnya tentang konteks permintaan, lihat Komponen permintaan.
"Condition" : { "
{condition-operator}
" : { "{condition-key}
" : "{condition-value}
" }}
Kunci konteks yang Anda tentukan dalam kondisi kebijakan dapat berupa kunci konteks kondisi global atau kunci konteks khusus layanan. Kunci konteks kondisi global memiliki aws:
awalan. Kunci konteks khusus layanan memiliki awalan layanan. Misalnya, Amazon EC2 memungkinkan Anda menulis kondisi menggunakan kunci ec2:InstanceType
konteks, yang unik untuk layanan tersebut. Untuk melihat kunci IAM konteks khusus layanan dengan iam:
awalan, lihat. IAMdan kunci konteks AWS STS kondisi
Nama kunci konteks tidak peka huruf besar/kecil. Misalnya, menyertakan kunci aws:SourceIP
konteks setara dengan pengujian untukAWS:SourceIp
. Sensitivitas huruf besar/huruf dari nilai kunci konteks tergantung pada operator kondisi yang Anda gunakan. Misalnya, kondisi berikut mencakup StringEquals
operator untuk memastikan bahwa hanya permintaan yang dibuat berdasarkan johndoe
kecocokan. Nama pengguna JohnDoe
ditolak aksesnya.
"Condition" : { "StringEquals" : { "aws:username" : "johndoe" }}
Ketentuan berikut menggunakan operator StringEqualsIgnoreCase untuk mencocokkan nama pengguna johndoe
atau JohnDoe
.
"Condition" : { "StringEqualsIgnoreCase" : { "aws:username" : "johndoe" }}
Beberapa kunci konteks mendukung pasangan kunci-nilai yang memungkinkan Anda menentukan bagian dari nama kunci. Contohnya termasuk kunci aws:RequestTag/tag-key konteks, kunci konteks AWS KMS kms:EncryptionContext:
, dan kunci ResourceTag/tag-key konteks yang didukung oleh beberapa layanan.encryption_context_key
-
Jika Anda menggunakan kunci
ResourceTag/
konteks untuk layanan seperti Amazon EC2, maka Anda harus menentukan nama kunci untuktag-key
tag-key
. -
Nama kunci tidak peka huruf besar/kecil. Ini berarti jika Anda menentukan
"aws:ResourceTag/TagKey1": "Value1"
dalam elemen ketentuan kebijakan Anda, kemudian ketentuan tersebut cocok dengan kunci tanda sumber daya bernamaTagKey1
atautagkey1
, tetapi tidak keduanya. -
AWS layanan yang mendukung atribut ini memungkinkan Anda membuat beberapa nama kunci yang hanya berbeda berdasarkan kasus. Misalnya, Anda dapat menandai EC2 instance Amazon dengan
ec2=test1
danEC2=test2
. Saat Anda menggunakan kondisi seperti"aws:ResourceTag/EC2": "test1"
untuk memungkinkan akses ke sumber daya tersebut, nama kunci cocok dengan kedua tanda, tetapi hanya satu nilai yang cocok. Hal ini dapat mengakibatkan kegagalan ketentuan yang tidak terduga.
penting
Sebagai praktik terbaik, pastikan bahwa anggota akun Anda mengikuti konvensi pemberian nama yang konsisten ketika memberi nama atribut pasangan nilai-kunci. Contohnya mencakup tanda atau konteks enkripsi AWS KMS
. Anda dapat menerapkan ini menggunakan kunci aws:TagKeyskonteks untuk penandaan, atau kms:EncryptionContextKeys
untuk konteks AWS KMS enkripsi.
-
Untuk daftar semua operator kondisi dan deskripsi tentang cara kerjanya, lihat Operator kondisi.
-
Kecuali ditentukan lain, semua kunci konteks dapat memiliki beberapa nilai. Untuk deskripsi tentang cara menangani kunci konteks yang memiliki beberapa nilai, lihatKunci konteks multivaluasi.
-
Untuk daftar semua kunci konteks yang tersedia secara global, lihatAWS Kunci konteks kondisi.
-
Untuk kunci konteks kondisi yang ditentukan oleh setiap layanan, lihat Tindakan, Sumber Daya, dan Kunci Kondisi untuk AWS Layanan.
Konteks permintaan
Ketika kepala sekolah membuat permintaan AWS, AWS mengumpulkan informasi permintaan ke dalam konteks permintaan. Informasi ini digunakan untuk mengevaluasi dan mengotorisasi permintaan. Anda dapat menggunakan Condition
elemen JSON kebijakan untuk menguji kunci konteks tertentu terhadap konteks permintaan. Misalnya, Anda dapat membuat kebijakan yang menggunakan kunci CurrentTime konteks aws: untuk memungkinkan pengguna melakukan tindakan hanya dalam rentang tanggal tertentu.
Ketika permintaan dikirimkan, AWS mengevaluasi setiap kunci konteks dalam kebijakan dan mengembalikan nilai true, false, not present, dan kadang-kadang null (string data kosong). Kunci konteks yang tidak ada dalam permintaan dianggap sebagai ketidakcocokan. Misalnya, kebijakan berikut memungkinkan penghapusan perangkat autentikasi multi-faktor (MFA) Anda sendiri, tetapi hanya jika Anda telah login menggunakan MFA dalam satu jam terakhir (3.600 detik).
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowRemoveMfaOnlyIfRecentMfa", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice" ], "Resource": "arn:aws:iam::*:user/${aws:username}", "Condition": { "NumericLessThanEquals": {"aws:MultiFactorAuthAge": "3600"} } } }
Konteks permintaan dapat mengembalikan nilai-nilai berikut:
-
Benar - Jika pemohon masuk menggunakan MFA dalam satu jam terakhir atau kurang, maka kondisi mengembalikan nilai true.
-
False - Jika pemohon masuk menggunakan MFA lebih dari satu jam yang lalu, maka kondisi mengembalikan false.
-
Tidak hadir — Jika pemohon membuat permintaan menggunakan kunci akses IAM pengguna mereka di AWS CLI atau AWS API, kunci tidak ada. Dalam hal ini, kuncinya tidak ada, dan kunci tidak akan cocok.
-
Null — Untuk kunci konteks yang ditentukan oleh pengguna, seperti tag yang diteruskan dalam permintaan, dimungkinkan untuk menyertakan string kosong. Dalam hal ini, nilai dalam konteks permintaan adalah null. Nilai null mungkin akan mengembalikan nilai tersebut dalam beberapa kasus. Misalnya, jika Anda menggunakan operator
ForAllValues
kondisi multivalued dengan kunciaws:TagKeys
konteks, Anda dapat mengalami hasil yang tidak terduga jika konteks permintaan mengembalikan null. Untuk informasi lebih lanjut, lihat aws: TagKeys andKunci konteks multivaluasi.
Blok ketentuan
Contoh berikut menunjukkan format dasar dari elemen Condition
:
"Condition": {"StringLike": {"s3:prefix": ["janedoe/*"]}}
Nilai dari permintaan diwakili oleh kunci konteks, dalam hal inis3:prefix
. Nilai kunci konteks dibandingkan dengan nilai yang Anda tentukan sebagai nilai literal, sepertijanedoe/*
. Jenis perbandingan yang akan dibuat ditentukan oleh operator kondisi (di sini,StringLike
). Anda dapat membuat ketentuan yang membandingkan string, tanggal, angka, dan lainnya menggunakan perbandingan umum Boolean seperti sama, lebih besar dari, dan kurang dari. Bila Anda menggunakan operator string atau ARNoperator, Anda juga dapat menggunakan variabel kebijakan dalam nilai kunci konteks. Contoh berikut termasuk aws:username
variabel.
"Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
Dalam beberapa keadaan, kunci konteks dapat berisi beberapa nilai. Misalnya, permintaan ke Amazon DynamoDB mungkin meminta untuk mengembalikan atau memperbarui beberapa atribut dari tabel. Kebijakan untuk akses ke tabel DynamoDB dapat menyertakan dynamodb:Attributes
kunci konteks, yang berisi semua atribut yang tercantum dalam permintaan. Anda dapat menguji beberapa atribut dalam daftar permintaan terhadap daftar atribut yang diizinkan di kebijakan dengan menggunakan operator kumpulan di elemen Condition
. Untuk informasi selengkapnya, lihat Kunci konteks multivaluasi.
Ketika kebijakan dievaluasi selama permintaan, AWS ganti kunci dengan nilai yang sesuai dari permintaan. (Dalam contoh ini, AWS akan menggunakan tanggal dan waktu permintaan.) Kondisi dievaluasi untuk mengembalikan benar atau salah, yang kemudian diperhitungkan dalam apakah kebijakan tersebut secara keseluruhan mengizinkan atau menolak permintaan.
Beberapa nilai dalam suatu ketentuan
Sebuah Condition
elemen dapat berisi beberapa operator kondisi, dan setiap operator kondisi dapat berisi beberapa pasangan kunci-nilai konteks. Gambar berikut mengilustrasikan hal ini.
Untuk informasi selengkapnya, lihat Kunci konteks multivaluasi.