

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

# 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** | 