

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

# Referensi elemen kebijakan IAM JSON
<a name="reference_policies_elements"></a>

Dokumen kebijakan JSON terdiri atas elemen-elemen. Elemen-elemen ini tercantum di sini dalam urutan umum Anda menggunakannya dalam kebijakan. Urutan elemen tidak penting—misalnya, elemen `Resource` dapat muncul sebelum elemen `Action`. Anda tidak diwajibkan untuk menentukan elemen `Condition` apa pun dalam kebijakan. Untuk mempelajari selengkapnya tentang struktur dan tujuan umum dokumen kebijakan JSON, lihat [Gambaran dari kebijakan JSON](access_policies.md#access_policies-json).

Beberapa elemen kebijakan JSON saling eksklusif. Ini berarti bahwa Anda tidak dapat membuat kebijakan yang menggunakan keduanya. Misalnya, Anda tidak dapat menggunakan `Action` dan `NotAction` dalam pernyataan kebijakan yang sama. Pasangan lain yang saling eksklusif termasuk `Principal`/`NotPrincipal` dan `Resource`/`NotResource`. 

Detail tentang apa saja yang termasuk ke dalam kebijakan berbeda-beda untuk setiap layanan, tergantung pada tindakan apa yang disediakan layanan, tipe sumber daya apa yang ada di dalamnya, dan sebagainya. Ketika Anda menulis kebijakan untuk layanan tertentu, akan sangat membantu jika Anda melihat contoh kebijakan untuk layanan tersebut. Untuk daftar semua layanan yang mendukung IAM, dan untuk tautan ke dokumentasi dalam layanan tersebut yang membahas IAM dan kebijakan, lihat [AWS layanan yang bekerja dengan IAM](reference_aws-services-that-work-with-iam.md).

 Saat Anda membuat atau mengedit kebijakan JSON, IAM dapat melakukan validasi kebijakan untuk membantu Anda membuat kebijakan yang efektif. IAM mengidentifikasi kesalahan sintaks JSON, sementara IAM Access Analyzer menyediakan pemeriksaan kebijakan tambahan dengan rekomendasi untuk membantu Anda menyempurnakan kebijakan Anda lebih lanjut. Untuk mempelajari selengkapnya tentang validasi kebijakan, lihat [Validasi kebijakan IAM](access_policies_policy-validator.md). Untuk mempelajari selengkapnya tentang pemeriksaan kebijakan IAM Access Analyzer dan rekomendasi yang dapat ditindaklanjuti, lihat validasi kebijakan [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) Access Analyzer. 

**Topics**
+ [Version](reference_policies_elements_version.md)
+ [Id](reference_policies_elements_id.md)
+ [Statement](reference_policies_elements_statement.md)
+ [Sid](reference_policies_elements_sid.md)
+ [Effect](reference_policies_elements_effect.md)
+ [Principal](reference_policies_elements_principal.md)
+ [NotPrincipal](reference_policies_elements_notprincipal.md)
+ [Action](reference_policies_elements_action.md)
+ [NotAction](reference_policies_elements_notaction.md)
+ [Resource](reference_policies_elements_resource.md)
+ [NotResource](reference_policies_elements_notresource.md)
+ [Condition](reference_policies_elements_condition.md)
+ [Variabel dan tanda](reference_policies_variables.md)
+ [Jenis data yang didukung](reference_policies_elements_datatypes.md)

# Elemen kebijakan IAM JSON: Version
<a name="reference_policies_elements_version"></a>

**Catatan disambiguasi**  
Elemen kebijakan JSON `Version` ini berbeda dari *versi kebijakan*. Elemen kebijakan `Version` digunakan dalam kebijakan dan menentukan versi bahasa kebijakan. Versi kebijakan, di sisi lain, dibuat ketika Anda membuat perubahan pada kebijakan yang dikelola pelanggan di IAM. Perubahan kebijakan tidak mengesampingkan kebijakan yang ada. Sebagai gantinya, IAM membuat versi baru dari kebijakan yang dikelola. Jika Anda mencari informasi tentang dukungan beberapa versi yang tersedia untuk kebijakan terkelola, lihat [Peningkatan versi IAM](access_policies_managed-versioning.md).

Elemen kebijakan `Version` menetapkan aturan sintaksis bahasa yang akan digunakan untuk memproses kebijakan. Untuk menggunakan semua fitur kebijakan yang tersedia, sertakan `Version` elemen berikut **di luar** `Statement` elemen di semua kebijakan Anda.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

IAM mendukung nilai elemen `Version` berikut:
+ `2012-10-17`. Ini adalah versi bahasa kebijakan saat ini, dan Anda harus selalu menyertakan elemen `Version` dan mengaturnya ke `2012-10-17`. Jika tidak, Anda tidak dapat menggunakan fitur seperti [variabel kebijakan](reference_policies_variables.md) yang diperkenalkan dengan versi ini.
+ `2008-10-17`. Ini adalah versi terdahulu dari bahasa kebijakan. Anda mungkin melihat versi ini pada kebijakan lama yang sudah ada. Jangan gunakan versi ini untuk kebijakan baru atau saat Anda memperbarui kebijakan yang sudah ada. Fitur yang lebih baru, seperti variabel kebijakan, tidak akan berfungsi dengan kebijakan Anda. Misalnya, variabel seperti `${aws:username}` tidak diakui sebagai variabel dan diperlakukan sebagai string literal di dalam kebijakan.

# Elemen kebijakan IAM JSON: Id
<a name="reference_policies_elements_id"></a>

Elemen `Id` ini menentukan pengidentifikasi opsional untuk kebijakan. ID digunakan secara berbeda di layanan yang berbeda. ID diperbolehkan dalam kebijakan berbasis sumber daya, tetapi tidak dalam kebijakan berbasis identitas.

Untuk layanan yang memungkinkan Anda mengatur elemen `ID` kami menyarankan Anda menggunakan UUID (GUID) untuk nilai, atau menyertakan UUID sebagai bagian dari ID untuk memastikan keunikan. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "cd3ad3d9-2776-4ef1-a904-4c229d1642ee",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

**catatan**  
Beberapa AWS layanan (misalnya, Amazon SQS atau Amazon SNS) mungkin memerlukan elemen ini dan memiliki persyaratan keunikan untuk itu. Untuk informasi khusus layanan tentang penulisan kebijakan, lihat dokumentasi untuk layanan yang sedang Anda kerjakan.

# Elemen kebijakan IAM JSON: Statement
<a name="reference_policies_elements_statement"></a>

Elemen `Statement` adalah elemen utama kebijakan ini. Elemen ini wajib diisi. Elemen `Statement` dapat berisi satu pernyataan atau serangkaian pernyataan individu. Setiap blok pernyataan individu harus ditutup dengan tanda kurung kurawal \$1 \$1. Untuk beberapa pernyataan, larik harus dilampirkan dalam kurung persegi [ ].

```
"Statement": [{...},{...},{...}]
```

Contoh berikut menunjukkan kebijakan yang berisi susunan tiga pernyataan di dalam satu elemen `Statement` tunggal. (Kebijakan ini memungkinkan Anda mengakses “folder rumah” Anda sendiri di konsol Amazon S3.) Kebijakan ini mencakup variabel `aws:username`, yang diganti selama evaluasi kebijakan dengan nama pengguna dari permintaan. Lihat informasi yang lebih lengkap di [Pengantar](reference_policies_variables.md#policy-vars-intro). 

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

****  

```
{
  "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}/*"
      ]
    }
  ]
}
```

------

# Elemen kebijakan IAM JSON: Sid
<a name="reference_policies_elements_sid"></a>

Anda dapat memberikan `Sid` (ID pernyataan) sebagai pengenal opsional untuk pernyataan kebijakan. Anda dapat menetapkan nilai `Sid` untuk setiap pernyataan dalam rangkaian pernyataan. Anda dapat menggunakan `Sid` nilai sebagai deskripsi untuk pernyataan kebijakan. Dalam layanan yang memungkinkan Anda menentukan `ID` elemen, seperti SQS dan SNS, `Sid` nilainya hanyalah sub-ID dari ID dokumen kebijakan. Di dalam IAM, nilai `Sid` harus unik dalam kebijakan JSON.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ExampleStatementID",
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    }
  ]
}
```

------

`Sid`Elemen ini mendukung huruf besar ASCII (A-Z), huruf kecil (a-z), dan angka (0-9). 

IAM tidak mengekspos API `Sid` IAM. Anda tidak dapat mengambil pernyataan tertentu berdasarkan ID ini.

**catatan**  
Beberapa AWS layanan (misalnya, Amazon SQS atau Amazon SNS) mungkin memerlukan elemen ini dan memiliki persyaratan keunikan untuk itu. Untuk informasi khusus layanan tentang kebijakan penulisan, lihat dokumentasi untuk layanan tempat Anda bekerja.

# Elemen kebijakan IAM JSON: Effect
<a name="reference_policies_elements_effect"></a>

Elemen `Effect` diperlukan dan menentukan apakah pernyataan tersebut mengakibatkan diizinkan atau ditolak. Nilai yang valid untuk `Effect` adalah `Allow` dan `Deny`. `Effect`Nilainya peka huruf besar/kecil. 

```
"Effect":"Allow"
```

Secara default, akses ke sumber daya ditolak. Untuk mengizinkan akses ke sumber daya, Anda harus mengatur elemen `Effect` ke `Allow`. Untuk menimpa izinkan (misalnya, untuk menimpa izinkan yang berlaku sebaliknya), Anda mengatur elemen `Effect` ke `Deny`. Lihat informasi yang lebih lengkap di [Logika evaluasi kebijakan](reference_policies_evaluation-logic.md).

# AWS Elemen kebijakan JSON: Principal
<a name="reference_policies_elements_principal"></a>

Gunakan `Principal` elemen dalam kebijakan JSON berbasis sumber daya untuk menentukan prinsipal yang diizinkan atau ditolak akses ke sumber daya. 

Anda harus menggunakan `Principal` elemen dalam kebijakan berbasis [sumber daya](access_policies_identity-vs-resource.md). Beberapa layanan mendukung kebijakan berbasis sumber daya, termasuk IAM. Jenis kebijakan berbasis sumber daya IAM adalah kebijakan kepercayaan peran. Dalam peran IAM, gunakan `Principal` elemen dalam kebijakan kepercayaan peran untuk menentukan siapa yang dapat mengambil peran tersebut. Untuk akses akun silang, Anda harus menentukan pengidentifikasi 12-digit dari akun tepercaya. Untuk mempelajari apakah prinsipal dalam akun di luar zona kepercayaan (organisasi atau akun terpercaya) memiliki akses untuk mengasumsikan peran Anda, lihat [Apa yang dimaksud dengan Penganalisis Akses IAM?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

**catatan**  
Setelah membuat peran, Anda dapat mengubah akun menjadi “\$1” agar semua orang dapat mengambil peran tersebut. Jika Anda melakukannya, kami sangat menyarankan Anda untuk membatasi siapa yang dapat mengakses peran tersebut melalui cara lain, seperti elemen `Condition` yang membatasi akses ke alamat IP tertentu saja. Jangan biarkan peran Anda dapat diakses semua orang\$1

Contoh sumber daya lain yang mendukung kebijakan berbasis sumber daya termasuk bucket Amazon S3 atau file. AWS KMS key

Anda tidak dapat menggunakan `Principal` elemen dalam kebijakan berbasis identitas. Kebijakan berbasis identitas adalah kebijakan izin yang Anda lampirkan ke identitas IAM (pengguna, grup, atau peran). Dalam kasus tersebut, kepala sekolah secara implisit adalah identitas di mana kebijakan dilampirkan.

**Topics**
+ [Cara menentukan kepala sekolah](#Principal_specifying)
+ [Akun AWS kepala sekolah](#principal-accounts)
+ [Kepala peran IAM](#principal-roles)
+ [Kepala sesi peran](#principal-role-session)
+ [Kepala sekolah federasi OIDC](#principal-federated-web-identity)
+ [Kepala sekolah federasi SALL](#principal-saml)
+ [Prinsip pengguna IAM](#principal-users)
+ [Kepala Pusat Identitas IAM](#principal-identity-users)
+ [AWS STS prinsip pengguna federasi](#sts-session-principals)
+ [AWS prinsip layanan](#principal-services)
+ [AWS prinsip layanan di Wilayah keikutsertaan](#principal-services-in-opt-in-regions)
+ [Semua kepala sekolah](#principal-anonymous)
+ [Informasi selengkapnya](#Principal_more-info)

## Cara menentukan kepala sekolah
<a name="Principal_specifying"></a>

Anda menentukan prinsipal dalam `Principal` elemen kebijakan berbasis sumber daya atau dalam kunci kondisi yang mendukung prinsipal.

Anda dapat menyebutkan salah satu prinsip dasar berikut dalam kebijakan:
+ Akun AWS dan pengguna root
+ Peran IAM
+ Sesi peran 
+ Pengguna IAM:
+ Prinsipal pengguna federasi
+ AWS layanan
+ Semua kepala sekolah

Anda tidak dapat mengidentifikasi grup pengguna sebagai prinsipal dalam kebijakan (seperti kebijakan berbasis sumber daya) karena grup terkait dengan izin, bukan autentikasi, dan prinsipal adalah entitas IAM yang diautentikasi.

Anda dapat menentukan lebih dari satu prinsipal untuk masing-masing tipe prinsipal dalam bagian berikut menggunakan array. Susunan dapat mengambil satu atau beberapa nilai. Bila Anda menentukan lebih dari satu prinsipal dalam elemen, Anda memberikan izin untuk setiap prinsipal. Ini logis `OR` dan bukan logis`AND`, karena Anda mengautentikasi sebagai satu prinsipal pada satu waktu. Jika Anda menyertakan lebih dari satu nilai, gunakan tanda kurung siku (`[`dan`]`) dan comma-delimit setiap entri untuk array. Contoh kebijakan berikut mendefinisikan izin untuk akun 123456789012 atau akun 555555555555.

```
"Principal" : { 
"AWS": [ 
  "123456789012",
  "555555555555" 
  ]
}
```

**catatan**  
Anda tidak dapat menggunakan wildcard untuk mencocokkan sebagian nama pengguna utama atau ARN. 

## Akun AWS kepala sekolah
<a name="principal-accounts"></a>

Anda dapat menentukan Akun AWS pengidentifikasi dalam `Principal` elemen kebijakan berbasis sumber daya atau dalam kunci kondisi yang mendukung prinsipal. Ini mendelegasikan wewenang ke akun. Ketika Anda mengizinkan akses ke akun yang berbeda, administrator di akun tersebut kemudian harus memberikan akses ke identitas (pengguna atau peran IAM) di akun tersebut. Ketika Anda menentukan Akun AWS, Anda dapat menggunakan akun ARN (arn:aws:iam: ::root*account-ID*), atau formulir singkat yang terdiri dari awalan diikuti oleh ID akun. `"AWS":`

Misalnya, memberikan ID akun `123456789012`, Anda dapat menggunakan dari metode berikut untuk menyebutkan akun tersebut di elemen `Principal`:

```
"Principal": { "AWS": "arn:aws:iam::123456789012:root" }
```

```
"Principal": { "AWS": "123456789012" }
```

Akun ARN dan ID akun yang dipersingkat berperilaku dengan cara yang sama. Keduanya mendelegasikan izin ke akun. Menggunakan akun ARN dalam `Principal` elemen tidak membatasi izin hanya untuk pengguna root akun. 

**catatan**  
Saat Anda menyimpan kebijakan berbasis sumber daya yang menyertakan ID akun yang dipersingkat, layanan dapat mengubahnya menjadi ARN utama. Ini tidak mengubah fungsionalitas kebijakan.

Beberapa AWS layanan mendukung opsi tambahan untuk menentukan pokok akun. Misalnya, Amazon S3 memungkinkan Anda menentukan [ID pengguna canonik](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId) menggunakan format berikut:

```
"Principal": { "CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be" }
```

Anda juga dapat menentukan lebih dari satu Akun AWS, (atau ID pengguna kanonik) sebagai prinsipal menggunakan array. Misalnya, Anda dapat menentukan prinsipal dalam kebijakan bucket menggunakan ketiga metode tersebut.

```
"Principal": { 
  "AWS": [
    "arn:aws:iam::123456789012:root",
    "999999999999"
  ],
  "CanonicalUser": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"
}
```

## Kepala peran IAM
<a name="principal-roles"></a>

Anda dapat menentukan prinsip peran IAM ARNs dalam `Principal` elemen kebijakan berbasis sumber daya atau dalam kunci kondisi yang mendukung prinsipal. Peran IAM adalah identitas. Di IAM, identitas adalah sumber daya yang dapat Anda tetapkan izin. Peran mempercayai identitas lain yang diautentikasi untuk mengambil peran itu. Ini termasuk prinsipal di AWS atau pengguna dari penyedia identitas eksternal (iDP). Ketika prinsipal atau identitas mengambil peran, mereka menerima kredensil keamanan sementara dengan izin peran yang diasumsikan. Ketika mereka menggunakan kredensi sesi tersebut untuk melakukan operasi AWS, mereka menjadi kepala *sesi peran*.

Saat Anda menentukan prinsipal peran dalam kebijakan berbasis sumber daya, izin efektif untuk prinsipal dibatasi oleh jenis kebijakan apa pun yang membatasi izin untuk peran tersebut. Ini termasuk kebijakan sesi dan batas izin. Untuk informasi selengkapnya tentang bagaimana izin efektif untuk sesi peran dievaluasi, lihat. [Logika evaluasi kebijakan](reference_policies_evaluation-logic.md)

Untuk menentukan peran ARN dalam `Principal` elemen, gunakan format berikut:

```
"Principal": { "AWS": "arn:aws:iam::AWS-account-ID:role/role-name" }
```

**penting**  
Jika `Principal` elemen Anda dalam kebijakan kepercayaan peran berisi ARN yang menunjuk ke peran IAM tertentu, ARN tersebut akan berubah menjadi ID utama unik peran tersebut saat Anda menyimpan kebijakan tersebut. Hal ini membantu memitigasi risiko seseorang meningkatkan hak istimewa mereka dengan menghapus dan membuat ulang peran. Anda biasanya tidak melihat ID ini di konsol, karena IAM menggunakan transformasi terbalik kembali ke peran ARN saat kebijakan kepercayaan ditampilkan. Namun, jika Anda menghapus peran, maka Anda memutuskan hubungan. Kebijakan tidak lagi berlaku, bahkan jika Anda membuat ulang peran tersebut karena peran baru memiliki ID utama baru yang tidak cocok dengan ID yang disimpan dalam kebijakan kepercayaan. Ketika ini terjadi, ID utama muncul dalam kebijakan berbasis sumber daya karena tidak AWS dapat lagi memetakannya kembali ke ARN yang valid. Hasil akhirnya adalah jika Anda menghapus dan membuat ulang peran yang direferensikan dalam `Principal` elemen kebijakan kepercayaan, Anda harus mengedit peran dalam kebijakan untuk mengganti ID utama dengan ARN yang benar. ARN sekali lagi berubah menjadi ID utama peran saat Anda menyimpan kebijakan. Untuk informasi selengkapnya, lihat [Memahami AWS Penanganan peran IAM yang Dihapus di Kebijakan](https://repost.aws/articles/ARSqFcxvd7R9u-gcFD9nmA5g/understanding-aws-s-handling-of-deleted-iam-roles-in-policies).

Atau, Anda dapat menentukan prinsipal peran sebagai prinsipal dalam kebijakan berbasis sumber daya atau [membuat kebijakan izin luas yang menggunakan](#principal-anonymous) kunci kondisi. `aws:PrincipalArn` Saat Anda menggunakan kunci ini, prinsipal sesi peran diberikan izin berdasarkan ARN peran yang diasumsikan, dan bukan ARN dari sesi yang dihasilkan. Karena AWS tidak mengonversi kunci kondisi ARNs menjadi IDs, izin yang diberikan ke ARN peran tetap ada jika Anda menghapus peran dan kemudian membuat peran baru dengan nama yang sama. Jenis kebijakan berbasis identitas, seperti batas izin atau kebijakan sesi, tidak membatasi izin yang diberikan menggunakan kunci `aws:PrincipalArn` kondisi dengan wildcard (\$1) di `Principal` elemen, kecuali kebijakan berbasis identitas berisi penolakan eksplisit.

## Kepala sesi peran
<a name="principal-role-session"></a>

Anda dapat menentukan sesi peran dalam `Principal` elemen kebijakan berbasis sumber daya atau dalam kunci kondisi yang mendukung prinsipal. Ketika prinsipal atau identitas mengambil peran, mereka menerima kredensil keamanan sementara dengan izin peran yang diasumsikan. Ketika mereka menggunakan kredensi sesi tersebut untuk melakukan operasi AWS, mereka menjadi kepala *sesi peran*.

Format yang Anda gunakan untuk prinsipal sesi peran bergantung pada AWS STS operasi yang digunakan untuk mengambil peran.

**penting**  
AWS merekomendasikan penggunaan [prinsip peran IAM dalam kebijakan Anda alih-alih prinsip](#principal-roles) sesi peran sedapat mungkin. Gunakan `Condition` pernyataan dan kunci kondisi untuk cakupan akses bawah lebih lanjut bila diperlukan.

Untuk menentukan ARN utama sesi peran dalam `Principal` elemen, gunakan format berikut:

```
"Principal": { "AWS": "arn:aws:sts::AWS-account-ID:assumed-role/role-name/role-session-name" }
```

Selain itu, administrator dapat merancang proses untuk mengontrol bagaimana sesi peran dikeluarkan. Misalnya, mereka dapat memberikan solusi satu-klik untuk penggunanya yang membuat nama sesi yang dapat diprediksi. Jika administrator melakukan ini, Anda dapat menggunakan prinsip sesi peran dalam kebijakan atau kunci kondisi. Jika tidak, Anda dapat menentukan peran ARN sebagai prinsipal dalam kunci `aws:PrincipalArn` kondisi. Cara Anda menentukan peran sebagai prinsipal dapat mengubah izin efektif untuk sesi yang dihasilkan. Untuk informasi selengkapnya, lihat [Kepala peran IAM](#principal-roles). 

## Kepala sekolah federasi OIDC
<a name="principal-federated-web-identity"></a>

Prinsipal federasi OIDC adalah prinsipal yang digunakan saat memanggil AWS STS `AssumeRoleWithWebIdentity` API dengan token web JSON (JWT) dari IDP yang sesuai dengan OIDC, juga dikenal sebagai Penyedia OpenID (OP), untuk meminta kredensyal sementara. AWS [Prinsipal federasi OIDC dapat mewakili IDP OIDC di AWS akun Anda, atau 4 penyedia identitas bawaan:Login with Amazon,,, dan Amazon Cognito. GoogleFacebook](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html)

Pengguna, beban kerja, atau sistem yang telah mengeluarkan JWT dari IDP OIDC mereka dapat menelepon `AssumeRoleWithWebIdentity` menggunakan JWT untuk meminta kredensyal AWS keamanan sementara untuk peran IAM yang dikonfigurasi untuk mempercayai IDP OIDC yang mengeluarkan JWT. [JWT dapat berupa token id, token akses, atau token JWT yang dikirimkan dengan metode lain selama memenuhi persyaratan yang tercantum oleh. AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html#manage-oidc-provider-prerequisites) Untuk informasi selengkapnya, lihat [Skenario umum](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_federation_common_scenarios.html) dan [Meminta kredensional melalui](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity) penyedia OIDC.

Gunakan tipe utama ini dalam kebijakan kepercayaan peran Anda untuk mengizinkan atau menolak izin untuk menelepon `AssumeRoleWIthWebIdentity` menggunakan IDP OIDC yang ada di Anda Akun AWS, atau salah satu dari empat bawaan. IDPs Untuk menentukan ARN utama federasi OIDC dalam `Principal` elemen kebijakan kepercayaan peran, gunakan salah satu dari empat format berikut untuk OIDC bawaan: IDPs

```
"Principal": { "Federated": "cognito-identity.amazonaws.com" }
```

```
"Principal": { "Federated": "www.amazon.com" }
```

```
"Principal": { "Federated": "graph.facebook.com" }
```

```
"Principal": { "Federated": "accounts.google.com" }
```

Saat menggunakan penyedia OIDC yang Anda tambahkan ke akun, misalnya GitHub, Anda menentukan ARN penyedia dalam kebijakan kepercayaan peran Anda. Konfigurasi ini memungkinkan Anda untuk menulis kebijakan IAM yang mengontrol akses khusus untuk pengguna yang diautentikasi melalui penyedia identitas kustom Anda.

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:oidc-provider/full-OIDC-identity-provider-URL" }
```

