

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Elemen kebijakan IAM JSON: Condition
<a name="reference_policies_elements_condition"></a>

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](reference_policies_elements_condition_operators.md) (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](intro-structure.md#intro-structure-request).

```
"Condition" : { "{condition-operator}" : { "{condition-key}" : "{condition-value}" }}
```

Kunci konteks yang Anda tentukan dalam kondisi kebijakan dapat berupa [kunci konteks kondisi global atau kunci](reference_policies_condition-keys.md) 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 konteks IAM khusus layanan dengan `iam:` awalan, lihat. [Kunci konteks IAM dan AWS STS kondisi](reference_policies_iam-condition-keys.md)

*Nama* kunci konteks tidak peka huruf besar/kecil. Misalnya, menyertakan kunci `aws:SourceIP` konteks setara dengan pengujian untuk`AWS:SourceIp`. Sensitivitas huruf besar/huruf dari *nilai* kunci konteks tergantung pada [operator kondisi](reference_policies_elements_condition_operators.md) yang Anda gunakan. Misalnya, kondisi berikut mencakup `StringEquals` operator untuk memastikan bahwa hanya permintaan yang dibuat berdasarkan `john` kecocokan. Nama pengguna `John` ditolak aksesnya.

```
"Condition" : { "StringEquals" : { "aws:username" : "john" }}
```

Ketentuan berikut menggunakan operator [`StringEqualsIgnoreCase`](reference_policies_elements_condition_operators.md#Conditions_String) untuk mencocokkan nama pengguna `john` atau `John`.

```
"Condition" : { "StringEqualsIgnoreCase" : { "aws:username" : "john" }}
```

Beberapa kunci konteks mendukung pasangan kunci-nilai yang memungkinkan Anda menentukan bagian dari nama kunci. Contohnya termasuk kunci [`aws:RequestTag/tag-key`](reference_policies_condition-keys.md#condition-keys-requesttag)konteks, kunci konteks AWS KMS [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context), dan kunci [`ResourceTag/tag-key`](reference_policies_condition-keys.md#condition-keys-resourcetag)konteks yang didukung oleh beberapa layanan.
+ Jika Anda menggunakan kunci `ResourceTag/tag-key` konteks untuk layanan seperti [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policy-structure.html#amazon-ec2-keys), maka Anda harus menentukan nama kunci untuk. `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 bernama `TagKey1` atau `tagkey1`, tetapi tidak keduanya.
+ AWS layanan yang mendukung atribut ini memungkinkan Anda membuat beberapa nama kunci yang hanya berbeda berdasarkan kasus. Misalnya, Anda dapat menandai instans Amazon EC2 dengan `ec2=test1` dan. `EC2=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:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys)konteks untuk penandaan, atau [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context-keys)untuk konteks AWS KMS enkripsi.
+ Untuk daftar semua operator kondisi dan deskripsi tentang cara kerjanya, lihat [Operator kondisi](reference_policies_elements_condition_operators.md).
+ Kecuali ditentukan lain, semua kunci konteks dapat memiliki beberapa nilai. Untuk deskripsi tentang cara menangani kunci konteks yang memiliki beberapa nilai, lihat[Tetapkan operator untuk kunci konteks multivaluasi](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys).
+ Untuk daftar semua kunci konteks yang tersedia secara global, lihat[AWS kunci konteks kondisi global](reference_policies_condition-keys.md).
+ Untuk kunci konteks kondisi yang ditentukan oleh setiap layanan, lihat [Tindakan, Sumber Daya, dan Kunci Kondisi untuk AWS Layanan](reference_policies_actions-resources-contextkeys.html).

## Konteks permintaan
<a name="AccessPolicyLanguage_RequestContext"></a>

Ketika [kepala sekolah](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#principal) membuat [permintaan](intro-structure.md#intro-structure-request) AWS, AWS mengumpulkan informasi permintaan ke dalam konteks permintaan. Konteks permintaan mencakup informasi tentang prinsipal, sumber daya, tindakan, dan sifat lingkungan lainnya. Evaluasi kebijakan mencocokkan properti dalam kebijakan terhadap properti yang dikirim dalam permintaan untuk mengevaluasi dan mengotorisasi tindakan yang dapat Anda lakukan. AWS

Anda dapat menggunakan `Condition` elemen kebijakan JSON untuk menguji kunci konteks tertentu terhadap konteks permintaan. Misalnya, Anda dapat membuat kebijakan yang menggunakan kunci CurrentTime konteks [aws:](reference_policies_condition-keys.md#condition-keys-currenttime) untuk [memungkinkan pengguna melakukan tindakan hanya dalam rentang tanggal tertentu](reference_policies_examples_aws-dates.md).

Contoh berikut menunjukkan representasi konteks permintaan ketika Martha Rivera mengirim permintaan untuk menonaktifkan perangkat MFA-nya.

```
Principal: AROA123456789EXAMPLE
Action: iam:DeactivateMFADevice
Resource: arn:aws:iam::user/martha
Context:
  – aws:UserId=AROA123456789EXAMPLE:martha
  – aws:PrincipalAccount=1123456789012
  – aws:PrincipalOrgId=o-example
  – aws:PrincipalARN=arn:aws:iam::1123456789012:assumed-role/TestAR
  – aws:MultiFactorAuthPresent=true
  – aws:MultiFactorAuthAge=2800
  – aws:CurrentTime=...
  – aws:EpochTime=...
  – aws:SourceIp=...
```

Konteks permintaan dicocokkan dengan kebijakan yang memungkinkan pengguna menghapus perangkat autentikasi multi-faktor (MFA) mereka sendiri, tetapi hanya jika mereka telah masuk menggunakan MFA dalam satu jam terakhir (3.600 detik).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "AllowRemoveMfaOnlyIfRecentMfa",
        "Effect": "Allow",
        "Action": [
            "iam:DeactivateMFADevice"
        ],
        "Resource": "arn:aws:iam::*:user/${aws:username}",
        "Condition": {
            "NumericLessThanEquals": {"aws:MultiFactorAuthAge": "3600"}
        }
    }
}
```

------

Dalam contoh ini, kebijakan cocok dengan konteks permintaan: tindakannya sama, sumber daya cocok dengan wildcard “\$1”, dan nilainya `aws:MultiFactorAuthAge` adalah 2800, yang kurang dari 3600, sehingga kebijakan mengizinkan permintaan otorisasi ini.

AWS mengevaluasi setiap kunci konteks dalam kebijakan dan mengembalikan nilai *true* atau *false*. Kunci konteks yang tidak ada dalam permintaan dianggap sebagai ketidakcocokan.

Konteks permintaan dapat mengembalikan nilai-nilai berikut:
+ **Benar** – Jika pemohon masuk menggunakan MFA dalam satu jam terakhir atau kurang, maka ketentuan kembali ke *benar*.
+ **Salah** – Jika pemohon masuk menggunakan MFA lebih dari satu jam yang lalu, maka ketentuan kembali ke *salah*.
  + **Tidak hadir** - Jika pemohon membuat permintaan menggunakan kunci akses pengguna IAM mereka di AWS CLI atau AWS API, kunci tidak ada. Dalam hal ini, kuncinya tidak ada, dan kunci tidak akan cocok.

**catatan**  
Dalam beberapa kasus, ketika nilai kunci kondisi tidak ada, kondisi masih dapat mengembalikan nilai true. Misalnya, jika Anda menambahkan `ForAllValues` qualifier, permintaan akan mengembalikan nilai true jika kunci konteks tidak ada dalam permintaan. Untuk mencegah kunci konteks atau kunci konteks yang hilang dengan nilai kosong dievaluasi menjadi true, Anda dapat menyertakan [operator kondisi Null](reference_policies_elements_condition_operators.md#Conditions_Null) dalam kebijakan Anda dengan `false` nilai untuk memeriksa apakah kunci konteks ada dan nilainya bukan null.

## Blok ketentuan
<a name="AccessPolicyLanguage_ConditionBlock"></a>

Contoh berikut menunjukkan format dasar dari elemen `Condition`:

```
"Condition": {"StringLike": {"s3:prefix": ["jane/*"]}}
```

Nilai dari permintaan diwakili oleh kunci konteks, dalam hal ini`s3:prefix`. Nilai kunci konteks dibandingkan dengan nilai yang Anda tentukan sebagai nilai literal, seperti`jane/*`. Jenis perbandingan yang akan dibuat ditentukan oleh [operator kondisi](reference_policies_elements_condition_operators.md) (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 operator](reference_policies_elements_condition_operators.md#Conditions_String) [ARN](reference_policies_elements_condition_operators.md#Conditions_ARN), Anda juga dapat menggunakan [variabel kebijakan](reference_policies_variables.md) 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 [Tetapkan operator untuk kunci konteks multivaluasi](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys). 

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
<a name="Condition-multiple-conditions"></a>

Sebuah `Condition` elemen dapat berisi beberapa operator kondisi, dan setiap operator kondisi dapat berisi beberapa pasangan kunci-nilai konteks. Gambar berikut mengilustrasikan hal ini. 

![\[dua diagram blok operator kondisi. Blok pertama mencakup dua placeholder kunci konteks, masing-masing dengan beberapa nilai. Blok kondisi kedua mencakup satu kunci konteks dengan beberapa nilai.\]](http://docs.aws.amazon.com/id_id/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block.diagram.png)


Lihat informasi yang lebih lengkap di [Tetapkan operator untuk kunci konteks multivaluasi](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys). 

# Elemen kebijakan JSON IAM: Operator kondisi
<a name="reference_policies_elements_condition_operators"></a>

<a name="topiclist"></a>

Gunakan operator ketentuan di elemen `Condition` untuk mencocokkan kunci kondisi dan nilai di dalam kebijakan terhadap nilai di dalam konteks permintaan. Untuk informasi selengkapnya tentang elemen `Condition`, lihat [Elemen kebijakan IAM JSON: Condition](reference_policies_elements_condition.md).

Operator ketentuan yang dapat Anda gunakan dalam kebijakan tergantung pada kunci kondisi yang Anda pilih. Anda dapat memilih kunci kondisi global atau kunci kondisi khusus layanan. Untuk mempelajari operator ketentuan mana yang dapat Anda gunakan pada kunci kondisi global, lihat [AWS kunci konteks kondisi global](reference_policies_condition-keys.md). Untuk mempelajari operator kondisi mana yang dapat Anda gunakan untuk kunci kondisi khusus layanan, lihat [Tindakan, Sumber Daya, dan Kunci Kondisi untuk AWS Layanan](reference_policies_actions-resources-contextkeys.html) dan pilih layanan yang ingin Anda lihat.

**penting**  
Jika kunci yang Anda tentukan dalam kondisi kebijakan tidak ada dalam konteks permintaan, nilainya tidak cocok dan kondisinya *salah*. Jika kondisi kebijakan mengharuskan kunci *tidak* cocok, seperti `StringNotLike` atau`ArnNotLike`, dan kunci kanan tidak ada, kondisi tersebut *benar*. Logika ini berlaku untuk semua operator kondisi kecuali[... IfExists](#Conditions_IfExists)dan [cek Null](#Conditions_Null). Operator ini menguji apakah kuncinya ada (exists) dalam konteks permintaan.

Operator ketentuan dapat dikelompokkan ke dalam kategori berikut:
+ [Tali](#Conditions_String)
+ [Numerik](#Conditions_Numeric)
+ [Tanggal dan waktu](#Conditions_Date)
+ [Boolean](#Conditions_Boolean)
+ [Biner](#Conditions_BinaryEquals)
+ [Alamat IP](#Conditions_IPAddress)
+ [Amazon Resource Name (ARN)](#Conditions_ARN) (hanya tersedia untuk beberapa layanan.)
+ [... IfExists](#Conditions_IfExists)(memeriksa apakah nilai kunci ada sebagai bagian dari pemeriksaan lain)
+ [Pemeriksaan null](#Conditions_Null) (memeriksa apakah nilai kunci ada sebagai cek mandiri)

## Operator ketentuan string
<a name="Conditions_String"></a>

Operator ketentuan string memungkinkan Anda membangun elemen `Condition` yang membatasi akses berdasarkan perbandingan kunci ke nilai string.
+  **Variabel kebijakan** - [Didukung](reference_policies_variables.md)
+ **Wildcard** [- Didukung](#Conditions_String-wildcard)


****  

| Operator ketentuan | Deskripsi | 
| --- | --- | 
|   `StringEquals`   |  Kecocokan yang tepat, peka terhadap huruf besar-kecil  | 
|   `StringNotEquals`   |  Pencocokan dinegasikan  | 
|   `StringEqualsIgnoreCase`   |  Pencocokan yang tepat, mengabaikan huruf besar-kecil  | 
|   `StringNotEqualsIgnoreCase`   |  Pencocokan yang dinegasikan, mengabaikan huruf besar-kecil  | 
|   `StringLike`   | Kecocokan kepekaan huruf besar-kecil. Nilainya dapat mencakup wildcard pencocokan multi-karakter (\$1) dan wildcard pencocokan karakter tunggal (?) di mana saja di string. Anda harus menentukan wildcard untuk mencapai kecocokan string paral.   Jika kunci berisi beberapa nilai, `StringLike` dapat dikualifikasikan dengan operator yang ditetapkan— `ForAllValues:StringLike` dan`ForAnyValue:StringLike`. Untuk informasi selengkapnya, lihat [Tetapkan operator untuk kunci konteks multivaluasi](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys).   | 
|   `StringNotLike`   |  Kecocokan dinegasikan kepekaan huruf besar-kecil. Nilai dapat mencakup wildcard pencocokan multi-karakter (\$1) atau wildcard pencocokan karakter tunggal (?) di mana saja di string.  | 

**Example operator kondisi string**  
Misalnya, pernyataan berikut berisi `Condition` elemen yang menggunakan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag)kunci untuk menentukan bahwa prinsipal yang membuat permintaan harus ditandai dengan kategori `iamuser-admin` pekerjaan.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalTag/job-category": "iamuser-admin"
            }
        }
    }
}
```
Jika kunci yang Anda sebutkan dalam ketentuan kebijakan tidak ada dalam konteks permintaan, nilainya tidak cocok. Dalam contoh ini, kunci `aws:PrincipalTag/job-category` ada dalam konteks permintaan jika prinsipnya menggunakan pengguna IAM dengan tag terlampir. Juga disertakan untuk prinsipal menggunakan IAM role dengan tanda terlampir atau tanda sesi. Jika pengguna tanpa tanda mencoba melihat atau mengedit access key, ketentuan akan kembali `false` dan permintaan tersebut ditolak secara tersirat oleh pernyataan ini.  
Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.  


| Kondisi Kebijakan | Konteks Permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  | <pre>aws:PrincipalTag/job-category:<br />  – iamuser-admin</pre>  |  Pertandingan | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  | <pre>aws:PrincipalTag/job-category:<br />  – dev-ops</pre>  | Tidak ada kecocokan | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/job-category": "iamuser-admin"<br />}</pre>  |  Tidak `aws:PrincipalTag/job-category` dalam konteks permintaan.  | Tidak ada kecocokan | 

**Example menggunakan variabel kebijakan dengan operator kondisi string**  
Contoh berikut menggunakan operator ketentuan `StringLike` untuk melakukan pencocokan string dengan [variabel kebijakan](reference_policies_variables.md) untuk membuat kebijakan yang memungkinkan pengguna IAM menggunakan konsol Amazon S3 untuk mengelola "direktori beranda"-nya sendiri dalam bucket Amazon S3. Kebijakan tersebut mengizinkan tindakan tertentu pada bucket S3 selama `s3:prefix` cocok dengan salah satu pola yang ditentukan.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "",
            "home/",
            "home/${aws:username}/"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}",
        "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:username}/*"
      ]
    }
  ]
}
```
Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini untuk pengguna yang berbeda berdasarkan [aws:username](reference_policies_condition-keys.md#condition-keys-username) nilai dalam konteks permintaan.  


| Kondisi kebijakan | Konteks permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  | <pre>aws:username:<br />  – martha_rivera</pre>  | <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/martha_rivera/"<br />  ]<br />}</pre>  | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  |  <pre>aws:username:<br />  – nikki_wolf</pre>  |  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/nikki_wolf/"<br />  ]<br />}</pre>  | 
|  <pre>"StringLike": {<br />  "s3:prefix": [<br />    "home/",<br />    "home/${aws:username}/"<br />  ]<br />}</pre>  |  Tidak `aws:username` dalam konteks permintaan.  | Tidak ada kecocokan | 
Untuk contoh kebijakan yang menunjukkan cara menggunakan `Condition` elemen untuk membatasi akses ke sumber daya berdasarkan ID aplikasi dan ID pengguna untuk federasi OIDC, lihat. [Amazon S3: Memungkinkan pengguna Amazon Cognito mengakses objek di bucket mereka](reference_policies_examples_s3_cognito-bucket.md) 

### Operator kondisi string multivaluasi
<a name="conditions_string_multivalued"></a>

Jika kunci dalam permintaan berisi beberapa nilai, operator string dapat dikualifikasikan dengan operator set `ForAllValues` dan`ForAnyValue`. Untuk informasi selengkapnya tentang logika evaluasi beberapa kunci konteks atau nilai, lihat[Tetapkan operator untuk kunci konteks multivaluasi](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys).


| Operator ketentuan | Deskripsi | 
| --- | --- | 
|  `ForAllValues:StringEquals` `ForAllValues:StringEqualsIgnoreCase`  |  Semua nilai untuk kunci kondisi dalam permintaan harus cocok dengan setidaknya satu nilai dalam kebijakan Anda.  | 
|  `ForAnyValue:StringEquals` `ForAnyValue:StringEqualsIgnoreCase`  |  Setidaknya satu nilai kunci kondisi dalam permintaan harus cocok dengan salah satu nilai dalam kebijakan Anda.  | 
|  `ForAllValues:StringNotEquals` `ForAllValues:StringNotEqualsIgnoreCase`  |  Pencocokan yang dinegasikan. Tak satu pun dari nilai kunci konteks dalam permintaan dapat cocok dengan salah satu nilai kunci konteks dalam kebijakan Anda.  | 
|  `ForAnyValue:StringNotEquals` `ForAnyValue:StringNotEqualsIgnoreCase`  |  Pencocokan yang dinegasikan. Setidaknya satu nilai kunci konteks dalam permintaan TIDAK boleh cocok dengan nilai apa pun dalam kunci konteks dalam kebijakan Anda.  | 
|  `ForAllValues:StringLike`  |  Semua nilai untuk kunci kondisi dalam permintaan harus cocok dengan setidaknya satu nilai dalam kebijakan Anda.  | 
|  `ForAnyValue:StringLike`  |  Setidaknya satu nilai kunci kondisi dalam permintaan harus cocok dengan salah satu nilai dalam kebijakan Anda.  | 
|  `ForAllValues:StringNotLike`  |  Pencocokan yang dinegasikan. Tak satu pun dari nilai kunci konteks dalam permintaan dapat cocok dengan salah satu nilai kunci konteks dalam kebijakan Anda.  | 
|  `ForAnyValue:StringNotLike`  |  Pencocokan yang dinegasikan. Setidaknya satu nilai kunci konteks dalam permintaan TIDAK boleh cocok dengan nilai apa pun dalam kunci konteks dalam kebijakan Anda.  | 

**Example menggunakan `ForAnyValue` dengan operator kondisi string**  
Contoh ini menunjukkan cara Anda membuat kebijakan berbasis identitas yang memungkinkan penggunaan `CreateTags` tindakan Amazon EC2 untuk melampirkan tag ke instance. Saat Anda menggunakan`StringEqualsIgnoreCase`, Anda dapat melampirkan tag hanya jika tag berisi `environment` kunci dengan `preprod` atau `storage` nilai. Ketika Anda menambahkan `IgnoreCase` ke operator, Anda mengizinkan kapitalisasi nilai tag yang ada, seperti,, dan `preprod` `Preprod``PreProd`, untuk menyelesaikan ke true.  
Saat Anda menambahkan `ForAnyValue` pengubah dengan kunci [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) kondisi, setidaknya satu nilai kunci tag dalam permintaan harus cocok dengan nilainya`environment`. `ForAnyValue`perbandingan bersifat peka huruf besar/kecil, yang menghentikan pengguna menggunakan case yang salah untuk kunci tag, seperti menggunakan `Environment` alih-alih`environment`.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "ec2:CreateTags",
    "Resource": "arn:aws:ec2:*:*:instance/*",
    "Condition": {
      "StringEqualsIgnoreCase": {
        "aws:RequestTag/environment": [
          "preprod",
          "storage"
        ]
      },
      "ForAnyValue:StringEquals": {
        "aws:TagKeys": "environment"
      }
    }
  }
}
```
 Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.   


| Kondisi kebijakan | Konteks permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />aws:RequestTag/environment:<br />  – preprod</pre>  | Pertandingan  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – costcenter<br />aws:RequestTag/environment:<br />  – PreProd</pre>  | Pertandingan  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – Environment<br />aws:RequestTag/Environment:<br />  – preprod</pre>  | Tidak ada kecocokan  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – costcenter<br />aws:RequestTag/environment:<br />  – preprod</pre>  | Tidak ada kecocokan  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  |  Tidak `aws:TagKeys` dalam konteks permintaan. <pre>aws:RequestTag/environment:<br />  – storage</pre>  | Tidak ada kecocokan  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre> Tidak `aws:RequestTag/environment` dalam konteks permintaan.  | Tidak ada kecocokan  | 
|  <pre>"StringEqualsIgnoreCase": {<br />  "aws:RequestTag/environment": [<br />    "preprod",<br />    "storage"<br />  ]<br />},<br />"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "environment"<br />}</pre>  |  Tidak `aws:TagKeys` dalam konteks permintaan. Tidak `aws:RequestTag/environment` dalam konteks permintaan.  | Tidak ada kecocokan  | 

### Pencocokan wildcard
<a name="Conditions_String-wildcard"></a>

Operator kondisi string melakukan pencocokan tanpa pola yang tidak menerapkan format yang telah ditentukan sebelumnya. ARN dan operator kondisi Tanggal adalah subset dari operator string yang menegakkan struktur pada nilai kunci kondisi.

Kami menyarankan Anda menggunakan operator kondisi yang sesuai dengan nilai yang Anda bandingkan kunci. Misalnya, Anda harus menggunakan [Operator ketentuan string](#Conditions_String) saat membandingkan kunci dengan nilai string. Demikian pula, Anda harus menggunakan [Operator ketentuan Amazon Resource Name (ARN)](#Conditions_ARN) saat membandingkan kunci dengan nilai ARN.

**Example**  
Contoh ini menunjukkan bagaimana Anda dapat membuat batas seputar sumber daya di organisasi Anda. Kondisi dalam kebijakan ini menolak akses ke tindakan Amazon S3 kecuali sumber daya yang diakses berada dalam kumpulan unit organisasi OUs () tertentu di. AWS Organizations AWS Organizations Path adalah representasi teks dari struktur entitas organisasi.  
Kondisi mengharuskan yang `aws:ResourceOrgPaths` berisi salah satu jalur OU yang terdaftar. Karena `aws:ResourceOrgPaths` merupakan kondisi multi-nilai, kebijakan menggunakan `ForAllValues:StringNotLike` operator untuk membandingkan nilai `aws:ResourceOrgPaths` dengan daftar OUs dalam kebijakan.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyS3AccessOutsideMyBoundary",
      "Effect": "Deny",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:ResourceOrgPaths": [
            "o-acorg/r-acroot/ou-acroot-mediaou/",
            "o-acorg/r-acroot/ou-acroot-sportsou/*"
          ] 
        }
      }
    }
  ]
}
```
Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.  


| Kondisi kebijakan | Konteks permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  | <pre>aws:ResourceOrgPaths:<br />  – o-acorg/r-acroot/ou-acroot-sportsou/costcenter/</pre>  | Pertandingan | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  | <pre>aws:ResourceOrgPaths:<br />  – o-acorg/r-acroot/ou-acroot-mediaou/costcenter/</pre>  | Tidak ada kecocokan | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:ResourceOrgPaths": [<br />    "o-acorg/r-acroot/ou-acroot-mediaou/",<br />    "o-acorg/r-acroot/ou-acroot-sportsou/*"<br />  ] <br />}</pre>  |  Tidak `aws:ResourceOrgPaths:` dalam permintaan.  | Tidak ada kecocokan | 

## Operator ketentuan numerik
<a name="Conditions_Numeric"></a>

Operator ketentuan numerik memungkinkan Anda membangun elemen `Condition` yang membatasi akses berdasarkan perbandingan kunci ke nilai bilangan bulat atau desimal.
+  **Variabel kebijakan** - Tidak didukung
+ **Wildcard** - Tidak didukung


****  

| Operator ketentuan | Deskripsi | 
| --- | --- | 
|   `NumericEquals`   |  Pencocokan  | 
|   `NumericNotEquals`   |  Pencocokan dinegasikan  | 
|   `NumericLessThan`   |  Pencocokan “Kurang dari”  | 
|   `NumericLessThanEquals`   |  Pencocokan “kurang dari atau sama dengan”  | 
|   `NumericGreaterThan`   |  Pencocokan “lebih besar dari”  | 
|   `NumericGreaterThanEquals`   |  Pencocokan “lebih besar dari atau sama dengan”  | 

Misalnya, pernyataan berikut memuat elemen `Condition` yang menggunakan operator ketentuan `NumericLessThanEquals` dengan kunci `s3:max-keys` untuk menentukan bahwa pemohon dapat membuat daftar *hingga* 10 objek dalam `amzn-s3-demo-bucket` sekali waktu.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {"NumericLessThanEquals": {"s3:max-keys": "10"}}
  }
}
```

------

Jika kunci yang Anda sebutkan dalam ketentuan kebijakan tidak ada dalam konteks permintaan, nilainya tidak cocok. Dalam contoh ini, kunci `s3:max-keys` selalu hadir dalam permintaan saat Anda melakukan operasi `ListBucket`. Jika kebijakan ini mengizinkan semua operasi Amazon S3 maka hanya operasi yang mencakup kunci konteks `max-keys` yang bernilai kurang dari atau sama dengan 10 akan diperbolehkan. 

## Operator ketentuan tanggal
<a name="Conditions_Date"></a>

Operator kondisi tanggal memungkinkan Anda membangun `Condition` elemen yang membatasi akses berdasarkan membandingkan kunci dengan nilai. date/time Anda menggunakan operator kondisi ini dengan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-currenttime)kunci atau [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-epochtime)kunci. Anda harus menentukan date/time nilai dengan salah satu [implementasi W3C dari format tanggal ISO 8601](http://www.w3.org/TR/NOTE-datetime) atau dalam waktu epoch (UNIX). 
+  **Variabel kebijakan** - Tidak didukung
+ **Wildcard** - Tidak didukung


****  

| Operator ketentuan | Deskripsi | 
| --- | --- | 
|   `DateEquals`   |  Mencocokkan tanggal tertentu  | 
|   `DateNotEquals`   |  Pencocokan dinegasikan  | 
|   `DateLessThan`   |  Sesuai sebelum tanggal dan waktu tertentu  | 
|   `DateLessThanEquals`   |  Sesuai pada atau sebelum tanggal dan waktu tertentu  | 
|   `DateGreaterThan`   |  Sesuai setelah tanggal dan waktu tertentu  | 
|   `DateGreaterThanEquals`   |  Sesuai pada atau setelah tanggal dan waktu tertentu  | 

Misalnya, pernyataan berikut memuat elemen `Condition` yang menggunakan operator ketentuan `DateGreaterThan` dengan kunci [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tokenissuetime). Ketentuan ini menyebutkan bahwa kredensial keamanan sementara yang digunakan untuk membuat permintaan tersebut diterbitkan pada 2020. Kebijakan ini dapat secara terprogram diperbarui setiap hari untuk memastikan anggota akun menggunakan kredensial baru.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "DateGreaterThan": {
                "aws:TokenIssueTime": "2020-01-01T00:00:01Z"
            }
        }
    }
}
```

------

Jika kunci yang Anda sebutkan dalam ketentuan kebijakan tidak ada dalam konteks permintaan, nilainya tidak cocok. Kunci `aws:TokenIssueTime` tersedia dalam konteks permintaan hanya ketika prinsipal menggunakan kredensial sementara untuk membuat permintaan. Kuncinya tidak ada dalam AWS CLI, AWS API, atau permintaan AWS SDK yang dibuat menggunakan kunci akses. Dalam contoh ini, jika pengguna IAM mencoba untuk melihat atau mengedit kunci akses, permintaan ditolak.

## Operator ketentuan Boolean
<a name="Conditions_Boolean"></a>

Kondisi Boolean memungkinkan Anda membangun `Condition` elemen yang membatasi akses berdasarkan membandingkan kunci ke atau. `true` `false`

Jika kunci berisi beberapa nilai, operator boolean dapat memenuhi syarat dengan operator set `ForAllValues` dan`ForAnyValue`. Untuk informasi selengkapnya tentang logika evaluasi beberapa kunci konteks atau nilai, lihat[Tetapkan operator untuk kunci konteks multivaluasi](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys).
+  **Variabel kebijakan** - [Didukung](reference_policies_variables.md)
+ **Wildcard** - Tidak didukung


****  

| Operator ketentuan | Deskripsi | 
| --- | --- | 
|   `Bool`   |  Pencocokan Boolean  | 
|   `ForAllValues:Bool`   |  Gunakan dengan Array tipe data Bool. Semua boolean dalam nilai kunci konteks harus cocok dengan nilai boolean dalam kebijakan Anda. Untuk mencegah `ForAllValues` operator mengevaluasi kunci konteks atau kunci konteks yang hilang dengan nilai kosong sebagai Diizinkan, Anda dapat menyertakan [operator kondisi Null dalam kebijakan](#Conditions_Null) Anda.  | 
|   `ForAnyValue:Bool`   |  Gunakan dengan Array tipe data Bool. Setidaknya salah satu boolean dalam nilai kunci konteks harus cocok dengan nilai boolean dalam kebijakan Anda.  | 

**Example operator kondisi boolean**  
Kebijakan berbasis identitas berikut menggunakan operator `Bool` kondisi dengan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport)kunci untuk menolak mereplikasi objek dan tag objek ke bucket tujuan dan isinya jika permintaan tidak melalui SSL.  
Kebijakan ini tidak mengizinkan tindakan apa pun. Gunakan kebijakan ini bersama dengan kebijakan lain yang mengizinkan tindakan tertentu.   
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "BooleanExample",
      "Action": "s3:ReplicateObject",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket",
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {
        "Bool": {
          "aws:SecureTransport": "false"
        }
      }
    }
  ]
}
```
Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.  


| Kondisi kebijakan | Konteks permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  | <pre>aws:SecureTransport:<br />  – false</pre>  | Pertandingan | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  | <pre>aws:SecureTransport:<br />  – true</pre>  | Tidak ada kecocokan | 
|  <pre>"Bool": {<br />  "aws:SecureTransport": "false"<br />}</pre>  |  Tidak `aws:SecureTransport` dalam konteks permintaan.  | Tidak ada kecocokan | 

## Operator ketentuan biner
<a name="Conditions_BinaryEquals"></a>

Operator `BinaryEquals` kondisi memungkinkan Anda membangun `Condition` elemen yang menguji nilai kunci yang ada dalam format biner. Ini membandingkan nilai dari byte kunci yang ditentukan untuk byte terhadap perwakilan terkode [base-64](https://en.wikipedia.org/wiki/Base64) dari nilai biner di dalam kebijakan. Jika kunci yang Anda sebutkan dalam ketentuan kebijakan tidak ada dalam konteks permintaan, nilainya tidak cocok.
+  **Variabel kebijakan** - Tidak didukung
+ **Wildcard** - Tidak didukung

```
"Condition" : {
  "BinaryEquals": {
    "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="
  }
}
```


| Kondisi kebijakan | Konteks permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  | <pre>key:<br />  – QmluYXJ5VmFsdWVJbkJhc2U2NA==</pre>  | Pertandingan | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  | <pre>key:<br />  – ASIAIOSFODNN7EXAMPLE</pre>  | Tidak ada kecocokan | 
|  <pre>"BinaryEquals": {<br />  "key" : "QmluYXJ5VmFsdWVJbkJhc2U2NA=="<br />}</pre>  |  Tidak `key` dalam konteks permintaan.  | Tidak ada kecocokan | 

## Operator ketentuan alamat IP
<a name="Conditions_IPAddress"></a>

Operator kondisi alamat IP memungkinkan Anda membangun `Condition` elemen yang membatasi akses berdasarkan membandingkan kunci dengan IPv4 atau IPv6 alamat atau rentang alamat IP. Anda menggunakan ini dengan kunci [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip). Nilai harus dalam format CIDR standar (misalnya, 203.0.113.0/24 atau 2001:: 1234:5678: :/64). DB8 Jika Anda menentukan alamat IP tanpa prefiks perutean yang terkait, IAM menggunakan nilai prefiks default dari `/32`.

Beberapa AWS layanan mendukung IPv6, menggunakan:: untuk mewakili rentang 0. Untuk mempelajari apakah suatu layanan mendukung IPv6, lihat dokumentasi untuk layanan tersebut.
+  **Variabel kebijakan** - Tidak didukung
+ **Wildcard** - Tidak didukung


****  

| Operator ketentuan | Deskripsi | 
| --- | --- | 
|   `IpAddress`   |  Alamat IP atau rentang yang ditentukan  | 
|   `NotIpAddress`   |  Semua alamat IP kecuali alamat dan rentang IP yang ditentukan  | 

**Example Operator kondisi alamat IP**  
Pernyataan berikut menggunakan operator `IpAddress` kondisi dengan `aws:SourceIp` kunci untuk menentukan bahwa permintaan harus berasal dari rentang IP 203.0.113.0 hingga 203.0.113.255.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/*",
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": "203.0.113.0/24"
            }
        }
    }
}
```
Kunci kondisi `aws:SourceIp` menyelesaikan ke alamat IP yang berasal dari permintaan asli. Jika permintaan berasal dari instans Amazon EC2, `aws:SourceIp` mengevaluasi alamat IP publik instans.   
Jika kunci yang Anda sebutkan dalam ketentuan kebijakan tidak ada dalam konteks permintaan, nilainya tidak cocok. Kunci `aws:SourceIp` selalu ada dalam konteks permintaan, kecuali saat pemohon menggunakan VPC endpoint untuk membuat permintaan. Dalam hal ini, ketentuan mengembalikan `false` dan permintaan tersebut ditolak secara tersirat oleh pernyataan ini.  
Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.  


| Kondisi kebijakan | Konteks permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"IpAddress": {<br />  "aws:SourceIp": "203.0.113.0/24"<br />}</pre>  | <pre>aws:SourceIp:<br />  – 203.0.113.1</pre>  | Pertandingan | 
|  <pre>"IpAddress": {<br />  "aws:SourceIp": "203.0.113.0/24"<br />}</pre>  | <pre>aws:SourceIp:<br />  – 198.51.100.1</pre>  | Tidak ada kecocokan | 
Contoh berikut menunjukkan cara mencampur IPv4 dan IPv6 alamat untuk mencakup semua alamat IP valid organisasi Anda. Kami menyarankan agar Anda memperbarui kebijakan organisasi Anda dengan rentang IPv6 alamat Anda selain IPv4 rentang yang sudah Anda miliki untuk memastikan kebijakan terus berfungsi saat Anda melakukan transisi IPv6.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "someservice:*",
    "Resource": "*",
    "Condition": {
      "IpAddress": {
        "aws:SourceIp": [
          "203.0.113.0/24",
          "2001:DB8:1234:5678::/64"
        ]
      }
    }
  }
}
```
Kunci kondisi `aws:SourceIp` hanya berfungsi dalam kebijakan JSON jika Anda menghubungi API yang diuji secara langsung sebagai pengguna. Jika Anda menggunakan layanan untuk menelepon layanan target atas nama Anda, layanan target akan melihat alamat IP layanan panggilan, bukan alamat IP pengguna asal. Ini dapat terjadi, misalnya, jika Anda menggunakan AWS CloudFormation untuk memanggil Amazon EC2 untuk membuat instance untuk Anda. Saat ini tidak ada cara untuk menyampaikan alamat IP asal melalui layanan panggilan ke layanan target untuk evaluasi di kebijakan JSON. Untuk tipe panggilan API layanan ini, jangan gunakan kunci kondisi `aws:SourceIp`.

## Operator ketentuan Amazon Resource Name (ARN)
<a name="Conditions_ARN"></a>

Operator ketentuan Amazon Resource Name (ARN) memungkinkan Anda membangun elemen `Condition` yang membatasi akses berdasarkan perbandingan kunci ke ARN. ARN dianggap sebagai string.
+  **Variabel kebijakan** - [Didukung](reference_policies_variables.md)
+ **Wildcard** [- Didukung](reference_policies_elements_resource.md#reference_policies_elements_resource_wildcards)


****  

| Operator ketentuan | Deskripsi | 
| --- | --- | 
|   `ArnEquals`, `ArnLike`  |  Kecocokan huruf besar-kecil dari ARN. Masing-masing dari enam komponen ARN yang dibatasi titik dua diperiksa secara terpisah dan masing-masing dapat menyertakan wildcard pencocokan multi-karakter (\$1) atau wildcard pencocokan karakter tunggal (?). Operator `ArnEquals` dan `ArnLike` kondisi berperilaku identik.  | 
|   `ArnNotEquals`, `ArnNotLike`  |  Pencocokan negasi untuk ARN. Operator `ArnNotEquals` dan `ArnNotLike` kondisi berperilaku identik.  | 

**Example Operator kondisi ARN**  
Contoh kebijakan berbasis sumber daya berikut ini menunjukkan kebijakan yang terlampir pada antrean Amazon SQS di mana Anda ingin mengirimkan pesan SNS. Ini memberi izin Amazon SNS untuk mengirimkan pesan ke antrean (atau antrean-antrean) pilihan Anda, tetapi hanya jika layanan tersebut mengirimkan pesan atas nama topik (atau topik) Amazon SNS tertentu. Anda menentukan antrean di bidang `Resource`, dan topik Amazon SNS sebagai nilai untuk kunci `SourceArn`.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": {
            "Service": "sns.amazonaws.com"
        },
        "Action": "SQS:SendMessage",
        "Resource": "arn:aws:sqs:us-east-1:123456789012:QUEUE-ID",
        "Condition": {
            "ArnEquals": {
                "aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:TOPIC-ID"
            }
        }
    }
}
```
Kunci [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) muncul dalam konteks permintaan hanya jika sumber daya memicu layanan untuk menghubungi layanan lain atas nama pemilik sumber daya. Jika pengguna IAM mencoba melakukan operasi ini secara langsung, ketentuan akan kembali `false` dan permintaan tersebut ditolak secara tersirat oleh pernyataan ini.  
Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.  


| Kondisi kebijakan | Konteks permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  | <pre>aws:SourceArn:<br />  – arn:aws:sns:us-west-2:123456789012:TOPIC-ID</pre>  | Pertandingan | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  | <pre>aws:SourceArn:<br />  – arn:aws:sns:us-west-2:777788889999:TOPIC-ID</pre>  | Tidak ada kecocokan | 
|  <pre>"ArnEquals": {<br />  "aws:SourceArn": "arn:aws:sns:us-west-2:123456789012:TOPIC-ID"<br />}</pre>  |  Tidak `aws:SourceArn` dalam konteks permintaan.  | Tidak ada kecocokan | 

### Operator kondisi ARN multivaluasi
<a name="conditions_arn_multivalued"></a>

Jika kunci dalam permintaan berisi beberapa nilai, operator ARN dapat memenuhi syarat dengan operator yang ditetapkan dan. `ForAllValues` `ForAnyValue` Untuk informasi selengkapnya tentang logika evaluasi beberapa kunci konteks atau nilai, lihat[Tetapkan operator untuk kunci konteks multivaluasi](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys).


| Operator ketentuan | Deskripsi | 
| --- | --- | 
|  `ForAllValues:ArnEquals` `ForAllValues:ArnLike`  |  Semua ARNs dalam konteks permintaan harus cocok setidaknya satu dari pola ARN dalam kebijakan Anda.  | 
|  `ForAnyValue:ArnEquals` `ForAnyValue:ArnLike`  |  Setidaknya satu ARN dalam konteks permintaan harus cocok dengan salah satu pola ARN dalam kebijakan Anda.  | 
|  `ForAllValues:ArnNotEquals` `ForAllValues:ArnNotLike`  |  Pencocokan yang dinegasikan. Tak satu pun ARNs dalam konteks permintaan dapat mencocokkan pola ARN string apa pun dalam kebijakan Anda.  | 
|  `ForAnyValue:ArnNotEquals` `ForAnyValue:ArnNotLike`  |  Pencocokan yang dinegasikan. Setidaknya satu ARN dalam konteks permintaan TIDAK boleh cocok dengan pola ARN mana pun dalam kebijakan Anda.  | 

**Example menggunakan `ForAllValues` dengan operator kondisi ARN**  
Contoh berikut digunakan `ForAllValues:ArnLike` untuk membuat atau memperbarui sumber pengiriman logis untuk CloudWatch log Amazon Logs. Blok kondisi menyertakan kunci kondisi [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-policy-keys](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-policy-keys)untuk memfilter sumber daya pembangkit log yang ARNs diteruskan dalam permintaan. Dengan menggunakan operator kondisi ini, semua permintaan harus cocok dengan setidaknya satu ARN dalam polis. ARNs     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "logs:PutDeliverySource",
            "Resource": "arn:aws:logs:us-east-1:123456789012:delivery-source:*",
            "Condition": {
                "ForAllValues:ArnLike": {
                    "logs:LogGeneratingResourceArns": [
                        "arn:aws:cloudfront::123456789012:distribution/*",
                        "arn:aws:cloudfront::123456789012:distribution/support*"
                    ]
                }
            }
        }
    ]
}
```
Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.  


| Kondisi kebijakan | Konteks permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter</pre>  | Pertandingan | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter<br />  – arn:aws::cloudfront:123456789012:distribution/support2025</pre>  | Pertandingan | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:123456789012:distribution/costcenter<br />  – arn:aws::cloudfront:123456789012:distribution/admin</pre>  | Tidak ada kecocokan | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  | <pre>logs:LogGeneratingResourceArns:<br />  – arn:aws::cloudfront:777788889999:distribution/costcenter</pre>  | Tidak ada kecocokan | 
|  <pre>"ForAllValues:ArnLike": {<br />  "logs:LogGeneratingResourceArns": [<br />    "arn:aws::cloudfront:123456789012:distribution/*",<br />    "arn:aws::cloudfront:123456789012:distribution/support*"<br />  ]<br />}</pre>  |  Tidak `logs:LogGeneratingResourceArns` dalam konteks permintaan.  | Pertandingan  | 
`ForAllValues`Qualifier mengembalikan true jika tidak ada kunci konteks dalam permintaan atau jika nilai kunci konteks menyelesaikan ke dataset null, seperti string kosong. Untuk mencegah kunci konteks atau kunci konteks yang hilang dengan nilai kosong dievaluasi menjadi true, Anda dapat menyertakan [operator kondisi Null](#Conditions_Null) dalam kebijakan Anda dengan `false` nilai untuk memeriksa apakah kunci konteks ada dan nilainya bukan null.

## ... IfExists operator kondisi
<a name="Conditions_IfExists"></a>

Anda dapat menambahkan `IfExists` ke akhir nama operator kondisi apa pun kecuali `Null` kondisi—misalnya,. `StringLikeIfExists` Anda melakukan ini untuk mengatakan “Jika kunci kondisi hadir dalam konteks permintaan, proses kunci seperti yang ditentukan dalam kebijakan. Jika kuncinya tidak ada, evaluasi elemen ketentuan sebagai benar." Elemen ketentuan lain dalam pernyataan ini masih dapat menghasilkan ketidakcocokkan, tetapi bukan kunci yang hilang saat diperiksa dengan `...IfExists`. Jika Anda menggunakan `"Effect": "Deny"` elemen dengan operator kondisi yang dinegasikan seperti`StringNotEqualsIfExists`, permintaan masih ditolak meskipun kunci kondisi tidak ada.

**Contoh menggunakan `IfExists`**

Banyak kunci kondisi menjelaskan informasi tentang tipe sumber daya tertentu dan hanya ada ketika mengakses tipe sumber daya tersebut. Kunci kepatuhan ini tidak ada pada tipe sumber daya lainnya. Hal ini tidak menyebabkan masalah ketika pernyataan kebijakan berlaku hanya pada satu tipe sumber daya. Namun, ada kasus ketika pernyataan tunggal dapat berlaku untuk beberapa tipe sumber daya, seperti ketika pernyataan kebijakan merujuk tindakan dari beberapa layanan atau ketika tindakan tertentu dalam layanan mengakses beberapa tipe sumber daya yang berbeda dalam layanan yang sama. Dalam kasus seperti itu, termasuk kunci kepatuhan yang berlaku hanya pada salah satu sumber daya dalam pernyataan kebijakan dapat menyebabkan elemen `Condition` dalam pernyataan kebijakan gagal sehingga pernyataan `"Effect"` tidak berlaku.

Misalnya, pertimbangkan contoh kebijakan berikut ini:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "THISPOLICYDOESNOTWORK",
    "Effect": "Allow",
    "Action": "ec2:RunInstances",
    "Resource": "*",
    "Condition": {"StringLike": {"ec2:InstanceType": [
      "t1.*",
      "t2.*",
      "m3.*"
    ]}}
  }
}
```

------

*Maksud* dari kebijakan sebelumnya adalah untuk memungkinkan pengguna meluncurkan instance apa pun yang bertipe`t1`, atau. `t2` `m3` Namun, meluncurkan instance memerlukan akses banyak sumber daya selain instance itu sendiri; misalnya, gambar, pasangan kunci, grup keamanan, dan banyak lagi. Keseluruhan pernyataan dievaluasi terhadap setiap sumber daya yang diperlukan untuk meluncurkan instans. Sumber daya tambahan ini tidak memiliki kunci kondisi `ec2:InstanceType`, jadi `StringLike` gagal diperiksa, dan pengguna tidak diberi kemampuan untuk meluncurkan tipe instans *mana pun*. 

Untuk mengatasi ini, gunakan operator ketentuan `StringLikeIfExists`. Dengan cara ini, pengujian hanya terjadi jika terdapat kunci kondisi. Anda dapat membaca kebijakan berikut sebagai: “Jika sumber daya yang diperiksa memiliki kunci kondisi`ec2:InstanceType`" ", maka izinkan tindakan hanya jika nilai kunci dimulai dengan`t1.`,`t2.`, atau`m3.`. Jika sumber daya yang diperiksa tidak memiliki kunci kondisi itu, jangan khawatir tentang hal tersebut.” Tanda bintang (\$1) dalam nilai kunci kondisi, bila digunakan dengan operator `StringLikeIfExists` kondisi, ditafsirkan sebagai wildcard untuk mencapai kecocokan string paral. Pernyataan `DescribeActions` mencakup tindakan yang diperlukan untuk melihat instans di konsol.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RunInstance",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
        "StringLikeIfExists": {
          "ec2:InstanceType": [
            "t1.*",
            "t2.*",
            "m3.*"
          ]
        }
      }
    },
    {
      "Sid": "DescribeActions",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeImages",
        "ec2:DescribeInstances",
        "ec2:DescribeVpcs",
        "ec2:DescribeKeyPairs",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.


| Kondisi kebijakan | Konteks permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  | <pre>ec2:InstanceType:<br />  – t1.micro</pre>  | Pertandingan | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  | <pre>ec2:InstanceType:<br />  – m2.micro</pre>  | Tidak ada kecocokan | 
|  <pre>"StringLikeIfExists": {<br />  "ec2:InstanceType": [<br />    "t1.*",<br />    "t2.*",<br />    "m3.*"<br />  ]<br />}</pre>  |  Tidak `ec2:InstanceType` dalam konteks permintaan.  | Pertandingan | 

## Operator ketentuan memeriksa keberadaan kunci kondisi
<a name="Conditions_Null"></a>

Gunakan operator `Null` kondisi untuk memeriksa apakah kunci kondisi tidak ada pada saat otorisasi. Dalam pernyataan kebijakan, gunakan `true` (kuncinya tidak ada — yaitu null) atau `false` (kunci ada dan nilainya tidak null).

Anda tidak dapat menggunakan [variabel kebijakan](reference_policies_variables.md) dengan operator ketentuan `Null`.

Misalnya, Anda dapat menggunakan operator kondisi ini untuk menentukan apakah pengguna menggunakan kredensyal sementara atau kredensialnya sendiri untuk membuat permintaan. Jika pengguna menggunakan kredensial sementara, maka kuncinya `aws:TokenIssueTime` ada dan memiliki nilai. Contoh berikut menunjukkan kondisi yang menyatakan bahwa pengguna harus menggunakan kredensyal sementara (kunci tidak boleh absen) bagi pengguna untuk menggunakan Amazon EC2 API.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":{
      "Action":"ec2:*",
      "Effect":"Allow",
      "Resource":"*",
      "Condition":{"Null":{"aws:TokenIssueTime":"false"}}
  }
}
```

------

# Kondisi dengan beberapa kunci konteks atau nilai
<a name="reference_policies_condition-logic-multiple-context-keys-or-values"></a>

Anda dapat menggunakan `Condition` elemen kebijakan untuk menguji beberapa kunci konteks atau beberapa nilai untuk satu kunci konteks dalam permintaan. Saat Anda mengajukan permintaan AWS, baik secara terprogram atau melalui Konsol Manajemen AWS, permintaan Anda mencakup informasi tentang prinsipal, operasi, tag, dan lainnya. Anda dapat menggunakan kunci konteks untuk menguji nilai kunci konteks yang cocok dalam permintaan, dengan kunci konteks yang ditentukan dalam kondisi kebijakan. Untuk mempelajari informasi dan data yang disertakan dalam permintaan, lihat [Konteks permintaan](reference_policies_elements_condition.md#AccessPolicyLanguage_RequestContext).

**Topics**
+ [

## Logika evaluasi untuk beberapa kunci konteks atau nilai
](#reference_policies_multiple-conditions-eval)
+ [

## Logika evaluasi untuk operator kondisi pencocokan yang dinegasikan
](#reference_policies_multiple-conditions-negated-matching-eval)

## Logika evaluasi untuk beberapa kunci konteks atau nilai
<a name="reference_policies_multiple-conditions-eval"></a>

Sebuah `Condition` elemen dapat berisi beberapa operator kondisi, dan setiap operator kondisi dapat berisi beberapa pasangan kunci-nilai konteks. Sebagian besar kunci konteks mendukung penggunaan beberapa nilai, kecuali ditentukan lain.
+ Jika pernyataan kebijakan Anda memiliki beberapa [operator kondisi](reference_policies_elements_condition_operators.md), operator kondisi dievaluasi menggunakan logika`AND`.
+ Jika pernyataan kebijakan Anda memiliki beberapa kunci konteks yang dilampirkan ke satu operator kondisi, kunci konteks dievaluasi menggunakan logika`AND`.
+ Jika operator kondisi tunggal menyertakan beberapa nilai untuk kunci konteks, nilai-nilai tersebut dievaluasi menggunakan logika`OR`.
+ Jika operator kondisi pencocokan dinegasikan tunggal menyertakan beberapa nilai untuk kunci konteks, nilai-nilai tersebut dievaluasi menggunakan logika. `NOR` 

Semua kunci konteks dalam blok elemen kondisi harus menyelesaikan ke true untuk memanggil yang diinginkan `Allow` atau `Deny` efek. Gambar berikut mengilustrasikan logika evaluasi untuk suatu kondisi dengan beberapa operator kondisi dan pasangan kunci-nilai konteks.

![\[Blok kondisi yang menunjukkan bagaimana AND dan OR diterapkan ke beberapa kunci konteks dan nilai\]](http://docs.aws.amazon.com/id_id/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block_AND_2.diagram.png)


Misalnya, kebijakan bucket S3 berikut menggambarkan bagaimana gambar sebelumnya direpresentasikan dalam kebijakan. Blok kondisi mencakup operator kondisi `StringEquals` dan`ArnLike`, dan kunci konteks `aws:PrincipalTag` dan`aws:PrincipalArn`. Untuk memanggil yang diinginkan `Allow` atau `Deny` efek, semua kunci konteks di blok kondisi harus diselesaikan ke true. Pengguna yang membuat permintaan harus memiliki kunci tag utama, *departemen*, dan *peran*, yang menyertakan salah satu nilai kunci tag yang ditentukan dalam kebijakan. Selain itu, ARN utama pengguna yang membuat permintaan harus cocok dengan salah satu `aws:PrincipalArn` nilai yang ditentukan dalam kebijakan untuk dievaluasi sebagai benar.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExamplePolicy",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": [
            "finance",
            "hr",
            "legal"
          ],
          "aws:PrincipalTag/role": [
            "audit",
            "security"
          ]
        },
        "ArnLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::222222222222:user/Ana",
            "arn:aws:iam::222222222222:user/Mary"
          ]
        }
      }
    }
  ]
}
```

------

Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.


| Kondisi Kebijakan | Konteks Permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: legal<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn: <br />  arn:aws:iam::222222222222:user/Mary</pre>  |  **Pertandingan** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **Tidak cocok** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: payroll<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **Tidak cocok** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  |  Tidak `aws:PrincipalTag/role` dalam konteks permintaan. <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **Tidak cocok**  | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | Tidak `aws:PrincipalTag` dalam konteks permintaan. <pre>aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **Tidak cocok**  | 

## Logika evaluasi untuk operator kondisi pencocokan yang dinegasikan
<a name="reference_policies_multiple-conditions-negated-matching-eval"></a>

Beberapa [operator kondisi,](reference_policies_elements_condition_operators.md) seperti `StringNotEquals` atau`ArnNotLike`, menggunakan pencocokan yang dinegasikan untuk membandingkan pasangan nilai kunci konteks dalam kebijakan Anda dengan pasangan nilai kunci konteks dalam permintaan. Ketika beberapa nilai ditentukan untuk satu kunci konteks dalam kebijakan dengan operator kondisi pencocokan yang dinegasikan, izin efektif berfungsi seperti logika. `NOR` Dalam pencocokan yang dinegasikan, logis `NOR` atau `NOT OR` mengembalikan nilai true hanya jika semua nilai dievaluasi menjadi false.

Gambar berikut mengilustrasikan logika evaluasi untuk suatu kondisi dengan beberapa operator kondisi dan pasangan kunci-nilai konteks. Angka tersebut mencakup operator kondisi pencocokan yang dinegasikan untuk kunci konteks 3.

![\[Blok kondisi yang menunjukkan bagaimana AND dan OR diterapkan ke beberapa kunci konteks dan nilai saat operator kondisi pencocokan dinegasikan digunakan\]](http://docs.aws.amazon.com/id_id/IAM/latest/UserGuide/images/AccessPolicyLanguage_Condition_Block_AND_Negated_NOR_2.diagram.png)


Misalnya, kebijakan bucket S3 berikut menggambarkan bagaimana gambar sebelumnya direpresentasikan dalam kebijakan. Blok kondisi mencakup operator kondisi `StringEquals` dan`ArnNotLike`, dan kunci konteks `aws:PrincipalTag` dan`aws:PrincipalArn`. Untuk memanggil yang diinginkan `Allow` atau `Deny` efek, semua kunci konteks di blok kondisi harus diselesaikan ke true. Pengguna yang membuat permintaan harus memiliki kunci tag utama, *departemen*, dan *peran*, yang menyertakan salah satu nilai kunci tag yang ditentukan dalam kebijakan. Karena operator `ArnNotLike` kondisi menggunakan pencocokan yang dinegasikan, ARN utama pengguna yang membuat permintaan tidak boleh cocok dengan nilai yang `aws:PrincipalArn` ditentukan dalam kebijakan yang akan dievaluasi sebagai true.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExamplePolicy",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::222222222222:root"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": [
            "finance",
            "hr",
            "legal"
          ],
          "aws:PrincipalTag/role": [
            "audit",
            "security"
          ]
        },
        "ArnNotLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::222222222222:user/Ana",
            "arn:aws:iam::222222222222:user/Mary"
          ]
        }
      }
    }
  ]
}
```

------

Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.


| Kondisi Kebijakan | Konteks Permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: legal<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki<br /></pre>  |  **Pertandingan** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: audit<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Mary</pre>  | **Tidak cocok** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalTag/role: payroll<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **Tidak cocok** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | >Tidak `aws:PrincipalTag/role` dalam konteks permintaan. <pre>aws:PrincipalTag/department: hr<br />aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **Tidak cocok** | 
|  <pre>"StringEquals": {<br />  "aws:PrincipalTag/department": [<br />    "finance",<br />    "hr",<br />    "legal"<br />  ],<br />  "aws:PrincipalTag/role": [<br />    "audit",<br />    "security"<br />  ]<br />},<br />"ArnNotLike": {<br />  "aws:PrincipalArn": [<br />      "arn:aws:iam::222222222222:user/Ana",<br />      "arn:aws:iam::222222222222:user/Mary"<br />  ]<br />}</pre>  | Tidak `aws:PrincipalTag` dalam konteks permintaan. <pre>aws:PrincipalArn:<br />  arn:aws:iam::222222222222:user/Nikki</pre>  | **Tidak cocok**  | 

# Kunci konteks bernilai tunggal vs. multivaluasi
<a name="reference_policies_condition-single-vs-multi-valued-context-keys"></a>

Perbedaan antara kunci konteks bernilai tunggal dan multivalued terletak pada jumlah nilai dalam [konteks permintaan](intro-structure.md#intro-structure-request), bukan jumlah nilai dalam kondisi kebijakan.
+ Kunci konteks kondisi *bernilai tunggal* memiliki paling banyak satu nilai dalam konteks permintaan. Misalnya, saat Anda menandai sumber daya AWS, setiap tag sumber daya disimpan sebagai pasangan nilai kunci. Karena kunci tag sumber daya hanya dapat memiliki satu nilai tag, [aws:ResourceTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-resourcetag) adalah kunci konteks bernilai tunggal. Jangan gunakan operator set kondisi dengan kunci konteks bernilai tunggal.
+ Kunci konteks kondisi *multivalued* dapat memiliki beberapa nilai dalam konteks permintaan. Misalnya, saat Anda menandai sumber daya AWS, Anda dapat menyertakan beberapa pasangan nilai kunci tag dalam satu permintaan. Oleh karena itu, [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) adalah kunci konteks multivalued. Kunci konteks multivaluasi memerlukan operator set kondisi.

Misalnya, permintaan dapat berasal dari paling banyak satu titik akhir VPC, [aws:SourceVpce](reference_policies_condition-keys.md#condition-keys-sourcevpce) begitu juga kunci konteks bernilai tunggal. Karena layanan dapat memiliki lebih dari satu nama utama layanan yang dimiliki oleh layanan, [aws:PrincipalServiceNamesList](reference_policies_condition-keys.md#condition-keys-principalservicenameslist) adalah kunci konteks multivalued.

**penting**  
Perbedaan antara kunci konteks bernilai tunggal dan multivalued tergantung pada jumlah nilai dalam konteks permintaan, bukan jumlah nilai dalam kondisi kebijakan.

## Poin kunci
<a name="reference_policies_condition-key-points"></a>
+ Klasifikasi *Single-valued* dan *Multivalued* disertakan dalam deskripsi setiap kunci konteks kondisi sebagai *tipe Nilai* dalam topik. [AWS kunci konteks kondisi global](reference_policies_condition-keys.md)
+ Kunci konteks multivaluasi dalam [Referensi Otorisasi Layanan](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) menggunakan `ArrayOf` awalan yang diikuti oleh jenis kategori operator kondisi, seperti `ArrayOfString` atau`ArrayOfARN`, yang menunjukkan bahwa permintaan tersebut 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 multivaluasi sebagai variabel kebijakan. Untuk informasi lebih lanjut tentang variabel-variable kebijakan, lihat [Elemen kebijakan IAM: Variabel dan tag](reference_policies_variables.md).
+ Saat menggunakan kunci konteks yang menyertakan pasangan kunci-nilai, penting untuk dicatat bahwa meskipun mungkin ada beberapa nilai tag-key, masing-masing hanya `tag-key` dapat memiliki satu nilai.
  + [aws:PrincipalTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-principaltag), [aws:RequestTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-requesttag) dan [aws:ResourceTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-resourcetag) merupakan kunci konteks bernilai tunggal.
  + [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys)mendefinisikan kunci tag apa yang diizinkan dalam permintaan tetapi tidak menyertakan nilai tag-key. Karena Anda dapat menyertakan beberapa pasangan nilai kunci tag dalam permintaan, `aws:TagKeys` adalah kunci konteks multivalued.
+ Kunci konteks multivaluasi memerlukan operator set kondisi. Jangan gunakan operator set kondisi `ForAllValues` atau `ForAnyValue` dengan kunci konteks bernilai tunggal. Menggunakan operator set kondisi dengan kunci konteks bernilai tunggal dapat menyebabkan kebijakan yang terlalu permisif.

## Tetapkan operator untuk kunci konteks multivaluasi
<a name="reference_policies_condition-multi-valued-context-keys"></a>

Untuk membandingkan kunci konteks kondisi Anda dengan kunci [konteks permintaan](intro-structure.md#intro-structure-request) dengan beberapa nilai, Anda harus menggunakan `ForAllValues` atau `ForAnyValue` mengatur operator. Operator set ini digunakan untuk membandingkan dua set nilai, seperti kumpulan tag dalam permintaan dan kumpulan tag dalam kondisi kebijakan.

Qualifier `ForAllValues` dan `ForAnyValue` qualifier menambahkan fungsionalitas set-operation ke operator kondisi, sehingga Anda dapat menguji kunci konteks permintaan dengan beberapa nilai terhadap beberapa nilai kunci konteks dalam kondisi kebijakan. [Selain itu, jika Anda menyertakan kunci konteks string multivalued dalam kebijakan Anda dengan wildcard atau variabel, Anda juga harus menggunakan operator kondisi. `StringLike`](reference_policies_elements_condition_operators.md#Conditions_String) Beberapa nilai kunci kondisi harus diapit dalam tanda kurung seperti [array](reference_policies_grammar.md#policies-grammar-json), misalnya,. `"Key2":["Value2A", "Value2B"]`

### ForAllValues
<a name="reference_policies_condition-forallvalues"></a>

`ForAllValues`Qualifier menguji apakah nilai setiap anggota konteks permintaan cocok dengan operator kondisi yang mengikuti qualifier. Kondisi akan ditampilkan `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 keberadaan kunci konteks yang hilang dalam konteks permintaan tidak terduga. Anda harus selalu menyertakan operator [`Null`](reference_policies_elements_condition_operators.md#Conditions_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](access_tags.md#access_tags_control-tag-keys).

#### Contoh ForAllValues set operator
<a name="reference_policies_condition-forallvalues-example"></a>

Dalam contoh berikut, ForAllValues digunakan dengan aws: TagKeys untuk memungkinkan pengguna menghapus tag tertentu yang ditetapkan ke instans EC2. Kebijakan ini memungkinkan pengguna untuk menghapus hanya `cost-center` tag `environment` dan tag. Anda dapat menghapusnya secara terpisah atau bersama-sama. Tombol tag dalam permintaan harus sama persis dengan kunci yang ditentukan dalam kebijakan.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteTags",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "environment",
                        "cost-center"
                    ]
                },
                "Null": {
                    "aws:TagKeys": "false"
                }
            }
        }
    ]
}
```

------

Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.


| Kondisi Kebijakan | Konteks Permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre>  |  **Pertandingan**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – cost-center</pre>  |  **Pertandingan**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – cost-center</pre>  |  **Pertandingan**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – dept</pre>  |  **Tidak ada kecocokan**  | 
|  <pre>"ForAllValues:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />},<br />"Null": {<br />  "aws:TagKeys": "false"<br />}</pre>  |  Tidak `aws:TagKeys` dalam konteks permintaan.  |  **Tidak ada kecocokan**  | 

Perhatikan bahwa dalam contoh terakhir, hasilnya adalah “No Match” karena pemeriksaan kondisi Null mencegah pencocokan ketika kunci konteks hilang. Ini adalah praktik terbaik untuk menghindari kebijakan yang terlalu permisif.

### ForAnyValue
<a name="reference_policies_condition-foranyvalue"></a>

`ForAnyValue`Qualifier menguji apakah setidaknya satu anggota dari kumpulan nilai kunci konteks permintaan cocok dengan setidaknya satu anggota kumpulan nilai kunci konteks dalam kondisi kebijakan Anda. Kondisi akan `true` ditampilkan 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 kembali`false`.

**penting**  
Saat menggunakan `ForAnyValue` dengan `Deny` efek, jika kunci konteks tidak ada dalam permintaan, kebijakan akan dievaluasi sebagai **Tidak cocok**. Untuk perilaku yang konsisten, tambahkan pemeriksaan [`Null`](reference_policies_elements_condition_operators.md#Conditions_Null)kondisi eksplisit di kebijakan Anda untuk memverifikasi apakah kunci konteks ada. Lihat perinciannya di [Operator ketentuan memeriksa keberadaan kunci kondisi](reference_policies_elements_condition_operators.md#Conditions_Null).

#### Contoh ForAnyValue set operator
<a name="reference_policies_condition-foranyvalue-example"></a>

Dalam contoh berikut, ForAnyValue digunakan dengan aws: TagKeys untuk memungkinkan pengguna menghapus tag tertentu yang ditetapkan ke instans EC2. Kebijakan ini memungkinkan pengguna untuk menghapus tag untuk sebuah instance jika kunci tag yang ditentukan dalam permintaan menyertakan `environment` atau`cost-center`. Permintaan dapat menyertakan kunci tag tambahan di luar yang ditentukan dalam kebijakan, tetapi harus menyertakan setidaknya satu dari kunci yang ditentukan agar sesuai dengan kondisi.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteTags",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:TagKeys": [
                        "environment",
                        "cost-center"
                    ]
                }
            }
        }
    ]
}
```

------

Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.


| Kondisi Kebijakan | Konteks Permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment</pre>  |  **Pertandingan**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – cost-center</pre>  |  **Pertandingan**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – cost-center</pre>  |  **Pertandingan**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – dept</pre>  |  **Pertandingan**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – dept</pre>  |  **Tidak ada kecocokan**  | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": [<br />    "environment",<br />    "cost-center"<br />  ]<br />}</pre>  |  Tidak `aws:TagKeys` dalam konteks permintaan.  |  **Tidak ada kecocokan**  | 

# Contoh kebijakan kondisi
<a name="reference_policies_condition_examples"></a>

Dalam kebijakan IAM, Anda dapat menentukan beberapa nilai untuk kunci konteks bernilai tunggal dan multivalued untuk perbandingan terhadap konteks permintaan. Kumpulan contoh kebijakan berikut menunjukkan kondisi kebijakan dengan beberapa kunci konteks dan nilai.

**catatan**  
Jika Anda ingin memberikan sebuah kebijakan untuk disertakan dalam panduan referensi ini, gunakan tombol **Umpan Balik** di bagian bawah halaman ini. Untuk contoh kebijakan berbasis identitas IAM, lihat. [Contoh kebijakan berbasis identitas IAM](access_policies_examples.md)

## Contoh kebijakan kondisi: Kunci konteks bernilai tunggal
<a name="reference_policies_condition_example_library_single-valued"></a>
+ Beberapa blok kondisi dengan kunci konteks bernilai tunggal. ([Lihat contoh ini](reference_policies_condition_examples-single-valued-context-keys.md#reference_policies_condition_examples-single-valued-context-keys-1).)
+ Satu blok kondisi dengan beberapa kunci dan nilai konteks bernilai tunggal. ([Lihat contoh ini](reference_policies_condition_examples-single-valued-context-keys.md#reference_policies_condition_examples-single-valued-context-keys-2).)

## Contoh kebijakan kondisi: Kunci konteks berbilang nilai
<a name="reference_policies_condition_example_library_multi-valued"></a>
+ Tolak kebijakan dengan operator set kondisi`ForAllValues`. ([Lihat contoh ini](reference_policies_condition_examples-multi-valued-context-keys.md#reference_policies_condition_examples-multi-valued-context-keys-1).)
+ Tolak kebijakan dengan operator set kondisi`ForAnyValue`. ([Lihat contoh ini](reference_policies_condition_examples-multi-valued-context-keys.md#reference_policies_condition_examples-multi-valued-context-keys-2).)

# Contoh kunci konteks multivaluasi
<a name="reference_policies_condition_examples-multi-valued-context-keys"></a>

Kumpulan contoh kebijakan berikut menunjukkan cara membuat kondisi kebijakan dengan kunci konteks multivalued.

## Contoh: Tolak kebijakan dengan operator set kondisi ForAllValues
<a name="reference_policies_condition_examples-multi-valued-context-keys-1"></a>

Contoh berikut menunjukkan cara menggunakan kebijakan berbasis identitas untuk menolak penggunaan tindakan penandaan IAM saat awalan kunci tag tertentu disertakan dalam permintaan. Nilai untuk [`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys)menyertakan wildcard (\$1) untuk pencocokan string paral. Kebijakan ini menyertakan operator yang `ForAllValues` disetel dengan kunci konteks `aws:TagKeys` karena kunci konteks permintaan dapat menyertakan beberapa nilai. Agar kunci `aws:TagKeys` konteks cocok, setiap nilai dalam konteks permintaan harus cocok dengan setidaknya satu nilai dalam kebijakan.

Operator `ForAllValues` set juga mengembalikan true jika tidak ada kunci konteks dalam permintaan.

Anda dapat mencegah kunci konteks atau kunci konteks yang hilang dengan nilai kosong dievaluasi ke true dengan menyertakan operator `Null` kondisi dalam kebijakan Anda dengan nilai `false` untuk memeriksa apakah kunci konteks dalam permintaan ada dan nilainya bukan null. Untuk informasi selengkapnya, lihat [Operator ketentuan memeriksa keberadaan kunci kondisi](reference_policies_elements_condition_operators.md#Conditions_Null).

**penting**  
Kebijakan ini tidak mengizinkan tindakan apa pun. Gunakan kebijakan ini bersama dengan kebijakan lain yang mengizinkan tindakan tertentu.

**Example Tolak nilai kondisi kebijakan tunggal untuk kunci konteks multivalued**  
**Dalam contoh berikut, kebijakan menolak permintaan di mana nilai untuk `aws:TagKeys` dalam permintaan tidak menyertakan kunci awalan1.** Konteks permintaan dapat memiliki beberapa nilai, tetapi karena operator set `ForAllValues` kondisi, semua nilai kunci tag dalam konteks permintaan harus dimulai dengan **kunci** awalan1.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": "key1*"
        }
      }
    }
  ]
}
```
Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda. Untuk pernyataan Deny, Pertandingan Ditolak dan Tidak ada kecocokan Tidak ditolak, jadi mungkin diizinkan oleh pernyataan lain.  


| Kondisi Kebijakan | Permintaan Konteks | Hasil | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  |  **Tidak ada kecocokan** Mungkin diizinkan oleh pernyataan lain. | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **Tidak ada kecocokan** Mungkin diizinkan oleh pernyataan lain. | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key2:audit</pre>  | **Pertandingan** | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | Tidak `aws:TagKeys` dalam konteks permintaan.  | **Pertandingan** | 

**Example Tolak beberapa nilai kondisi kebijakan untuk kunci konteks multivalued**  
**Dalam contoh berikut, kebijakan menolak permintaan di mana nilai untuk `aws:TagKeys` dalam permintaan tidak menyertakan awalan **key1 atau key2**.** **Konteks permintaan dapat memiliki beberapa nilai, tetapi karena operator set `ForAllValues` kondisi, semua nilai kunci tag dalam konteks permintaan harus dimulai dengan awalan **key1 atau key2**.**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": [
            "key1*",
            "key2*"
          ]
        }
      }
    }
  ]
}
```
Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda. Untuk pernyataan Deny, Pertandingan Ditolak dan Tidak ada kecocokan Tidak ditolak, jadi mungkin diizinkan oleh pernyataan lain.  


| Kondisi Kebijakan | Permintaan Konteks | Hasil | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  |  **Tidak ada kecocokan** Mungkin diizinkan oleh pernyataan lain. | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **Tidak ada kecocokan** Mungkin diizinkan oleh pernyataan lain. | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key2:audit</pre>  | **Tidak ada kecocokan** Mungkin diizinkan oleh pernyataan lain. | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key3:legal</pre>  | **Pertandingan**  | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | Tidak `aws:TagKeys` dalam konteks permintaan.  | **Pertandingan** | 

## Contoh: Tolak kebijakan dengan operator set kondisi ForAnyValue
<a name="reference_policies_condition_examples-multi-valued-context-keys-2"></a>

Contoh kebijakan berbasis identitas berikut menyangkal pembuatan snapshot volume instans EC2 jika ada snapshot yang ditandai dengan salah satu kunci tag yang ditentukan dalam kebijakan, atau. `environment` `webserver` Kebijakan ini menyertakan operator yang `ForAnyValue` disetel dengan kunci konteks `aws:TagKeys` karena kunci konteks permintaan dapat menyertakan beberapa nilai. Jika permintaan penandaan Anda menyertakan salah satu nilai kunci tag yang ditentukan dalam kebijakan, kunci `aws:TagKeys` konteks akan mengembalikan nilai true dengan mengaktifkan efek kebijakan penolakan.

**penting**  
Kebijakan ini tidak mengizinkan tindakan apa pun. Gunakan kebijakan ini bersama dengan kebijakan lain yang mengizinkan tindakan tertentu.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ec2:CreateSnapshot",
        "ec2:CreateSnapshots"
      ],
      "Resource": "arn:aws:ec2:us-west-2::snapshot/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": "webserver"
        }
      }
    }
  ]
}
```

------

Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda. Untuk pernyataan Deny, Pertandingan Ditolak dan Tidak ada kecocokan Tidak ditolak, jadi mungkin diizinkan oleh pernyataan lain.


| Kondisi Kebijakan | Permintaan Konteks | Hasil | 
| --- | --- | --- | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – webserver</pre>  | **Pertandingan** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – webserver<br />  – test</pre>  |  **Pertandingan** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – test</pre>  | **Tidak ada kecocokan** Mungkin diizinkan oleh pernyataan lain. | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | Tidak `aws:TagKeys` dalam konteks permintaan.  | **Tidak ada kecocokan** Mungkin diizinkan oleh pernyataan lain.  | 

# Contoh kebijakan kunci konteks bernilai tunggal
<a name="reference_policies_condition_examples-single-valued-context-keys"></a>

Kumpulan contoh kebijakan berikut menunjukkan cara membuat kondisi kebijakan dengan kunci konteks bernilai tunggal.

## Contoh: Beberapa blok kondisi dengan kunci konteks bernilai tunggal
<a name="reference_policies_condition_examples-single-valued-context-keys-1"></a>

Ketika blok kondisi memiliki beberapa kondisi, masing-masing dengan satu kunci konteks, semua kunci konteks harus diselesaikan ke true agar `Deny` efek yang diinginkan `Allow` atau dipanggil. Saat Anda menggunakan operator kondisi pencocokan yang dinegasikan, logika evaluasi nilai kondisi dibalik.

Contoh berikut memungkinkan pengguna membuat volume EC2 dan menerapkan tag ke volume selama pembuatan volume. Konteks permintaan harus menyertakan nilai untuk kunci konteks`aws:RequestTag/project`, dan nilai untuk kunci konteks `aws:ResourceTag/environment` dapat berupa apa saja kecuali produksi.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/project": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

Konteks permintaan harus menyertakan nilai tag proyek dan tidak dapat dibuat untuk sumber daya produksi untuk memanggil efek. `Allow` Volume EC2 berikut berhasil dibuat karena nama proyek `Feature3` dengan tag `QA` sumber daya.

```
aws ec2 create-volume \
    --availability-zone us-east-1a \
    --volume-type gp2 \
    --size 80 \
    --tag-specifications 'ResourceType=volume,Tags=[{Key=project,Value=Feature3},{Key=environment,Value=QA}]'
```

## Contoh: Satu blok kondisi dengan beberapa kunci dan nilai konteks bernilai tunggal
<a name="reference_policies_condition_examples-single-valued-context-keys-2"></a>

Ketika blok kondisi berisi beberapa kunci konteks dan setiap kunci konteks memiliki beberapa nilai, setiap kunci konteks harus menyelesaikan ke true untuk setidaknya satu nilai kunci untuk yang diinginkan `Allow` atau `Deny` efek yang akan dipanggil. Saat Anda menggunakan operator kondisi pencocokan yang dinegasikan, logika evaluasi nilai kunci konteks dibalik.

Contoh berikut memungkinkan pengguna untuk memulai dan menjalankan tugas di Amazon Elastic Container Service cluster.
+ Konteks permintaan harus menyertakan `production` **OR** `prod-backup` untuk kunci `aws:RequestTag/environment` konteks **DAN**.
+ Kunci `ecs:cluster` konteks memastikan bahwa tugas dijalankan pada kluster `default1` **OR** `default2` ARN ECS.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:RunTask",
        "ecs:StartTask"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/environment": [
            "production",
            "prod-backup"
          ]
        },
        "ArnEquals": {
          "ecs:cluster": [
            "arn:aws:ecs:us-east-1:111122223333:cluster/default1",
            "arn:aws:ecs:us-east-1:111122223333:cluster/default2"
          ]
        }
      }
    }
  ]
}
```

------

Tabel berikut menunjukkan cara AWS mengevaluasi kebijakan ini berdasarkan nilai kunci kondisi dalam permintaan Anda.


| Kondisi kebijakan | Konteks permintaan | Hasil | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default1</pre>  | Pertandingan | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:prod-backup<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | Pertandingan | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: webserver:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | Tidak cocok | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  |  Tidak `aws:RequestTag` dalam konteks permintaan. <pre>ecs:cluster<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | Tidak cocok | 