Misalnya, jika GitHub penyedia identitas web tepercaya, sesi peran OIDC ARN dalam `Principal` elemen kebijakan kepercayaan peran menggunakan format berikut:

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:oidc-provider/tokens.actions.githubusercontent.com" }
```

Lihat [Mengonfigurasi OpenID Connect di Amazon](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) Web Services untuk informasi selengkapnya.

Prinsipal federasi OIDC tidak didukung dalam jenis kebijakan selain kebijakan kepercayaan peran.

## Kepala sekolah federasi SALL
<a name="principal-saml"></a>

Prinsipal *federasi SAMP* adalah prinsipal yang digunakan saat memanggil AWS STS `AssumeRoleWithSAML` API untuk meminta AWS kredensyal sementara menggunakan pernyataan SAMP. Anda dapat menggunakan penyedia identitas SAMP (IDP) untuk masuk, dan kemudian mengambil peran IAM menggunakan operasi ini. Mirip dengan`AssumeRoleWithWebIdentity`, `AssumeRoleWithSAML` tidak memerlukan AWS kredensil untuk otentikasi. Sebagai gantinya, pengguna pertama-tama mengautentikasi dengan penyedia identitas SAMP mereka, lalu melakukan panggilan `AssumeRoleWithSAML` API menggunakan pernyataan SAMP mereka, atau diarahkan ke halaman Masuk/SAMP untuk AWS masuk ke halaman. Konsol Manajemen AWS Untuk informasi lebih lanjut tentang prinsipal mana yang dapat mengambil peran menggunakan operasi ini, lihat. [Bandingkan AWS STS kredensialnya](id_credentials_sts-comparison.md)

Gunakan tipe utama ini dalam kebijakan kepercayaan peran Anda untuk mengizinkan atau menolak izin berdasarkan penyedia identitas SAMP tepercaya. Untuk menentukan ARN sesi peran identitas SAMP dalam `Principal` elemen kebijakan kepercayaan peran, gunakan format berikut:

```
"Principal": { "Federated": "arn:aws:iam::AWS-account-ID:saml-provider/provider-name" }
```

## Prinsip pengguna IAM
<a name="principal-users"></a>

Anda dapat menentukan pengguna IAM dalam `Principal` elemen kebijakan berbasis sumber daya atau dalam kunci kondisi yang mendukung prinsipal.

**catatan**  
Dalam sebuah `Principal` elemen, bagian nama pengguna dari [*Amazon Resource Name* (ARN) peka huruf besar/kecil](reference_identifiers.md#identifiers-arns).

```
"Principal": { "AWS": "arn:aws:iam::AWS-account-ID:user/user-name" }
```

```
"Principal": {
  "AWS": [
    "arn:aws:iam::AWS-account-ID:user/user-name-1", 
    "arn:aws:iam::AWS-account-ID:user/user-name-2"
  ]
}
```

Saat Anda menentukan pengguna di elemen `Principal`, Anda tidak dapat menggunakan wildcard (`*`) yang berarti “semua pengguna”. Prinsipal harus selalu memberi nama pengguna tertentu. 

**penting**  
Jika `Principal` elemen Anda dalam kebijakan kepercayaan peran berisi ARN yang mengarah ke pengguna IAM tertentu, maka IAM mengubah ARN menjadi ID utama unik pengguna saat Anda menyimpan kebijakan. Hal ini membantu memitigasi risiko seseorang meningkatkan hak istimewa mereka dengan menghapus dan membuat ulang pengguna. Anda biasanya tidak melihat ID ini di konsol, karena juga ada transformasi balik kembali ke ARN pengguna ketika kebijakan kepercayaan ditampilkan. Namun, jika Anda menghapus pengguna, maka Anda memutuskan hubungan. Kebijakan tidak lagi berlaku, bahkan saat Anda membuat ulang pengguna. Itu karena pengguna baru memiliki ID utama baru yang tidak cocok dengan ID yang disimpan dalam kebijakan kepercayaan. Ketika ini terjadi, ID utama muncul dalam kebijakan berbasis sumber daya karena tidak AWS dapat lagi memetakannya kembali ke ARN yang valid. Hasilnya adalah jika Anda menghapus dan membuat ulang pengguna yang direferensikan dalam `Principal` elemen kebijakan kepercayaan, Anda harus mengedit peran untuk mengganti ID utama yang sekarang salah dengan ARN yang benar. IAM sekali lagi mengubah ARN menjadi ID utama pengguna yang baru saat Anda menyimpan kebijakan.

## Kepala Pusat Identitas IAM
<a name="principal-identity-users"></a>

Dalam IAM Identity Center, prinsipal dalam kebijakan berbasis sumber daya harus didefinisikan sebagai prinsipal. Akun AWS Untuk menentukan akses, rujuk peran ARN dari izin yang ditetapkan di blok kondisi. Untuk detailnya, lihat [Mereferensikan set izin dalam kebijakan sumber daya, Amazon EKS, dan AWS KMS](https://docs.aws.amazon.com/singlesignon/latest/userguide/referencingpermissionsets.html) di *Panduan Pengguna Pusat Identitas IAM*.

## AWS STS prinsip pengguna federasi
<a name="sts-session-principals"></a>

Anda dapat menentukan *sesi pengguna federasi* dalam `Principal` elemen kebijakan berbasis sumber daya atau dalam kunci kondisi yang mendukung prinsipal.

**penting**  
AWS merekomendasikan agar Anda membatasi penggunaan sesi pengguna AWS STS federasi. Sebagai gantinya, gunakan [peran IAM](IAM/latest/UserGuide/tutorial_cross-account-with-roles.html).

Prinsipal pengguna AWS STS federasi dibuat melalui `GetFederationToken` operasi yang disebut dengan kredensil IAM berumur panjang. Izin pengguna federasi adalah persimpangan dari prinsipal yang dipanggil `GetFederationToken` dan kebijakan sesi diteruskan sebagai parameter ke API. `GetFederationToken`

Di AWS, pengguna IAM atau Pengguna root akun AWS dapat mengautentikasi menggunakan kunci akses jangka panjang. Untuk informasi lebih lanjut tentang kepala sekolah mana yang dapat berfederasi menggunakan operasi ini, lihat. [Bandingkan AWS STS kredensialnya](id_credentials_sts-comparison.md)
+ Pengguna **federasi IAM — Pengguna** IAM bergabung menggunakan `GetFederationToken` operasi yang menghasilkan sesi pengguna federasi untuk pengguna IAM tersebut.
+ **Pengguna root federasi** — Pengguna root federasi menggunakan `GetFederationToken` operasi yang menghasilkan sesi pengguna federasi untuk pengguna root tersebut.

Ketika pengguna IAM atau pengguna root meminta kredensyal sementara dari AWS STS menggunakan operasi ini, mereka memulai sesi pengguna gabungan sementara. ARN sesi ini didasarkan pada identitas asli yang difederasi.

Untuk menentukan ARN sesi pengguna federasi dalam `Principal` elemen, gunakan format berikut:

```
"Principal": { "AWS": "arn:aws:sts::AWS-account-ID:federated-user/user-name" }
```

## AWS prinsip layanan
<a name="principal-services"></a>

Anda dapat menentukan AWS layanan dalam `Principal` elemen kebijakan berbasis sumber daya atau dalam kunci kondisi yang mendukung prinsipal. *Prinsipal layanan* adalah pengidentifikasi untuk suatu layanan. 

Peran IAM yang dapat diasumsikan oleh AWS layanan disebut *[peran layanan](id_roles.md#iam-term-service-role)*. Peran layanan harus menyertakan kebijakan kepercayaan. *Kebijakan kepercayaan adalah kebijakan* berbasis sumber daya yang melekat pada peran yang menentukan prinsip mana yang dapat mengambil peran tersebut. Beberapa peran layanan telah menetapkan kebijakan kepercayaan. Namun, dalam beberapa kasus, Anda harus menentukan prinsip utama layanan dalam kebijakan kepercayaan. Prinsip layanan dalam kebijakan IAM tidak bisa`"Service": "*"`.

**penting**  
Pengidentifikasi untuk prinsipal layanan mencakup nama layanan, dan biasanya dalam format berikut:  
`service-name.amazonaws.com`

Prinsipal layanan ditentukan oleh layanan. Anda dapat menemukan prinsipal layanan untuk beberapa layanan dengan membuka [AWS layanan yang bekerja dengan IAM](reference_aws-services-that-work-with-iam.md), memeriksa apakah layanan memiliki **Ya** di kolom **Peran yang dikaitkan dengan layanan**, dan membuka tautan **Ya** untuk melihat dokumentasi peran yang dikaitkan dengan layanan untuk layanan tersebut. Temukan bagian **Izin Peran Ditautkan Layanan** untuk layanan tersebut dapat melihat prinsipal layanan.

Contoh berikut menunjukkan kebijakan yang dapat dilampirkan pada peran layanan. Kebijakan tersebut memungkinkan dua layanan, Amazon ECS dan Elastic Load Balancing, untuk mengambil peran tersebut. Layanan kemudian dapat melakukan tugas yang diberikan oleh kebijakan izin yang ditetapkan untuk peran tersebut (tidak ditampilkan). Untuk menetapkan beberapa prinsipal layanan, Anda tidak menentukan dua elemen `Service`; Anda hanya dapat memiliki satu. Sebagai gantinya, Anda menggunakan serangkaian dari beberapa prinsipal layanan sebagai nilai elemen `Service` tunggal.

```
"Principal": {
    "Service": [
        "ecs.amazonaws.com",
        "elasticloadbalancing.amazonaws.com"
   ]
}
```

## AWS prinsip layanan di Wilayah keikutsertaan
<a name="principal-services-in-opt-in-regions"></a>

Anda dapat meluncurkan sumber daya di beberapa AWS Wilayah dan beberapa Wilayah yang harus Anda pilih. Untuk daftar lengkap Wilayah yang harus Anda pilih, lihat [Mengelola AWS Wilayah](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) di *Referensi Umum AWS*panduan.

Ketika suatu AWS layanan di Wilayah keikutsertaan membuat permintaan dalam Wilayah yang sama, format nama utama layanan diidentifikasi sebagai versi non-regional dari nama utama layanan mereka:

`service-name.amazonaws.com`

Ketika suatu AWS layanan di Wilayah keikutsertaan membuat permintaan lintas wilayah ke Wilayah lain, format nama utama layanan diidentifikasi sebagai versi regional dari nama utama layanan mereka:

`service-name.{region}.amazonaws.com`

Misalnya, Anda memiliki topik Amazon SNS yang terletak di Wilayah `ap-southeast-1` dan bucket Amazon S3 yang terletak di Wilayah keikutsertaan. `ap-east-1` Anda ingin mengonfigurasi notifikasi bucket S3 untuk mempublikasikan pesan ke topik SNS. Untuk mengizinkan layanan S3 memposting pesan ke topik SNS, Anda harus memberikan `sns:Publish` izin utama layanan S3 melalui kebijakan akses berbasis sumber daya dari topik tersebut.

Jika Anda menentukan versi non-regionalisasi dari prinsipal layanan S3`s3.amazonaws.com`, dalam kebijakan akses topik, `sns:Publish` permintaan dari bucket ke topik akan gagal. Contoh berikut menentukan prinsip layanan S3 non-regionalisasi dalam elemen `Principal` kebijakan kebijakan akses topik SNS.

```
"Principal": { "Service": "s3.amazonaws.com" }
```

Karena bucket terletak di Wilayah keikutsertaan dan permintaan dibuat di luar Wilayah yang sama, prinsipal layanan S3 muncul sebagai nama utama layanan regional,. `s3.ap-east-1.amazonaws.com` Anda harus menggunakan nama utama layanan regional ketika AWS layanan di Wilayah opt-in mengajukan permintaan ke Wilayah lain. Setelah Anda menentukan nama utama layanan regional, jika bucket membuat `sns:Publish` permintaan ke topik SNS yang terletak di Wilayah lain, permintaan akan berhasil. Contoh berikut menentukan prinsipal layanan S3 regional dalam elemen `Principal` kebijakan kebijakan akses topik SNS.

```
"Principal": { "Service": "s3.ap-east-1.amazonaws.com" }
```

Kebijakan sumber daya atau daftar izin berbasis prinsip layanan untuk permintaan Lintas wilayah dari Wilayah keikutsertaan ke Wilayah lain hanya akan berhasil jika Anda menentukan nama utama layanan regional.

**catatan**  
Untuk kebijakan kepercayaan peran IAM, sebaiknya gunakan nama utama layanan non-regional. Sumber daya IAM bersifat global dan oleh karena itu peran yang sama dapat digunakan di Wilayah mana pun.

## Semua kepala sekolah
<a name="principal-anonymous"></a>

Anda dapat menggunakan wildcard (\$1) untuk menentukan semua prinsipal dalam `Principal` elemen kebijakan berbasis sumber daya atau dalam kunci kondisi yang mendukung prinsipal. [Kebijakan berbasis sumber daya](access_policies.md#policies_resource-based)izin *pemberian* dan [kunci kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) digunakan untuk membatasi kondisi pernyataan kebijakan.

**penting**  
Kami sangat menyarankan agar Anda tidak menggunakan wildcard (\$1) dalam `Principal` elemen kebijakan berbasis sumber daya dengan `Allow` efek kecuali Anda berniat untuk memberikan akses publik atau anonim. Jika tidak, tentukan prinsip, layanan, atau AWS akun yang dimaksudkan dalam `Principal` elemen dan kemudian batasi akses lebih lanjut dalam elemen. `Condition` Hal ini terutama berlaku untuk kebijakan kepercayaan peran IAM, karena mereka memungkinkan prinsipal lain untuk menjadi prinsipal di akun Anda.

Untuk kebijakan berbasis sumber daya, menggunakan wildcard (\$1) dengan `Allow` efek memberikan akses ke semua pengguna, termasuk pengguna anonim (akses publik). Untuk pengguna IAM dan kepala peran dalam akun Anda, tidak ada izin lain yang diperlukan. Untuk prinsipal di akun lain, mereka juga harus memiliki izin berbasis identitas di akun mereka yang memungkinkan mereka mengakses sumber daya Anda. Ini disebut [akses lintas akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html).

Untuk pengguna anonim, elemen berikut ini setara:

```
"Principal": "*"
```

```
"Principal" : { "AWS" : "*" }
```

Anda tidak dapat menggunakan wildcard untuk mencocokkan sebagian nama pengguna utama atau ARN.

*Contoh berikut menunjukkan kebijakan berbasis sumber daya yang dapat digunakan alih-alih [AWS Elemen kebijakan JSON: NotPrincipal](reference_policies_elements_notprincipal.md) untuk secara eksplisit menolak semua prinsip kecuali yang ditentukan dalam elemen.* `Condition` Kebijakan ini harus [ditambahkan ke bucket Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/add-bucket-policy.html).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "UsePrincipalArnInsteadOfNotPrincipalWithDeny",
      "Effect": "Deny",
      "Action": "s3:*",
      "Principal": "*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*",
        "arn:aws:s3:::amzn-s3-demo-bucket"
      ],
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::444455556666:user/user-name"
        }
      }
    }
  ]
}
```

------

## Informasi selengkapnya
<a name="Principal_more-info"></a>

Untuk informasi selengkapnya, lihat berikut ini:
+ [Contoh kebijakan bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*
+ [Contoh kebijakan untuk Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/UsingIAMwithSNS.html#ExamplePolicies_SNS) di Panduan Pengembang *Layanan Pemberitahuan Sederhana Amazon*
+ [Contoh kebijakan Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSExamples.html) di Panduan Pengembang Layanan *Antrian Sederhana Amazon*
+ [Kebijakan utama](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) dalam *Panduan AWS Key Management Service Pengembang*
+ [Pengidentifikasi akun](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) di *Referensi Umum AWS*
+ [Federasi OIDC](id_roles_providers_oidc.md)

# AWS Elemen kebijakan JSON: NotPrincipal
<a name="reference_policies_elements_notprincipal"></a>

`NotPrincipal`Elemen menggunakan `"Effect":"Deny"` untuk menolak akses ke semua prinsipal ***kecuali*** prinsipal yang ditentukan dalam elemen. `NotPrincipal` Prinsipal dapat berupa pengguna IAM, prinsipal pengguna AWS STS federasi, peran IAM, sesi peran yang diasumsikan,, AWS layanan Akun AWS, atau jenis utama lainnya. Untuk informasi lebih lanjut tentang kepala sekolah, lihat. [AWS Elemen kebijakan JSON: Principal](reference_policies_elements_principal.md)

`NotPrincipal`harus digunakan dengan`"Effect":"Deny"`. Menggunakannya `"Effect":"Allow"` dengan tidak didukung. 

**penting**  
Kami tidak merekomendasikan penggunaan `NotPrincipal` untuk kebijakan berbasis sumber daya baru sebagai bagian dari strategi keamanan dan otorisasi Anda. Saat Anda menggunakan`NotPrincipal`, pemecahan masalah efek dari beberapa jenis kebijakan bisa jadi sulit. Sebaiknya gunakan kunci `aws:PrincipalArn` konteks dengan operator kondisi ARN sebagai gantinya.

## Poin kunci
<a name="notprincipal-key-points"></a>
+ `NotPrincipal`Elemen ini didukung dalam kebijakan berbasis sumber daya untuk beberapa layanan AWS , termasuk titik akhir VPC. Kebijakan berbasis sumber daya adalah kebijakan yang diterapkan langsung ke sumber daya. Anda tidak dapat menggunakan `NotPrincipal` elemen dalam kebijakan berbasis identitas IAM atau dalam kebijakan kepercayaan peran IAM.
+ Jangan gunakan pernyataan kebijakan berbasis sumber daya yang menyertakan elemen `NotPrincipal` kebijakan dengan `Deny` efek untuk pengguna IAM atau peran yang memiliki kebijakan batas izin yang dilampirkan. `NotPrincipal`Elemen dengan `Deny` efek akan selalu menolak prinsip IAM yang memiliki kebijakan batas izin yang dilampirkan, terlepas dari nilai yang ditentukan dalam elemen. `NotPrincipal` Hal ini menyebabkan beberapa pengguna IAM atau peran yang seharusnya memiliki akses ke sumber daya kehilangan akses. Sebaiknya ubah pernyataan kebijakan berbasis sumber daya Anda untuk menggunakan operator kondisi [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN)dengan kunci [`aws:PrincipalArn`](reference_policies_condition-keys.md#condition-keys-principalarn)konteks untuk membatasi akses, bukan elemen. `NotPrincipal` Untuk informasi tentang batas izin, lihat[Batas izin untuk entitas IAM](access_policies_boundaries.md).
+ Saat Anda menggunakan`NotPrincipal`, Anda juga harus menentukan ARN akun dari prinsipal yang tidak ditolak. Jika tidak, kebijakan ini dapat menolak akses ke seluruh akun yang berisi prinsipal. Bergantung pada layanan yang Anda sertakan dalam kebijakan Anda, AWS dapat memvalidasi akun terlebih dahulu, lalu pengguna. Jika pengguna peran yang diasumsikan (seseorang yang menggunakan peran) sedang dievaluasi, AWS mungkin memvalidasi akun terlebih dahulu, kemudian peran, dan kemudian pengguna peran yang dianggap. Pengguna peran yang diasumsikan diidentifikasi oleh nama sesi peran yang ditentukan saat mereka mengasumsikan peran. Oleh karena itu, kami sangat menyarankan Anda secara eksplisit untuk menyertakan ARN untuk akun pengguna, atau menyertakan ARN untuk peran dan ARN untuk akun yang berisi peran tersebut.
+ `NotPrincipal`Elemen tidak didukung dalam Kebijakan Kontrol Layanan (SCP) dan Kebijakan Kontrol Sumber Daya (RCP).

## Alternatif untuk `NotPrincipal` elemen
<a name="notprincipal-alternatives"></a>

Saat mengelola kontrol akses di AWS, mungkin ada skenario di mana Anda perlu secara eksplisit menolak semua akses prinsipal ke sumber daya, kecuali untuk satu atau beberapa prinsip yang Anda tentukan. AWS merekomendasikan penggunaan pernyataan Deny dengan kunci konteks kondisi global untuk kontrol yang lebih tepat dan pemecahan masalah yang lebih mudah. Contoh berikut menunjukkan pendekatan alternatif menggunakan operator kondisi seperti `StringNotEquals` atau `ArnNotEquals` untuk menolak akses ke semua prinsipal kecuali yang ditentukan dalam elemen Kondisi.

## Contoh skenario menggunakan peran IAM
<a name="notprincipal-alternative-role"></a>

Anda dapat menggunakan kebijakan berbasis sumber daya dengan pernyataan Deny untuk mencegah semua peran IAM, kecuali yang ditentukan dalam elemen Kondisi, mengakses atau memanipulasi sumber daya Anda. Pendekatan ini mengikuti prinsip AWS keamanan bahwa penolakan eksplisit selalu diutamakan daripada pernyataan izin apa pun dan membantu mempertahankan prinsip hak istimewa terkecil di seluruh infrastruktur Anda. AWS 

Alih-alih menggunakan`NotPrincipal`, sebaiknya gunakan pernyataan Deny dengan kunci konteks kondisi global dan operator kondisi [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN)ingin secara eksplisit mengizinkan akses peran IAM ke sumber daya Anda. Contoh berikut digunakan [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) untuk secara eksplisit mengizinkan peran `read-only-role` mengakses bucket Amazon S3 di folder. `Bucket_Account_Audit`

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyCrossAuditAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::Bucket_Account_Audit",
        "arn:aws:s3:::Bucket_Account_Audit/*"
      ],
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::444455556666:role/read-only-role"
        }
      }
    }
  ]
}
```

------

## Contoh skenario menggunakan prinsip layanan
<a name="notprincipal-alternative-service-principal"></a>

Anda dapat menggunakan pernyataan Deny untuk mencegah semua prinsip layanan, kecuali yang ditentukan dalam `Condition` elemen, mengakses atau memanipulasi sumber daya Anda. Pendekatan ini sangat berguna ketika Anda perlu menerapkan kontrol akses berbutir halus atau menetapkan batas keamanan antara berbagai layanan dan aplikasi di lingkungan Anda. AWS 

Alih-alih menggunakan`NotPrincipal`, sebaiknya gunakan pernyataan Deny dengan kunci konteks kondisi global dan operator kondisi [`StringNotEquals`](reference_policies_elements_condition_operators.md#Conditions_String)untuk secara eksplisit mengizinkan akses utama layanan ke sumber daya Anda. Contoh berikut digunakan `aws:PrincipalServiceName` untuk secara eksplisit mengizinkan prinsipal AWS CodeBuild layanan mengakses bucket Amazon S3 di folder. `BUCKETNAME`

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyNotCodeBuildAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::BUCKETNAME",
        "arn:aws:s3:::BUCKETNAME/*"
      ],
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:PrincipalServiceName": "codebuild.amazonaws.com"
        }
      }
    }
  ]
}
```

------

# Elemen kebijakan IAM JSON: Action
<a name="reference_policies_elements_action"></a>

Elemen `Action` menguraikan tindakan khusus atau tindakan yang akan diizinkan atau ditolak. Pernyataan harus mencakup elemen `Action` atau `NotAction`. Setiap AWS layanan memiliki serangkaian tindakan sendiri yang menggambarkan tugas yang dapat Anda lakukan dengan layanan itu. [Misalnya, daftar tindakan untuk Amazon S3 dapat ditemukan di [Menentukan Izin dalam](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html) Kebijakan di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*, daftar tindakan untuk Amazon EC2 dapat ditemukan di Referensi API Amazon EC2, dan daftar tindakan untuk AWS Identity and Access Management dapat ditemukan di [Referensi API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/query-apis.html) IAM.](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html) Untuk menemukan daftar tindakan untuk layanan lain, lihat [dokumentasi](https://aws.amazon.com/documentation) referensi API untuk layanan.

AWS juga menyediakan informasi referensi layanan dalam format JSON untuk merampingkan otomatisasi alur kerja manajemen kebijakan. Dengan informasi referensi layanan, Anda dapat mengakses tindakan, sumber daya, dan kunci kondisi yang tersedia di seluruh file Layanan AWS yang dapat dibaca mesin. Untuk informasi selengkapnya, lihat [Layanan AWS Informasi yang disederhanakan untuk akses terprogram di Referensi](https://docs.aws.amazon.com/service-authorization/latest/reference/service-reference.html) Otorisasi Layanan.

Anda menentukan nilai menggunakan namespace layanan sebagai prefiks tindakan (`iam`, `ec2`, `sqs`, `sns`, `s3`, dll.) diikuti dengan nama tindakan yang mengizinkan atau menolak. Nama harus sesuai dengan tindakan yang didukung oleh layanan. Prefiks dan nama tindakan tidak sensitif dengan huruf besar-kecil. Misalnya, `iam:ListAccessKeys` sama dengan `IAM:listaccesskeys`. Contoh berikut menunjukkan elemen `Action` untuk layanan yang berbeda.

**Tindakan Amazon SQS**

```
"Action": "sqs:SendMessage"
```

**Tindakan Amazon EC2**

```
"Action": "ec2:StartInstances"
```

**Tindakan IAM**

```
"Action": "iam:ChangePassword"
```

**Tindakan Amazon S3**

```
"Action": "s3:GetObject"
```

Anda dapat menentukan beberapa nilai untuk elemen `Action`.

```
"Action": [ "sqs:SendMessage", "sqs:ReceiveMessage", "ec2:StartInstances", "iam:ChangePassword", "s3:GetObject" ]
```

Anda dapat menggunakan wildcard pencocokan multi-karakter (`*`) dan wildcard pencocokan karakter tunggal (`?`) untuk memberikan akses ke semua tindakan yang ditawarkan produk tertentu. AWS Misalnya, elemen `Action` berikut berlaku untuk semua tindakan S3.

```
"Action": "s3:*"
```

Anda juga dapat menggunakan wildcard (`*`atau`?`) sebagai bagian dari nama tindakan. Misalnya, elemen `Action` berikut berlaku untuk semua tindakan IAM yang mencakup string `AccessKey`, termasuk `CreateAccessKey`, `DeleteAccessKey`, `ListAccessKeys`, dan `UpdateAccessKey`.

```
"Action": "iam:*AccessKey*"
```

Beberapa layanan memungkinkan Anda membatasi tindakan yang tersedia. Misalnya, Amazon SQS memungkinkan Anda menyediakan hanya sebagian kecil dari semua kemungkinan tindakan Amazon SQS. Dalam hal ini, wildcard `*` tidak memungkinkan kontrol penuh atas antrean; itu hanya memungkinkan subset tindakan yang telah Anda bagikan. Untuk informasi lebih lanjut, lihat [Memahami Izin](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/acp-overview.html#PermissionTypes) di *Panduan Pengembang Amazon Simple Queue Service*.

# Elemen kebijakan IAM JSON: NotAction
<a name="reference_policies_elements_notaction"></a>

`NotAction` adalah elemen kebijakan tingkat lanjut yang secara eksplisit cocok dengan semuanya *kecuali* daftar tindakan yang ditentukan. Menggunakan `NotAction` dapat menghasilkan kebijakan yang lebih singkat dengan mencantumkan hanya beberapa tindakan yang harus tidak cocok, daripada menyertakan daftar panjang tindakan yang sesuai. Tindakan yang `NotAction` ditentukan dalam tidak terpengaruh oleh `Allow` atau `Deny` efek dalam pernyataan kebijakan. Hal ini, pada gilirannya, berarti bahwa semua tindakan atau layanan yang berlaku yang tidak terdaftar diperbolehkan jika Anda menggunakan efek `Allow`. Sebagai tambahan, tindakan atau layanan yang tidak terdaftar tersebut ditolak jika Anda menggunakan efek `Deny`. Saat Anda menggunakan `NotAction` dengan elemen `Resource`, Anda memberikan cakupan untuk kebijakan. Ini adalah bagaimana AWS menentukan tindakan atau layanan mana yang berlaku. Untuk informasi selengkapnya, lihat kebijakan contoh berikut. 

**NotAction dengan Izinkan** 

Anda dapat menggunakan `NotAction` elemen dalam pernyataan dengan `"Effect": "Allow"` untuk menyediakan akses ke semua tindakan dalam AWS layanan, kecuali untuk tindakan yang ditentukan dalam`NotAction`. Anda dapat menggunakannya dengan elemen `Resource` untuk menyediakan cakupan untuk kebijakan, membatasi tindakan yang diizinkan untuk tindakan yang dapat dilakukan pada sumber daya tertentu.

Contoh berikut memungkinkan pengguna mengakses semua tindakan Amazon S3 yang dapat dilakukan pada sumber daya S3 *kecuali* untuk menghapus bucket. Kebijakan ini juga tidak mengizinkan tindakan dalam layanan lain, karena tindakan layanan lainnya tidak berlaku untuk sumber daya S3.

```
"Effect": "Allow",
"NotAction": "s3:DeleteBucket",
"Resource": "arn:aws:s3:::*",
```

Terkadang, Anda mungkin ingin memungkinkan akses ke sejumlah besar tindakan. Dengan menggunakan elemen `NotAction` secara efektif membalik pernyataan, yang menghasilkan daftar tindakan yang lebih singkat. Misalnya, karena AWS memiliki begitu banyak layanan, Anda mungkin ingin membuat kebijakan yang memungkinkan pengguna melakukan semuanya kecuali mengakses tindakan IAM.

Contoh berikut memungkinkan pengguna untuk mengakses setiap tindakan di setiap AWS layanan kecuali IAM.

```
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
```

Hati-hati saat menggunakan elemen `NotAction` dan `"Effect": "Allow"` dalam pernyataan yang sama atau dalam pernyataan yang berbeda dalam kebijakan. `NotAction` cocok dengan semua layanan dan tindakan yang tidak tercantum atau berlaku secara eksplist untuk sumber daya yang ditentukan, dan dapat mengakibatkan pemberian izin kepada pengguna lebih dari yang Anda inginkan.

**NotAction dengan mendustakan**

Anda dapat menggunakan elemen `NotAction` dalam pernyataan dengan `"Effect": "Deny"` untuk menolak akses ke semua sumber daya yang tercantum kecuali untuk tindakan yang ditentukan dalam elemen `NotAction`. Kombinasi ini tidak memungkinkan item yang terdaftar, tetapi sebaliknya secara eksplisit menolak tindakan yang tidak tercantum. Anda tetap harus mengizinkan tindakan yang ingin Anda izinkan.

Contoh kondisi berikut menolak akses ke tindakan non-IAM jika pengguna tidak masuk menggunakan MFA. Jika pengguna masuk dengan MFA, maka `"Condition"` pengujian gagal dan pernyataan akhir `"Deny"` tidak berpengaruh. Namun demikian, harap diperhatikan bahwa hal ini tidak akan memberikan akses kepada pengguna ke tindakan apa pun; hal ini hanya akan secara eksplisit menolak semua tindakan lainnya kecuali tindakan IAM.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "DenyAllUsersNotUsingMFA",
        "Effect": "Deny",
        "NotAction": "iam:*",
        "Resource": "*",
        "Condition": {"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}}
    }]
}
```

------

Untuk contoh kebijakan yang menolak akses ke tindakan di luar Wilayah tertentu, kecuali untuk tindakan dari layanan tertentu, lihat [AWS: Menolak akses AWS berdasarkan Wilayah yang diminta](reference_policies_examples_aws_deny-requested-region.md).

# Elemen kebijakan IAM JSON: Resource
<a name="reference_policies_elements_resource"></a>

`Resource`Elemen dalam pernyataan kebijakan IAM mendefinisikan objek atau objek yang berlaku untuk pernyataan tersebut. Pernyataan harus menyertakan elemen `Resource` atau `NotResource`.

Anda menentukan sumber daya menggunakan Amazon Resource Name (ARN). Format ARN tergantung pada Layanan AWS dan sumber daya spesifik yang Anda maksud. Meskipun format ARN bervariasi, Anda selalu menggunakan ARN untuk mengidentifikasi sumber daya. Untuk informasi selengkapnya tentang format ARNs, lihat[IAM ARNs](reference_identifiers.md#identifiers-arns). Untuk informasi tentang cara menentukan sumber daya, lihat dokumentasi untuk layanan yang ingin Anda tulis pernyataan.

**catatan**  
Beberapa Layanan AWS tidak memungkinkan Anda untuk menentukan tindakan untuk sumber daya individu. Dalam kasus ini, tindakan apa pun yang Anda cantumkan di `NotAction` elemen `Action` atau berlaku untuk semua sumber daya dalam layanan tersebut. Ketika ini terjadi, Anda menggunakan karakter wildcard (`*`) dalam `Resource` elemen.

Contoh berikut mengacu pada antrean Amazon SQS tertentu.

```
"Resource": "arn:aws:sqs:us-east-2:account-ID-without-hyphens:queue1"
```

Contoh berikut mengacu pada pengguna IAM bernama `Bob` dalam file Akun AWS.

**catatan**  
Dalam `Resource` elemen, nama pengguna IAM peka huruf besar/kecil.

```
"Resource": "arn:aws:iam::account-ID-without-hyphens:user/Bob"
```

## Menggunakan wildcard di sumber daya ARNs
<a name="reference_policies_elements_resource_wildcards"></a>

Anda dapat menggunakan karakter wildcard (`*`dan`?`) dalam segmen individual ARN (bagian yang dipisahkan oleh titik dua) untuk mewakili:
+ Setiap kombinasi karakter (`*`)
+ Setiap karakter tunggal (`?`)

Anda dapat menggunakan beberapa `*` atau `?` karakter di setiap segmen. Jika `*` wildcard adalah karakter terakhir dari segmen ARN sumber daya, ia dapat diperluas untuk mencocokkan di luar batas titik dua. Kami menyarankan Anda menggunakan wildcard (`*`dan`?`) dalam segmen ARN yang dipisahkan oleh titik dua.

**catatan**  
Anda tidak dapat menggunakan wildcard di segmen layanan yang mengidentifikasi produk. AWS Untuk informasi selengkapnya tentang segmen ARN, lihat [Identifikasi AWS sumber daya dengan Nama Sumber Daya Amazon (ARNs)](reference-arns.md)

Contoh berikut mengacu pada semua pengguna IAM yang alurnya `/accounting`. 

```
"Resource": "arn:aws:iam::account-ID-without-hyphens:user/accounting/*"
```

Contoh berikut mengacu pada semua item dalam bucket Amazon S3 spesifik.

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
```

Karakter asterisk (`*`) dapat diperluas untuk menggantikan segala sesuatu di dalam segmen, termasuk karakter seperti garis miring maju (`/`) yang mungkin tampak sebagai pembatas dalam namespace layanan tertentu. Misalnya, pertimbangkan Amazon S3 ARN berikut karena logika ekspansi wildcard yang sama berlaku untuk semua layanan.

```
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*/test/*"
```

Wildcard di ARN berlaku untuk semua objek berikut dalam bucket, tidak hanya objek pertama yang terdaftar.

```
amzn-s3-demo-bucket/1/test/object.jpg
amzn-s3-demo-bucket/1/2/test/object.jpg
amzn-s3-demo-bucket/1/2/test/3/object.jpg 
amzn-s3-demo-bucket/1/2/3/test/4/object.jpg
amzn-s3-demo-bucket/1///test///object.jpg
amzn-s3-demo-bucket/1/test/.jpg
amzn-s3-demo-bucket//test/object.jpg
amzn-s3-demo-bucket/1/test/
```

Pertimbangkan dua objek terakhir dalam daftar sebelumnya. Nama objek Amazon S3 dapat dimulai atau diakhiri dengan karakter pembatas garis miring () pembatas konvensional. `/` Sementara `/` bekerja sebagai pembatas, tidak ada signifikansi khusus ketika karakter ini digunakan dalam ARN sumber daya. Hal ini diperlakukan sama dengan karakter valid lainnya. ARN tidak akan cocok dengan objek berikut:

```
amzn-s3-demo-bucket/1-test/object.jpg
amzn-s3-demo-bucket/test/object.jpg
amzn-s3-demo-bucket/1/2/test.jpg
```

## Menentukan beberapa sumber daya
<a name="reference_policies_elements_resource_multiple-resources"></a>

Anda dapat menentukan beberapa sumber daya dalam `Resource` elemen dengan menggunakan array ARNs. Contoh berikut mengacu pada dua tabel DynamoDB.

```
"Resource": [
    "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/books_table",
    "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/magazines_table"
]
```

## Menggunakan variabel kebijakan dalam sumber daya ARNs
<a name="reference_policies_elements_resource_policy-variables"></a>

Di elemen `Resource`, Anda dapat menggunakan [variabel kebijakan](reference_policies_variables.md) JSON pada bagian ARN yang mengidentifikasi sumber daya spesifik (yaitu, dalam bagian jejak ARN). Misalnya, Anda dapat menggunakan tombol `{aws:username}` sebagai bagian dari ARN sumber daya untuk menunjukkan bahwa nama pengguna saat ini harus disertakan sebagai bagian dari nama sumber daya. Contoh berikut menunjukkan bagaimana Anda dapat menggunakan tombol `{aws:username}` di elemen `Resource`. Kebijakan ini mengizinkan akses ke tabel Amazon DynamoDB yang cocok dengan nama pengguna saat ini.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "dynamodb:*",
        "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/${aws:username}"
    }
}
```

------

Untuk informasi selengkapnya tentang variabel kebijakan JSON, lihat [Elemen kebijakan IAM: Variabel dan tag](reference_policies_variables.md).

# Elemen kebijakan IAM JSON: NotResource
<a name="reference_policies_elements_notresource"></a>

`NotResource` adalah elemen kebijakan tingkat lanjut yang secara eksplisit cocok dengan setiap sumber daya kecuali yang ditentukan. Menggunakan `NotResource` dapat menghasilkan kebijakan yang lebih pendek dengan mencantumkan hanya beberapa sumber yang seharusnya tidak sesuai, daripada menyertakan daftar panjang sumber daya yang sesuai. Ini khususnya berguna untuk kebijakan yang menerapkan satu layanan AWS . 

Misalnya, bayangkan Anda memiliki grup bernama `HRPayroll`. Anggota tidak `HRPayroll` boleh mengakses sumber daya Amazon S3 apa pun kecuali `Payroll` folder di `HRBucket` bucket. Kebijakan berikut secara jelas menolak akses ke semua sumber daya Amazon S3 selain sumber daya yang tercantum. Namun demikian, harap diperhatikan bahwa kebijakan ini tidak memberikan akses ke sumber daya apa pun kepada pengguna.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "s3:*",
    "NotResource": [
      "arn:aws:s3:::HRBucket/Payroll",
      "arn:aws:s3:::HRBucket/Payroll/*"
    ]
  }
}
```

------

Biasanya, untuk secara eksplisit menolak akses ke sumber daya yang akan Anda tuliskan kebijakan yang menggunakan `"Effect":"Deny"` dan yang menyertakan elemen `Resource` yang mencantumkan setiap folder secara terpisah. Namun, dalam hal ini, setiap kali Anda menambahkan folder ke`HRBucket`, atau menambahkan sumber daya ke Amazon S3 yang tidak boleh diakses, Anda harus menambahkan namanya ke daftar di `Resource` elemen. Jika Anda menggunakan elemen `NotResource` sebagai gantinya, akses pengguna secara otomatis ditolak ke folder baru kecuali Anda menambahkan nama folder untuk elemen `NotResource`. 

Saat menggunakan `NotResource`, Anda harus ingat bahwa sumber daya yang ditentukan dalam elemen ini *hanya* tindakan yang terbatas. Hal ini, pada gilirannya, membatasi semua sumber daya yang akan berlaku untuk tindakan tersebut. Dalam contoh di atas, kebijakan hanya memengaruhi tindakan Amazon S3 dan karena itu hanya sumber daya Amazon S3. Jika `Action` elemen tersebut juga menyertakan tindakan Amazon EC2, kebijakan tersebut akan menolak akses ke sumber daya EC2 yang tidak ditentukan dalam elemen tersebut. `NotResource` Untuk mempelajari tindakan dalam layanan yang memungkinkan menentukan ARN sumber daya, [lihat Tindakan, Sumber Daya, dan Kunci AWS Kondisi](reference_policies_actions-resources-contextkeys.html) untuk Layanan.

## NotResource dengan elemen lain
<a name="notresource-element-combinations"></a>

Jangan **pernah** menggunakan elemen `"Effect": "Allow"`, `"Action": "*"`, dan `"NotResource": "arn:aws:s3:::HRBucket"` secara bersama-sama. Pernyataan ini sangat berbahaya, karena memungkinkan semua tindakan masuk AWS pada semua sumber daya kecuali bucket `HRBucket` S3. Ini bahkan memungkinkan pengguna menambahkan kebijakan yang memungkinkan mereka mengakses `HRBucket`. Jangan lakukan ini. 

Hati-hati saat menggunakan elemen `NotResource` dan `"Effect": "Allow"` dalam pernyataan yang sama atau dalam pernyataan yang berbeda dalam kebijakan. `NotResource` memungkinkan semua layanan dan sumber daya yang tidak tercantum secara eksplist, dan dapat mengakibatkan pemberian izin kepada pengguna lebih dari yang Anda inginkan. Menggunakan elemen `NotResource` dan `"Effect": "Deny"` dalam pernyataan yang sama menolak layanan dan sumber daya yang secara tidak eksplisit tercantum.

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

# Elemen kebijakan IAM: Variabel dan tag
<a name="reference_policies_variables"></a>

Gunakan variabel kebijakan AWS Identity and Access Management (IAM) sebagai placeholder ketika Anda tidak mengetahui nilai pasti dari sumber daya atau kunci kondisi saat Anda menulis kebijakan.

**catatan**  
Jika AWS tidak dapat menyelesaikan variabel, ini dapat menyebabkan seluruh pernyataan menjadi tidak valid. Misalnya, jika Anda menggunakan variabel `aws:TokenIssueTime`, variabel tersebut hanya menghasilkan nilai saat pemohon diautentikasi menggunakan kredensial sementara (peran IAM). [Untuk mencegah variabel menyebabkan pernyataan tidak valid, gunakan... IfExists operator kondisi.](reference_policies_elements_condition_operators.md#Conditions_IfExists)

**Topics**
+ [Pengantar](#policy-vars-intro)
+ [Menggunakan variabel dalam kebijakan](#policy-vars-using-variables)
+ [Tanda sebagai variabel kebijakan](#policy-vars-tags)
+ [Tempat Anda dapat menggunakan variabel kebijakan](#policy-vars-wheretouse)
+ [Variabel kebijakan tanpa nilai](#policy-vars-no-value)
+ [Meminta informasi yang dapat Anda gunakan untuk variabel kebijakan](#policy-vars-infotouse)
+ [Menentukan nilai default](#policy-vars-default-values)
+ [Untuk informasi selengkapnya](#policy-vars-formoreinfo)

## Pengantar
<a name="policy-vars-intro"></a>

Dalam kebijakan IAM, banyak tindakan memungkinkan Anda untuk memberikan nama untuk sumber daya spesifik yang Anda ingin kontrol aksesnya. Misalnya, kebijakan berikut memungkinkan pengguna untuk membuat daftar, membaca, dan menulis objek di bucket S3 `amzn-s3-demo-bucket` untuk `marketing` proyek.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
      "Condition": {"StringLike": {"s3:prefix": ["marketing/*"]}}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/marketing/*"]
    }
  ]
}
```

------

Dalam beberapa kasus, Anda mungkin tidak mengetahui nama pasti sumber daya saat Anda menyusun kebijakan. Anda mungkin ingin melakukan generalisasi kebijakan sehingga dapat digunakan oleh banyak pengguna tanpa harus membuat salinan unik dari kebijakan tersebut untuk setiap pengguna. Alih-alih membuat kebijakan terpisah untuk setiap pengguna, kami sarankan Anda membuat kebijakan grup tunggal yang berfungsi untuk setiap pengguna dalam grup tersebut. 

## Menggunakan variabel dalam kebijakan
<a name="policy-vars-using-variables"></a>

Anda dapat menentukan nilai dinamis di dalam kebijakan dengan menggunakan *variabel kebijakan* yang menetapkan placeholder dalam kebijakan.

Variabel ditandai menggunakan **`$`**awalan diikuti oleh sepasang kurawal kurawal (**`{ }`**) yang menyertakan nama variabel nilai dari permintaan.

Ketika kebijakan dievaluasi, variabel kebijakan diganti dengan nilai yang berasal dari kunci konteks bersyarat yang diteruskan dalam permintaan. [Variabel dapat digunakan dalam [kebijakan berbasis identitas, kebijakan sumber daya, kebijakan kontrol layanan, kebijakan sesi, dan kebijakan titik akhir](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) VPC.](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) Kebijakan berbasis identitas yang digunakan sebagai batas izin juga mendukung variabel kebijakan. 

Kunci konteks kondisi global dapat digunakan sebagai variabel dalam permintaan di seluruh AWS layanan. Kunci kondisi khusus layanan juga dapat digunakan sebagai variabel saat berinteraksi dengan AWS sumber daya, tetapi hanya tersedia ketika permintaan dibuat terhadap sumber daya yang mendukungnya. Untuk daftar kunci konteks yang tersedia untuk setiap AWS layanan dan sumber daya, lihat [https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html](https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html). Dalam keadaan tertentu, Anda tidak dapat mengisi kunci konteks kondisi global dengan nilai. Untuk mempelajari selengkapnya tentang setiap kunci, lihat [kunci konteks kondisi AWS global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html).

**penting**  
Nama utama peka dengan huruf besar dan kecil. Misalnya, `aws:CurrentTime` setara dengan `AWS:currenttime`.
Anda dapat menggunakan kunci kondisi bernilai tunggal apa pun sebagai variabel. Anda tidak dapat menggunakan kunci kondisi multivalued sebagai variabel.

Contoh berikut menunjukkan kebijakan untuk peran IAM atau pengguna yang menggantikan nama sumber daya tertentu dengan variabel kebijakan. Anda dapat menggunakan kembali kebijakan ini dengan memanfaatkan kunci `aws:PrincipalTag` kondisi. Jika kebijakan ini dievaluasi, hanya `${aws:PrincipalTag/team}` mengizinkan tindakan jika nama bucket diakhiri dengan nama tim dari tag `team` utama.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
      "Condition": {"StringLike": {"s3:prefix": ["${aws:PrincipalTag/team}/*"]}}
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],      
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/team}/*"]
    }
  ]
}
```

------

Variabel ditandai menggunakan prefiks `$` yang diikuti dengan sepasang rangka yang melengkung (`{ }`). Di dalam `${ }` karakter, Anda dapat menyertakan nama nilai dari permintaan yang ingin Anda gunakan dalam kebijakan. Nilai-nilai yang dapat Anda gunakan akan dibahas nanti di halaman ini.

Untuk detail tentang kunci kondisi global ini, lihat [aws:PrincipalTag/*tag-key*](reference_policies_condition-keys.md#condition-keys-principaltag) di daftar kunci kondisi global.

**catatan**  
Untuk menggunakan variabel kebijakan, Anda harus menyertakan elemen `Version` dalam pernyataan, dan versinya harus diatur ke versi yang mendukung variabel kebijakan. Variabel diperkenalkan dalam versi `2012-10-17`. Versi sebelumnya dari bahasa kebijakan tidak mendukung variabel kebijakan. Jika Anda tidak menyertakan elemen `Version` dan mengaturnya ke tanggal versi yang sesuai, variabel seperti `${aws:username}` diperlakukan sebagai string literal dalam kebijakan ini.   
Elemen kebijakan `Version` berbeda dari versi kebijakan. Elemen kebijakan `Version` digunakan dalam kebijakan dan menentukan versi bahasa kebijakan. Sebaliknya, versi kebijakan dibuat saat Anda mengubah kebijakan yang dikelola pelanggan di IAM. Perubahan kebijakan tidak mengesampingkan kebijakan yang ada. Sebagai gantinya, IAM membuat versi baru dari kebijakan yang dikelola. Untuk mempelajari lebih lanjut tentang elemen kebijakan `Version`, lihat [Elemen kebijakan IAM JSON: Version](reference_policies_elements_version.md). Untuk mempelajari selengkapnya tentang versi kebijakan, lihat [Peningkatan versi IAM](access_policies_managed-versioning.md).

Kebijakan yang memungkinkan prinsipal untuk mendapatkan objek dari jalur /David dari bucket S3 terlihat seperti ini:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/David/*"
      ]
    }
  ]
}
```

------

Jika kebijakan ini dilampirkan ke pengguna`David`, pengguna tersebut mendapatkan objek dari bucket S3-nya sendiri, tetapi Anda harus membuat kebijakan terpisah untuk setiap pengguna yang menyertakan nama pengguna. Kemudian, Anda akan menerapkan setiap kebijakan kepada pengguna individu.

Dengan menggunakan variabel kebijakan, Anda dapat membuat kebijakan yang dapat digunakan kembali. Kebijakan berikut memungkinkan pengguna untuk mendapatkan objek dari bucket Amazon S3 jika nilai tag-key `aws:PrincipalTag` cocok dengan nilai tag-key yang diteruskan dalam permintaan`owner`. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Sid": "AllowUnlessOwnedBySomeoneElse",
    "Effect": "Allow",
    "Action": ["s3:GetObject"],    
    "Resource": ["*"],
    "Condition": {
        "StringEquals": {
          "s3:ExistingObjectTag/owner": "${aws:PrincipalTag/owner}"
        }
      }
    }
  ]
}
```

------

Bila Anda menggunakan variabel kebijakan sebagai pengganti pengguna seperti ini, Anda tidak harus memiliki kebijakan terpisah untuk setiap pengguna individu. Dalam contoh berikut, kebijakan dilampirkan pada peran IAM yang diasumsikan oleh Manajer Produk menggunakan kredensi keamanan sementara. Saat pengguna membuat permintaan untuk menambahkan objek Amazon S3, IAM mengganti nilai `dept` tag dari permintaan `${aws:PrincipalTag}` variabel saat ini dan mengevaluasi kebijakan. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowOnlyDeptS3Prefix",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/dept}/*"
            ]
        }
    ]
}
```

------

## Tanda sebagai variabel kebijakan
<a name="policy-vars-tags"></a>

Di beberapa AWS layanan, Anda dapat melampirkan atribut kustom Anda sendiri ke sumber daya yang dibuat oleh layanan tersebut. Misalnya, Anda dapat menerapkan tag ke bucket Amazon S3 atau ke pengguna IAM. Tanda ini adalah pasangan nilai kunci. Anda menentukan nama kunci tanda dan nilai yang terkait dengan nama kunci tersebut. Misalnya, Anda dapat membuat tanda dengan kunci **department** dan nilai **Human Resources**. Untuk informasi lebih lanjut tentang pemberian tag pada entitas IAM, lihat [Tag untuk AWS Identity and Access Management sumber daya](id_tags.md). Untuk informasi tentang penandaan sumber daya yang dibuat oleh layanan AWS lainnya, lihat dokumentasi untuk layanan tersebut. Untuk informasi tentang penggunaan Tag Editor, lihat [Bekerja dengan Tag Editor](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html) dalam *Panduan Pengguna Konsol Manajemen AWS *.

Anda dapat menandai sumber daya IAM untuk menyederhanakan menemukan, mengatur, dan melacak sumber daya IAM Anda. Anda juga dapat menandai identitas IAM untuk mengontrol akses ke sumber daya atau menandainya sendiri. Untuk mempelajari lebih lanjut tentang penggunaan tag untuk mengontrol akses, lihat [Mengontrol akses ke dan untuk pengguna dan peran IAM menggunakan tag](access_iam-tags.md). 

## Tempat Anda dapat menggunakan variabel kebijakan
<a name="policy-vars-wheretouse"></a>

 Anda dapat menggunakan variabel kebijakan di elemen `Resource` dan dalam perbandingan string dalam elemen `Condition`.

### Elemen sumber daya
<a name="policy-vars-resourceelement"></a>

Anda dapat menggunakan variabel kebijakan di elemen `Resource`, tetapi hanya di bagian sumber daya ARN. Bagian ARN ini muncul setelah tanda titik dua (:) yang kelima. Anda tidak dapat menggunakan variabel untuk mengganti bagian ARN sebelum tanda titik dua yang kelima, seperti layanan atau akun. Untuk informasi selengkapnya tentang format ARN, lihat [IAM ARNs](reference_identifiers.md#identifiers-arns).

Untuk mengganti bagian dari ARN dengan nilai tag, kelilingi awalan dan nama kunci dengan. `${ }` Misalnya, elemen Resource berikut hanya mengacu pada bucket yang diberi nama sama dengan nilai dalam tag departemen pengguna yang meminta.

`"Resource": ["arn:aws::s3:::amzn-s3-demo-bucket/${aws:PrincipalTag/department}"]`

Banyak AWS sumber daya ARNs yang digunakan yang berisi nama yang dibuat pengguna. Kebijakan IAM berikut memastikan bahwa hanya pengguna yang dituju dengan nilai tag access-project, access-application, dan access-environment yang cocok yang dapat memodifikasi sumber daya mereka. Selain itu, menggunakan [kecocokan wildcard \$1](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html), mereka dapat mengizinkan sufiks nama sumber daya khusus. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessBasedOnArnMatching",
      "Effect": "Allow",
      "Action": [
        "sns:CreateTopic",
        "sns:DeleteTopic"],      
      "Resource": ["arn:aws:sns:*:*:${aws:PrincipalTag/access-project}-${aws:PrincipalTag/access-application}-${aws:PrincipalTag/access-environment}-*"
      ]
    }
  ]
}
```

------

### Elemen kondisi
<a name="policy-vars-conditionelement"></a>

Anda dapat menggunakan variabel kebijakan untuk nilai `Condition` dalam setiap kondisi yang melibatkan operator string atau operator ARN. Operator string termasuk `StringEquals`, `StringLike`, dan `StringNotLike`. Operator ARN termasuk `ArnEquals` dan `ArnLike`. Anda tidak dapat menggunakan variabel kebijakan dengan operator lainnya, seperti operator `Numeric`, `Date`, `Boolean`, `Binary`, `IP Address`, atau `Null`. Untuk informasi selengkapnya tentang operator kondisi, lihat [Elemen kebijakan JSON IAM: Operator kondisi](reference_policies_elements_condition_operators.md).

Saat mereferensikan tanda di dalam ekspresi elemen `Condition`, gunakan prefiks dan nama kunci yang relevan sebagai kunci kondisi. Kemudian gunakan nilai yang ingin Anda uji di dalam nilai kondisi.

Misalnya, contoh kebijakan berikut memungkinkan akses penuh ke pengguna, tetapi hanya jika tag `costCenter` dilampirkan ke pengguna. Tanda harus memiliki nilai `12345` atau `67890`. Jika tanda tidak memiliki nilai, atau memiliki nilai lain, permintaan akan gagal.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
          "iam:*user*"
       ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "iam:ResourceTag/costCenter": [ "12345", "67890" ]
        }
      }
    }
  ]
}
```

------

## Variabel kebijakan tanpa nilai
<a name="policy-vars-no-value"></a>

Ketika variabel kebijakan mereferensikan kunci konteks kondisi yang tidak memiliki nilai atau tidak ada dalam konteks otorisasi untuk permintaan, nilainya secara efektif nol. Tidak ada nilai yang sama atau serupa. Kunci konteks kondisi mungkin tidak ada dalam konteks otorisasi ketika:
+ Anda menggunakan kunci konteks kondisi khusus layanan dalam permintaan ke sumber daya yang tidak mendukung kunci kondisi tersebut.
+ Tag pada prinsipal, sesi, sumber daya, atau permintaan IAM tidak ada.
+ Keadaan lain seperti yang tercantum untuk setiap konteks kondisi global masuk[AWS kunci konteks kondisi global](reference_policies_condition-keys.md).

Bila Anda menggunakan variabel tanpa nilai dalam elemen kondisi kebijakan IAM, [Elemen kebijakan JSON IAM: Operator kondisi](reference_policies_elements_condition_operators.md) suka `StringEquals` atau `StringLike` tidak cocok, dan pernyataan kebijakan tidak berlaku.

Operator kondisi terbalik `StringNotLike` menyukai `StringNotEquals` atau mencocokkan dengan nilai nol, karena nilai kunci kondisi yang mereka uji tidak sama dengan atau seperti nilai nol efektif.

Dalam contoh berikut, `aws:principaltag/Team` harus sama dengan `s3:ExistingObjectTag/Team` mengizinkan akses. Akses ditolak secara eksplisit ketika tidak `aws:principaltag/Team` disetel. Jika variabel yang tidak memiliki nilai dalam konteks otorisasi digunakan sebagai bagian dari `Resource` atau `NotResource` elemen kebijakan, sumber daya yang menyertakan variabel kebijakan tanpa nilai tidak akan cocok dengan sumber daya apa pun.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
   {
    "Effect": "Deny", 
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition": {
      "StringNotEquals": {
        "s3:ExistingObjectTag/Team": "${aws:PrincipalTag/Team}"
       }
      }
    }
  ]
}
```

------

## Meminta informasi yang dapat Anda gunakan untuk variabel kebijakan
<a name="policy-vars-infotouse"></a>

 Anda dapat menggunakan elemen `Condition` dari kebijakan JSON untuk membandingkan kunci dalam [konteks permintaan](reference_policies_evaluation-logic_policy-eval-reqcontext.md) dengan nilai kunci yang Anda tentukan dalam kebijakan Anda. Bila Anda menggunakan variabel kebijakan, AWS ganti nilai dari kunci konteks permintaan sebagai pengganti variabel dalam kebijakan Anda.

### Nilai-nilai kunci utama
<a name="principaltable"></a>

Nilai untuk `aws:username`, `aws:userid`, dan `aws:PrincipalType` bergantung pada tipe prinsipal yang memulai permintaan. Misalnya, permintaan dapat dibuat menggunakan kredensil pengguna IAM, peran IAM, atau. Pengguna root akun AWSDaftar berikut menunjukkan nilai-nilai untuk kunci ini untuk berbagai tipe prinsipal. 


****  

| Prinsipal | `aws:username` | `aws:userid` | `aws:PrincipalType` | 
| --- | --- | --- | --- | 
| Pengguna root akun AWS | (tidak ada) | Akun AWS ID | Account | 
| Pengguna IAM | IAM-user-name | [ID unik](reference_identifiers.md#identifiers-unique-ids) | User | 
| AWS STS prinsipal pengguna federasi | (tidak ada) | account:caller-specified-name | FederatedUser | 
| Kepala sekolah federasi OIDC Untuk informasi tentang kunci kebijakan yang tersedia saat Anda menggunakan federasi identitas web, lihat [Kunci yang tersedia untuk AWS federasi OIDC](reference_policies_iam-condition-keys.md#condition-keys-wif).  | (tidak ada) |   *role-id*:*caller-specified-role-name*  di mana `role-id` adalah [id unik dari peran](reference_identifiers.md#identifiers-unique-ids) dan caller-specified-role-name ditentukan oleh [RoleSessionName parameter](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AssumeRole.html#API_AssumeRoleWithWebIdentity_RequestParameters) yang diteruskan ke AssumeRoleWithWebIdentity permintaan.  | AssumedRole | 
| Kepala sekolah federasi SAMP Untuk informasi tentang kunci kebijakan yang tersedia saat Anda menggunakan gabungan SAML, lihat [Mengidentifikasi pengguna secara unik dalam federasi berbasis SAML](id_roles_providers_saml.md#CreatingSAML-userid).  | (tidak ada) |  *role-id*:*caller-specified-role-name* di mana `role-id` adalah [id unik dari peran](reference_identifiers.md#identifiers-unique-ids) dan caller-specified-role-name ditentukan oleh elemen Atribut dengan [atribut Nama](id_roles_providers_create_saml_assertions.md) disetel ke https://aws.amazon.com/SAML/ atribut/RoleSessionName.  | AssumedRole | 
| Asumsi peran | (tidak ada) |  *role-id*:*caller-specified-role-name* di mana `role-id` adalah [id unik dari peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) dan caller-specified-role-name ditentukan oleh [RoleSessionName parameter](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#API_AssumeRole_RequestParameters) yang diteruskan ke AssumeRole permintaan.  | AssumedRole | 
| Peran ditetapkan ke instans Amazon EC2 | (tidak ada) |  *role-id*:*ec2-instance-id* dengan `role-id` adalah [id unik peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) dan id instans ec2 adalah [pengidentifikasi unik instans EC2](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html).  | AssumedRole | 
| Penelepon anonim (khusus Amazon SQS, Amazon SNS, dan Amazon S3) | (tidak ada) | anonymous | Anonymous | 

Untuk item dalam tabel, ini, ingat hal berikut:
+ *tidak ada* berarti bahwa nilai tersebut tidak tercantum dalam informasi permintaan saat ini, dan setiap upaya untuk mencocokannya gagal dan menyebabkan pernyataan tersebut menjadi tidak valid. 
+ *role-id*adalah pengidentifikasi unik yang ditugaskan untuk setiap peran saat pembuatan. Anda dapat menampilkan ID peran dengan AWS CLI perintah: `aws iam get-role --role-name rolename`
+ *caller-specified-name*dan *caller-specified-role-name* merupakan nama yang diteruskan oleh proses panggilan (seperti aplikasi atau layanan) ketika melakukan panggilan untuk mendapatkan kredensi sementara.
+ *ec2-instance-id*adalah nilai yang ditetapkan ke instance saat diluncurkan dan muncul di halaman **Instans** konsol Amazon EC2. Anda juga dapat menampilkan ID instance dengan menjalankan AWS CLI perintah: `aws ec2 describe-instances`

### Informasi tersedia dalam permintaan untuk kepala sekolah federasi
<a name="policy-vars-infoWIF"></a>

Prinsipal federasi adalah pengguna yang diautentikasi menggunakan sistem selain IAM. Misalnya, perusahaan mungkin memiliki aplikasi untuk digunakan di rumah yang melakukan panggilan ke AWS. Mungkin tidak praktis untuk memberikan identitas IAM kepada setiap pengguna perusahaan yang menggunakan aplikasi. Sebaliknya, perusahaan mungkin menggunakan aplikasi proksi (tingkat menengah) yang memiliki satu identitas IAM, atau perusahaan mungkin menggunakan penyedia identitas (IdP) SAML. Aplikasi proksi atau SAML IdP mengautentikasi pengguna individu yang menggunakan jaringan perusahaan. Aplikasi proksi kemudian dapat menggunakan identitas IAM-nya untuk mendapatkan kredensial keamanan sementara bagi pengguna individu. IDP SAMP pada dasarnya dapat bertukar informasi identitas AWS untuk kredensil keamanan sementara. Kredensi sementara kemudian dapat digunakan untuk mengakses AWS sumber daya. 

Demikian pula, Anda dapat membuat aplikasi untuk perangkat seluler dengan aplikasi yang perlu mengakses sumber daya AWS . Dalam hal ini, Anda dapat menggunakan *federasi OIDC*, di mana aplikasi mengautentikasi pengguna menggunakan penyedia identitas terkenal seperti Login with Amazon, Amazon Cognito, Facebook, atau Google. Kemudian aplikasi dapat menggunakan informasi autentikasi pengguna dari penyedia ini untuk mendapatkan kredensial keamanan sementara guna mengakses sumber daya AWS . 

Cara yang disarankan untuk menggunakan federasi OIDC adalah dengan memanfaatkan Amazon Cognito dan ponsel. AWS SDKs Untuk informasi selengkapnya, lihat berikut ini:
+ [Panduan Pengguna Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html) 
+ [Skenario umum untuk kredensial sementara](id_credentials_temp.md#sts-introduction)

### Karakter khusus
<a name="policy-vars-specialchars"></a>

Ada beberapa variabel kebijakan khusus yang telah ditetapkan sebelumnya yang memiliki nilai tetap yang memungkinkan Anda mewakili karakter yang memiliki arti khusus. Jika karakter khusus ini adalah bagian dari string, Anda mencoba untuk mencocokkannya dan Anda memasukkannya secara literal sehingga mereka akan disalahartikan. Misalnya, menyisipkan tanda bintang \$1 dalam string akan ditafsirkan sebagai wildcard yang cocok dengan karakter apa pun, bukan sebagai tanda bintang \$1 yang sebenarnya. Dalam kasus ini, Anda dapat menggunakan variabel kebijakan yang telah ditentukan sebelumnya berikut ini:
+ **\$1\$1\$1\$1** - gunakan jika Anda memerlukan karakter \$1 (tanda bintang).
+ **\$1\$1?\$1** - gunakan jika Anda memerlukan katakter ? (tanda tanya).
+ **\$1\$1\$1\$1** - gunakan jika Anda memerlukan karakter \$1 (simbol dolar).

Variabel kebijakan yang sudah ditentukan sebelumnya ini dapat digunakan dalam string apa pun tempat Anda dapat menggunakan variabel kebijakan reguler.

## Menentukan nilai default
<a name="policy-vars-default-values"></a>

Untuk menambahkan nilai default ke variabel, sertai nilai default dengan tanda kutip tunggal (`' '`), dan pisahkan teks variabel serta nilai default dengan koma dan spasi (`, `).

Misalnya, jika prinsipal diberi tag`team=yellow`, mereka dapat mengakses bucket `ExampleCorp's` Amazon S3 bernama. `amzn-s3-demo-bucket-yellow` Kebijakan dengan sumber daya ini memungkinkan anggota tim untuk mengakses keranjang tim mereka, tetapi tidak dengan tim lain. Untuk pengguna tanpa tag tim, ini menetapkan nilai default `company-wide` untuk nama bucket. Pengguna ini hanya dapat mengakses `amzn-s3-demo-bucket-company-wide` bucket di mana mereka dapat melihat informasi yang luas, seperti instruksi untuk bergabung dengan tim.

```
"Resource":"arn:aws:s3:::amzn-s3-demo-bucket-${aws:PrincipalTag/team, 'company-wide'}"
```

## Untuk informasi selengkapnya
<a name="policy-vars-formoreinfo"></a>

Untuk informasi selengkapnya tentang kebijakan, lihat hal berikut: 
+  [Kebijakan dan izin di AWS Identity and Access Management](access_policies.md) 
+  [Contoh kebijakan berbasis identitas IAM](access_policies_examples.md) 
+  [Referensi elemen kebijakan IAM JSON](reference_policies_elements.md) 
+  [Logika evaluasi kebijakan](reference_policies_evaluation-logic.md) 
+  [Federasi OIDC](id_roles_providers_oidc.md)

# Elemen kebijakan IAM JSON: Tipe data yang didukung
<a name="reference_policies_elements_datatypes"></a>

Bagian ini mencantumkan tipe data yang didukung ketika Anda menentukan nilai dalam kebijakan JSON. Bahasa kebijakan tidak mendukung semua tipe untuk setiap elemen kebijakan; untuk informasi tentang setiap elemen, lihat bagian sebelumnya.
+ String
+ Bilangan (Bulat dan Desimal)
+ Boolean
+ Nol
+ Daftar
+ Peta
+ Struktur (yang hanya berupa Peta bersarang)

Tabel berikut memetakan setiap tipe data ke serialisasi. Perhatikan bahwa semua kebijakan harus dalam UTF-8. Untuk informasi tentang tipe data JSON, kunjungi [RFC 4627](https://datatracker.ietf.org/doc/html/rfc4627).


****  

| Tipe | JSON | 
| --- | --- | 
|  String  |  String  | 
|  Bulat  |  Bilangan  | 
|  Desimal  |  Bilangan  | 
|  Boolean  |  salah benar  | 
|  Nol  |  nol  | 
|  Tanggal  |  String sesuai dengan [Profil W3C ISO 8601](http://www.w3.org/TR/NOTE-datetime)  | 
|  IpAddress  |  String sesuai dengan [RFC 4632](https://datatracker.ietf.org/doc/html/rfc4632)  | 
|  Daftar  |  Susunan  | 
|  Objek  |  Objek  | 