

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

# Memecahkan masalah kebijakan IAM
<a name="troubleshoot_policies"></a>

[Kebijakan](access_policies.md) adalah entitas AWS yang, ketika dilampirkan pada identitas atau sumber daya, menentukan izinnya. AWS mengevaluasi kebijakan ini ketika prinsipal, seperti pengguna, membuat permintaan. Izin dalam kebijakan menentukan apakah permintaan diizinkan atau ditolak. *Kebijakan disimpan dalam dokumen JSON yang dilampirkan pada prinsipal AWS sebagai kebijakan berbasis *identitas atau sumber daya sebagai kebijakan berbasis sumber daya*.* Anda dapat melampirkan kebijakan berbasis identitas pada penanggung jawab (atau identitas) seperti grup IAM, pengguna, atau peran. Kebijakan berbasis identitas dapat mencakup kebijakan terkelola AWS , kebijakan terkelola pelanggan, dan kebijakan inline. Anda dapat membuat dan mengedit kebijakan yang dikelola pelanggan dalam Konsol Manajemen AWS menggunakan opsi editor **Visual** dan **JSON**. Saat Anda melihat kebijakan di Konsol Manajemen AWS, Anda dapat melihat ringkasan izin yang diberikan oleh kebijakan tersebut. Anda dapat menggunakan editor visual dan ringkasan kebijakan untuk membantu Anda mendiagnosis dan memperbaiki kesalahan umum yang ditemukan saat mengelola kebijakan IAM.

Harap diingat bahwa semua kebijakan IAM disimpan menggunakan sintaksis yang dimulai dengan aturan [JavaScript Object Notation](http://www.json.org) (JSON). Anda tidak perlu memahami sintaksis ini untuk membuat atau mengelola kebijakan Anda. Anda dapat membuat dan mengedit kebijakan menggunakan editor visual di Konsol Manajemen AWS. Untuk mempelajari lebih lanjut tentang sintaksis JSON di kebijakan IAM, lihat [Tata bahasa kebijakan IAM JSON](reference_policies_grammar.md).

**Pemecahan Masalah Topik Kebijakan IAM**
+ [Atasi masalah menggunakan editor visual](#troubleshoot_policies-viseditor)
  + [Restrukturisasi kebijakan](#troubleshoot_viseditor-restructure)
  + [Memilih ARN sumber daya di editor visual](#troubleshoot_policies-resource-arn)
  + [Menolak izin di editor visual](#troubleshoot_policies-switch-deny)
  + [Menentukan beberapa layanan di editor visual](#troubleshoot_policies-multiple-services)
  + [Mengurangi ukuran kebijakan Anda di editor visual](#troubleshoot_policy-size)
  + [Perbaikan layanan, tindakan, atau tipe sumber daya yang tidak dikenal di editor visual](#troubleshoot_policies-unrecognized-visual)
+ [Memecahkan masalah dengan ringkasan kebijakan](#troubleshoot_policies-polsum)
  + [Ringkasan kebijakan hilang](#missing-policy-summary)
  + [Ringkasan kebijakan mencakup layanan, tindakan, atau tipe sumber daya yang tidak dikenal](#unrecognized-services-actions)
  + [Layanan tidak mendukung ringkasan kebijakan IAM](#unsupported-services-actions)
  + [Kebijakan saya tidak memberikan izin yang diharapkan](#policy-summary-not-grant-permissions)
+ [Pemecahan masalah manajemen kebijakan](#troubleshoot_policies-policy-manage)
  + [Melampirkan atau melepaskan kebijakan di akun IAM](#troubleshoot_roles_cant-attach-detach-policy)
  + [Mengubah kebijakan untuk identitas IAM Anda berdasarkan aktivitas](#troubleshoot_change-policies-based-on-activity)
+ [Memecahkan masalah pada dokumen kebijakan JSON](#troubleshoot_policies-json)
  + [Memvalidasi kebijakan Anda](#usepolicyvalidation)
  + [Saya tidak memiliki izin untuk validasi kebijakan di editor JSON](#nopermsforpolicyvalidation)
  + [Lebih dari satu objek kebijakan JSON](#morethanonepolicyblock)
  + [Lebih dari satu elemen pernyataan JSON](#morethanonestatement)
  + [Lebih dari satu efek, tindakan, atau elemen sumber daya dalam elemen pernyataan JSON](#duplicateelement)
  + [Elemen versi JSON hilang](#missing-version)

## Atasi masalah menggunakan editor visual
<a name="troubleshoot_policies-viseditor"></a>

Saat membuat atau mengedit kebijakan yang dikelola pelanggan, Anda dapat menggunakan informasi di editor **Visual** untuk membantu memecahkan masalah kesalahan dalam kebijakan Anda. Untuk melihat contoh penggunaan editor visual untuk membuat kebijakan, lihat [Mengontrol akses ke identitas](access_controlling.md#access_controlling-identities).

### Restrukturisasi kebijakan
<a name="troubleshoot_viseditor-restructure"></a>

Saat Anda membuat kebijakan, AWS memvalidasi, memproses, dan mengubah kebijakan sebelum menyimpannya. Saat kebijakan diambil, AWS ubah kembali ke format yang dapat dibaca manusia tanpa mengubah izin. Hal ini dapat menyebabkan perbedaan dalam apa yang Anda lihat di editor visual kebijakan atau tab **JSON**.
+ Blok izin editor visual dapat ditambahkan, dihapus, atau disusun ulang, dan konten di dalam blok dapat dioptimalkan.
+ Di tab **JSON**, ruang kosong yang tidak signifikan dapat dihapus, dan elemen di dalam peta JSON dapat disusun ulang. Selain itu, Akun AWS IDs dalam elemen utama dapat diganti dengan Nama Sumber Daya Amazon (ARN) dari. Pengguna root akun AWS

Karena kemungkinan perubahan ini, Anda tidak boleh membandingkan dokumen kebijakan JSON sebagai string.

Saat Anda membuat kebijakan yang dikelola pelanggan di Konsol Manajemen AWS, Anda dapat memilih untuk bekerja sepenuhnya di editor **JSON**. Jika Anda tidak pernah mengubah kebijakan di editor **Visual** dan memilih **Berikutnya** dari editor **JSON**, kebijakan tersebut cenderung tidak direstrukturisasi. Saat Anda menggunakan editor **Visual**, IAM mungkin merestrukturisasi kebijakan untuk mengoptimalkan tampilannya. Restrukturisasi ini hanya ada pada sesi pengeditan Anda dan tidak disimpan secara otomatis.

Jika kebijakan Anda distrukturkan ulang di sesi pengeditan, IAM menentukan apakah akan menyimpan restrukturisasi berdasarkan situasi berikut:


| Menggunakan opsi editor ini | Jika Anda mengedit kebijakan | Dan kemudian pilih ***Berikutnya*** dari tab ini | Saat Anda memilih ***Simpan perubahan*** | 
| --- | --- | --- | --- | 
| Visual | Diedit | Visual | Kebijakan distruktur ulang | 
| Visual | Diedit | JSON | Kebijakan distruktur ulang | 
| Visual | Tidak diedit | Visual | Kebijakan distruktur ulang | 
| JSON | Diedit | Visual | Kebijakan distruktur ulang | 
| JSON | Diedit | JSON | Struktur kebijakan tidak diubah | 
| JSON | Tidak Diedit | JSON | Struktur kebijakan tidak diubah | 

IAM mungkin merestrukturisasi kebijakan atau kebijakan rumit yang memiliki blok izin atau pernyataan yang memungkinkan beberapa layanan, jenis sumber daya, atau kunci kondisi.

### Memilih ARN sumber daya di editor visual
<a name="troubleshoot_policies-resource-arn"></a>

Saat Anda membuat atau mengedit kebijakan menggunakan editor visual, Anda harus memilih layanan terlebih dahulu, kemudian memilih tindakan dari layanan tersebut. Jika layanan dan tindakan yang Anda pilih mendukung pemilihan [sumber daya tertentu](access_controlling.md#access_controlling-resources), editor visual mencantumkan tipe sumber daya yang didukung. Anda kemudian dapat memilih **Tambahkan ARN** untuk memberikan detail tentang sumber daya Anda. Anda dapat memilih dari opsi berikut untuk menambahkan ARN untuk tipe sumber daya.
+ **Gunakan pembuat ARN** — Anda mungkin melihat bidang yang berbeda untuk membangun ARN Anda berdasarkan jenis sumber daya. Anda juga dapat memilih **Apa pun** untuk memberikan izin bagi nilai apa pun untuk pengaturan yang ditentukan. Misalnya, jika Anda memilih grup tingkat akses **Baca** Amazon EC2, maka tindakan di kebijakan Anda mendukung jenis sumber daya `instance`. Berikan **Wilayah**, **Akun**, dan **InstanceId**nilai untuk sumber daya Anda. Kebijakan ini memberikan izin ke instans apa pun di akun Anda jika Anda memberikan ID akun dan memilih **Any** for the Region dan ID instans.
+ **Ketik atau tempel ARN** – Anda dapat menentukan sumber daya berdasarkan [Amazon Resource Name (ARN)](reference_identifiers.md#identifiers-arns). Anda dapat memasukkan karakter wildcard (**\$1**) di bidang ARN mana pun (di antara setiap pasangan titik dua). Untuk informasi selengkapnya, lihat [Elemen kebijakan IAM JSON: Resource](reference_policies_elements_resource.md).

### Menolak izin di editor visual
<a name="troubleshoot_policies-switch-deny"></a>

Secara default, kebijakan yang Anda buat menggunakan editor visual memungkinkan tindakan yang Anda pilih. Untuk menolak tindakan yang dipilih, pilih **Beralih ke menolak izin**. Karena permintaan *ditolak secara default*, sebaiknya Anda mengizinkan izin hanya untuk tindakan dan sumber daya yang dibutuhkan pengguna. Anda harus membuat pernyataan penolakan hanya jika Anda ingin mengganti izin secara terpisah yang diizinkan oleh pernyataan atau kebijakan lain. Kami menyarankan agar Anda membatasi jumlah penolakan izin seminimal mungkin karena dapat meningkatkan kesulitan dalam memecahkan masalah izin. Untuk informasi lebih lanjut tentang cara IAM mengevaluasi logika kebijakan, lihat [Logika evaluasi kebijakan](reference_policies_evaluation-logic.md).

**catatan**  
Secara default, hanya yang Pengguna root akun AWS memiliki akses ke semua sumber daya di akun itu. Jadi, jika Anda belum masuk sebagai pengguna utama, Anda harus memiliki izin yang diberikan oleh kebijakan.

### Menentukan beberapa layanan di editor visual
<a name="troubleshoot_policies-multiple-services"></a>

Saat Anda menggunakan editor visual untuk membuat kebijakan, Anda hanya dapat memilih satu layanan pada satu waktu. Ini adalah praktik terbaik karena editor visual kemudian mengizinkankan Anda memilih dari tindakan untuk satu layanan tersebut. Kemudian Anda memilih dari sumber daya yang didukung oleh layanan tersebut dan tindakan yang dipilih. Ini mempermudah pembuatan dan pemecahan masalah kebijakan Anda. 

Anda juga dapat menggunakan karakter wildcard (\$1) untuk menentukan beberapa layanan secara manual. Sebagai contoh, ketik **Code\$1** untuk memberikan izin untuk semua layanan yang dimulai dengan `Code`, seperti `CodeBuild` dan `CodeCommit`. Namun, Anda kemudian harus mengetik tindakan dan sumber daya ARNs untuk menyelesaikan kebijakan Anda. Sebagai tambahan, saat Anda menyimpan kebijakan Anda, kebijakan itu mungkin [distruktur ulang](#troubleshoot_viseditor-restructure) untuk menyertakan setiap layanan di blok izin terpisah.

Atau, untuk menggunakan sintaks JSON (seperti wildcard) untuk layanan, buat, edit, dan simpan kebijakan Anda menggunakan opsi editor **JSON**.

### Mengurangi ukuran kebijakan Anda di editor visual
<a name="troubleshoot_policy-size"></a>

Saat Anda menggunakan editor visual untuk membuat kebijakan, IAM membuat dokumen JSON untuk menyimpan kebijakan Anda. Anda dapat melihat dokumen ini dengan beralih ke opsi editor **JSON**. Jika dokumen JSON ini melebihi batas ukuran kebijakan, editor visual akan menampilkan pesan kesalahan. Anda tidak akan dapat meninjau dan menyimpan kebijakan. Untuk melihat batasan IAM mengenai ukuran kebijakan yang dikelola, lihat [Batas karakter IAM dan STS](reference_iam-quotas.md#reference_iam-quotas-entity-length). 

Untuk mengurangi ukuran kebijakan Anda di editor visual, edit kebijakan Anda atau pindahkan blok izin ke kebijakan lain. Pesan galat menyertakan jumlah karakter yang berisi dokumen kebijakan Anda. Anda dapat menggunakan informasi ini untuk membantu Anda mengurangi ukuran kebijakan Anda.

### Perbaikan layanan, tindakan, atau tipe sumber daya yang tidak dikenal di editor visual
<a name="troubleshoot_policies-unrecognized-visual"></a>

Anda mungkin melihat peringatan di editor visual bahwa kebijakan Anda menyertakan jenis layanan, tindakan, atau sumber daya yang tidak dikenal.

**catatan**  
IAM meninjau nama layanan, tindakan, dan jenis sumber daya untuk layanan yang mendukung ringkasan kebijakan. Akan tetapi, ringkasan kebijakan Anda mungkin mencakup nilai sumber daya atau kondisi yang tidak ada. Selalu uji kebijakan Anda dengan [simulator kebijakan](access_policies_testing-policies.md).

Jika kebijakan Anda mencakup layanan, tindakan, atau jenis sumber daya yang tidak dikenal, salah satu kesalahan berikut telah terjadi:
+ **Layanan pratinjau** – Layanan yang ada di pratinjau tidak mendukung editor visual. Jika Anda berpartisipasi dalam pratinjau, Anda harus mengetik tindakan dan sumber daya secara manual ARNs untuk menyelesaikan kebijakan Anda. Anda dapat mengabaikan peringatan apa pun dan melanjutkan. Atau, Anda dapat memilih opsi editor **JSON** untuk mengetik atau menempelkan dokumen kebijakan JSON.
+ **Layanan khusus** – Layanan khusus tidak mendukung editor visual. Jika Anda menggunakan layanan kustom, Anda harus mengetik tindakan dan sumber daya secara manual ARNs untuk menyelesaikan kebijakan Anda. Anda dapat mengabaikan peringatan apa pun dan melanjutkan. Atau, Anda dapat memilih opsi editor **JSON** untuk mengetik atau menempelkan dokumen kebijakan JSON.
+ **Layanan tidak mendukung editor visual** — Jika kebijakan Anda menyertakan layanan yang tersedia secara umum (GA) yang tidak mendukung editor visual, Anda harus mengetik tindakan dan sumber daya secara manual ARNs untuk menyelesaikan kebijakan Anda. Anda dapat mengabaikan peringatan apa pun dan melanjutkan. Atau, Anda dapat memilih opsi editor **JSON** untuk mengetik atau menempelkan dokumen kebijakan JSON. 

  Layanan yang tersedia secara umum adalah layanan yang dirilis secara publik dan bukan pratinjau atau layanan khusus. Jika layanan yang tidak dikenal tersedia secara umum dan nama dieja dengan benar, maka layanan tersebut tidak mendukung editor visual. Untuk mempelajari cara meminta dukungan editor visual atau ringkasan kebijakan untuk layanan GA, lihat [Layanan tidak mendukung ringkasan kebijakan IAM](#unsupported-services-actions).
+ **Tindakan tidak mendukung editor visual** — Jika kebijakan Anda menyertakan layanan yang didukung dengan tindakan yang tidak didukung, Anda harus mengetik tindakan dan sumber daya secara manual ARNs untuk menyelesaikan kebijakan Anda. Anda dapat mengabaikan peringatan apa pun dan melanjutkan. Atau, Anda dapat memilih opsi editor **JSON** untuk mengetik atau menempelkan dokumen kebijakan JSON.

  Jika kebijakan Anda menyertakan layanan yang didukung dengan tindakan yang tidak didukung, maka layanan tersebut tidak sepenuhnya mendukung editor visual. Untuk mempelajari cara meminta dukungan editor visual atau ringkasan kebijakan untuk layanan GA, lihat [Layanan tidak mendukung ringkasan kebijakan IAM](#unsupported-services-actions).
+ **Jenis sumber daya tidak mendukung editor visual** – Jika kebijakan Anda mencakup tindakan yang didukung dengan jenis sumber daya yang tidak didukung, Anda dapat mengabaikan peringatan dan melanjutkan. Namun, IAM tidak dapat mengonfirmasi bahwa Anda telah menyertakan sumber daya untuk semua tindakan yang Anda pilih, dan Anda mungkin melihat peringatan tambahan.
+ **Salah ketik** – Saat Anda mengetikkan layanan, tindakan, atau sumber daya secara manual dalam editor visual, Anda dapat membuat kebijakan yang mencakup kesalahan ketik. Kami menyarankan Anda menggunakan editor visual dengan memilih dari daftar layanan dan tindakan. Kemudian, lengkapi bagian sumber daya sesuai dengan petunjuknya. Jika layanan tidak sepenuhnya mendukung editor visual, Anda mungkin harus mengetik bagian kebijakan secara manual. 

  Jika Anda yakin bahwa kebijakan Anda tidak berisi satu pun kesalahan di atas, maka kebijakan Anda mungkin mengandung kesalahan ketik. Periksa masalah berikut:
  + Nama layanan, tindakan, dan jenis sumber daya yang salah eja, seperti `s2` alih-alih `s3` atau `ListMyBuckets` bukan `ListAllMyBuckets`
  + Teks yang tidak perlu ARNs, seperti `arn:aws:s3: : :*`
  + Hilang titik dua dalam tindakan, seperti `iam.CreateUser`

  Anda dapat mengevaluasi kebijakan yang mungkin menyertakan kesalahan ketik dengan memilih **Berikutnya** untuk meninjau ringkasan kebijakan. Kemudian, konfirmasikan apakah kebijakan tersebut memberikan izin yang Anda inginkan.

## Memecahkan masalah dengan ringkasan kebijakan
<a name="troubleshoot_policies-polsum"></a>

Anda dapat mendiagnosis dan menyelesaikan masalah terkait rangkuman kebijakan.

### Ringkasan kebijakan hilang
<a name="missing-policy-summary"></a>

Konsol IAM mencakup tabel *ringkasan kebijakan* yang menjelaskan tingkat akses, sumber daya, dan kondisi yang diperbolehkan atau ditolak untuk setiap layanan dalam kebijakan. Kebijakan dirangkum dalam tiga tabel: [ringkasan kebijakan](access_policies_understand-policy-summary.md), [ringkasan layanan](access_policies_understand-service-summary.md), dan [ringkasan tindakan](access_policies_understand-action-summary.md). Tabel *ringkasan kebijakan* mencakup daftar layanan dan ringkasan izin yang ditentukan oleh kebijakan yang dipilih. Anda dapat melihat [ringkasan kebijakan](access_policies_understand.md) untuk setiap kebijakan yang dilampirkan ke entitas di halaman **Detail Kebijakan** untuk kebijakan tersebut. Anda dapat melihat ringkasan kebijakan untuk kebijakan yang dikelola pada halaman **Kebijakan**. Jika AWS tidak dapat merender ringkasan untuk kebijakan, Anda akan melihat dokumen kebijakan JSON dan kesalahan berikut:

**Ringkasan untuk kebijakan ini tidak dapat dibuat. Anda masih dapat melihat atau mengedit dokumen kebijakan JSON.**

Jika kebijakan Anda tidak mencakup ringkasan, salah satu kesalahan berikut telah terjadi:
+ **Elemen kebijakan yang tidak didukung** – IAM tidak mendukung pembuatan ringkasan kebijakan untuk kebijakan yang mencakup salah satu dari [elemen kebijakan](reference_policies_elements.md) berikut ini:
  + `Principal`
  + `NotPrincipal`
  + `NotResource`
+ **Tidak ada izin kebijakan** – Jika kebijakan tidak menyediakan izin yang efektif, maka ringkasan kebijakan tidak dapat dibuat. Misalnya, jika kebijakan mencakup satu pernyataan dengan elemen `"NotAction": "*"`, maka akses ke semua tindakan akan diberikan kecuali “semua tindakan” (\$1). Ini berarti tidak ada akses `Deny` atau `Allow` yang diberikan.
**catatan**  
Hati-hati saat menggunakan elemen kebijakan ini seperti`NotPrincipal`,`NotAction`, dan`NotResource`. Untuk informasi selengkapnya tentang elemen-elemen kebijakan, lihat [Referensi elemen kebijakan IAM JSON](reference_policies_elements.md).

  Jika Anda menyediakan layanan dan sumber daya yang tidak cocok, Anda dapat membuat kebijakan yang tidak memberikan izin yang efektif. Ini dapat terjadi ketika Anda menentukan tindakan dalam satu layanan dan sumber daya dari layanan lain. Dalam hal ini, ringkasan kebijakan muncul. Satu-satunya indikasi bahwa terdapat masalah adalah kolom sumber daya di ringkasan dapat mencakup sumber daya dari layanan yang berbeda. Jika kolom ini memuat sumber daya yang tidak sesuai, maka Anda harus meninjau kebijakan Anda untuk kesalahan. Uji kebijakan Anda dengan [simulator kebijakan](access_policies_testing-policies.md) untuk lebih memahami kebijakan.

### Ringkasan kebijakan mencakup layanan, tindakan, atau tipe sumber daya yang tidak dikenal
<a name="unrecognized-services-actions"></a>

Di konsol IAM, jika [ringkasan kebijakan](access_policies_understand.md) menyertakan simbol peringatan (![\[Warning hazard sign icon with yellow triangle background.\]](http://docs.aws.amazon.com/id_id/IAM/latest/UserGuide/images/console-alert-icon.console.png)), kebijakan tersebut mungkin menyertakan jenis layanan, tindakan, atau sumber daya yang tidak dikenal. Untuk mempelajari tentang peringatan di dalam ringkasan kebijakan, lihat [Ringkasan kebijakan (daftar layanan)](access_policies_understand-policy-summary.md). 

**catatan**  
IAM meninjau nama layanan, tindakan, dan jenis sumber daya untuk layanan yang mendukung ringkasan kebijakan. Akan tetapi, ringkasan kebijakan Anda mungkin mencakup nilai sumber daya atau kondisi yang tidak ada. Selalu uji kebijakan Anda dengan [simulator kebijakan](access_policies_testing-policies.md).

Jika kebijakan Anda mencakup layanan, tindakan, atau jenis sumber daya yang tidak dikenal, salah satu kesalahan berikut telah terjadi:
+ **Layanan pratinjau** – Layanan yang ada di pratinjau tidak mendukung rangkuman kebijakan.
+ **Layanan khusus** – Layanan khusus tidak mendukung rangkuman kebijakan.
+ **Layanan tidak mendukung rangkuman** – Jika kebijakan Anda mencakup layanan yang tersedia secara umum (GA) yang tidak mendukung rangkuman kebijakan, maka layanan tersebut termasuk dalam bagian **Layanan yang tidak dikenal** di tabel ringkasan kebijakan. Layanan yang tersedia secara umum adalah layanan yang dirilis secara publik dan bukan pratinjau atau layanan khusus. Jika layanan yang tidak dikenal tersedia secara umum dan nama dieja dengan benar, maka layanan ini tidak mendukung ringkasan kebijakan IAM. Untuk mempelajari cara meminta dukungan ringkasan kebijakan untuk layanan GA, lihat [Layanan tidak mendukung ringkasan kebijakan IAM](#unsupported-services-actions).
+ **Tindakan tidak mendukung rangkuman** – Jika kebijakan Anda mencakup layanan yang didukung dengan tindakan yang tidak didukung, maka tindakan tersebut termasuk dalam bagian **Tindakan yang tidak dikenal** pada tabel ringkasan layanan. Untuk mempelajari tentang peringatan dalam rangkuman layanan, lihat [Ringkasan layanan (daftar tindakan)](access_policies_understand-service-summary.md).
+ **Jenis sumber daya tidak mendukung rangkuman** – Jika kebijakan Anda mencakup tindakan yang didukung dengan jenis sumber daya yang tidak didukung, maka sumber daya tersebut disertakan dalam bagian **Jenis sumber daya yang tidak dikenal** pada tabel ringkasan layanan. Untuk mempelajari tentang peringatan di dalam rangkuman layanan, lihat [Ringkasan layanan (daftar tindakan)](access_policies_understand-service-summary.md).
+ **Typo** [— AWS memeriksa bahwa JSON benar secara sintaksis, dan kebijakan tersebut tidak menyertakan kesalahan ketik atau kesalahan lain sebagai bagian dari validasi kebijakan.](access_policies_policy-validator.md)

**catatan**  
Sebagai [praktik terbaik](best-practices.md), kami menyarankan Anda menggunakan IAM Access Analyzer untuk memvalidasi kebijakan IAM Anda guna memastikan izin yang aman dan fungsional. Kami menyarankan Anda membuka kebijakan yang ada dan meninjau serta menyelesaikan rekomendasi validasi kebijakan apa pun.

### Layanan tidak mendukung ringkasan kebijakan IAM
<a name="unsupported-services-actions"></a>

Dimungkinkan untuk ringkasan kebijakan IAM atau editor visual untuk tidak mendukung layanan atau tindakan yang tersedia secara umum (GA). Layanan yang tersedia secara umum adalah layanan yang dirilis secara publik dan bukan layanan yang dipratinjau atau khusus. Jika layanan yang tidak dikenal tersedia secara umum dan nama dieja dengan benar, maka layanan tidak mendukung fitur-fitur ini. Jika kebijakan Anda mencakup layanan yang didukung dengan tindakan yang tidak didukung, maka layanan tersebut tidak sepenuhnya mendukung rangkuman kebijakan IAM.

**Untuk meminta agar layanan menambahkan ringkasan kebijakan IAM atau dukungan editor visual**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Temukan kebijakan yang mencakup layanan yang tidak didukung:
   + Jika kebijakan tersebut adalah kebijakan terkelola, pilih **Kebijakan** di panel navigasi. Dalam daftar kebijakan, pilih nama kebijakan yang ingin Anda lihat.
   + Jika kebijakan tersebut adalah kebijakan inline yang terlampir pada pengguna, pilih **Pengguna** di panel navigasi. Dalam daftar pengguna, pilih nama pengguna yang kebijakannya ingin Anda lihat. Dalam tabel kebijakan untuk pengguna, perluas kop untuk ringkasan kebijakan yang ingin Anda lihat.

1. Di sisi kiri di Konsol Manajemen AWS footer, pilih **Umpan Balik**. Di kotak **Umpan Balik untuk IAM**, ketik**I request that the <ServiceName> service add support for IAM policy summaries and the visual editor**. Jika Anda menginginkan lebih dari satu layanan untuk mendukung ringkasan, ketik **I request that the <ServiceName1>, <ServiceName2>, and <ServiceName3> services add support for IAM policy summaries and the visual editor**.

**Untuk meminta agar layanan menambahkan dukungan ringkasan kebijakan IAM untuk tindakan yang hilang**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Temukan kebijakan yang mencakup layanan yang tidak didukung:
   + Jika kebijakan tersebut adalah kebijakan terkelola, pilih **Kebijakan** di panel navigasi. Dalam daftar kebijakan, pilih nama kebijakan yang ingin Anda lihat.
   + Jika kebijakan tersebut adalah kebijakan inline yang terlampir pada pengguna, pilih **Pengguna** di panel navigasi. Dalam daftar pengguna, pilih nama pengguna yang kebijakannya ingin Anda lihat. Dalam tabel kebijakan untuk pengguna, pilih nama kebijakan yang ingin Anda lihat untuk memperluas ringkasan kebijakan.

1. Dalam ringkasan kebijakan, pilih nama layanan yang menyertakan tindakan yang tidak didukung.

1. Di sisi kiri di Konsol Manajemen AWS footer, pilih **Umpan Balik**. Di kotak **Umpan Balik untuk IAM**, ketik**I request that the <ServiceName> service add IAM policy summary and the visual editor support for the <ActionName> action**. Jika Anda ingin melaporkan lebih dari satu tindakan yang tidak didukung, ketik **I request that the <ServiceName> service add IAM policy summary and the visual editor support for the <ActionName1>, <ActionName2>, and <ActionName3> actions**. 

Untuk meminta agar layanan lain mencakup tindakan yang hilang, ulangi tiga langkah terakhir.

### Kebijakan saya tidak memberikan izin yang diharapkan
<a name="policy-summary-not-grant-permissions"></a>

Untuk menetapkan izin bagi pengguna, grup, peran, atau sumber daya, Anda membuat *kebijakan*, yaitu dokumen yang mendefinisikan izin. Dokumen kebijakan mencakup elemen-elemen berikut ini:
+ **Efek** – apakah kebijakan mengizinkan atau menolak akses
+ **Tindakan** – daftar tindakan yang diperbolehkan atau ditolak oleh kebijakan tersebut
+ **Sumber Daya** – daftar sumber daya yang memungkinkan terjadinya tindakan
+ **Kondisi** (Opsional) – situasi yang mengatur pemberian izin oleh kebijakan

Untuk mempelajari tentang elemen kebijakan ini dan elemen kebijakan lainnya, lihat [Referensi elemen kebijakan IAM JSON](reference_policies_elements.md). 

Untuk memberikan akses, kebijakan Anda harus menentukan tindakan dengan sumber daya yang didukung. Jika kebijakan Anda juga mencakup suatu kondisi, kondisi tersebut harus mencakup [kunci kondisi global](reference_policies_condition-keys.md) atau harus berlaku untuk tindakan tersebut. Untuk mempelajari sumber daya mana yang didukung oleh tindakan, lihat [Dokumentasi AWS](https://docs.aws.amazon.com/) untuk layanan Anda. Untuk mempelajari kondisi mana yang didukung oleh tindakan, lihat [Tindakan, Sumber Daya, dan Kunci Kondisi untuk AWS Layanan](reference_policies_actions-resources-contextkeys.html).

Periksa apakah kebijakan Anda menentukan tindakan, sumber daya, atau kondisi yang tidak memberikan izin. Lihat [ringkasan kebijakan](access_policies_understand-policy-summary.md) untuk kebijakan Anda menggunakan konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). Anda dapat menggunakan ringkasan kebijakan untuk mengidentifikasi dan memperbaiki masalah di kebijakan Anda.

Ada beberapa alasan mengapa elemen mungkin tidak memberikan izin meskipun ditetapkan dalam kebijakan IAM:
+ [**Tindakan didefinisikan tanpa sumber daya yang berlaku**](#mismatch_action-no-resource)
+ [**Sumber daya didefinisikan tanpa tindakan yang berlaku**](#mismatch_resource-no-action)
+ [**Suatu kondisi didefinisikan tanpa tindakan yang berlaku**](#mismatch_condition-no-match)

Untuk melihat contoh ringkasan kebijakan yang mencakup peringatan, lihat [Ringkasan kebijakan (daftar layanan)](access_policies_understand-policy-summary.md).

#### Tindakan didefinisikan tanpa sumber daya yang sesuai
<a name="mismatch_action-no-resource"></a>

Kebijakan di bawah ini menjelaskan semua tindakan `ec2:Describe*` dan menentukan sumber daya spesifik. Tidak satu pun tindakan `ec2:Describe` diberikan karena semuanya tidak mendukung izin tingkat sumber daya. Izin tingkat sumber daya berarti tindakan tersebut mendukung sumber daya yang menggunakan [ARNs](reference_identifiers.md#identifiers-arns) di elemen kebijakan [`Resource`](reference_policies_elements_resource.md). Jika tindakan tidak mendukung izin tingkat sumber daya, maka pernyataan dalam kebijakan tersebut harus menggunakan wildcard (`*`) di elemen `Resource`. Untuk mempelajari layanan mana yang mendukung izin tingkat sumber daya, lihat [AWS layanan yang bekerja dengan IAM](reference_aws-services-that-work-with-iam.md).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "arn:aws:ec2:us-east-2:111122223333:instance/*"
        }
    ]
}
```

------

Kebijakan ini tidak memberikan izin apa pun, dan ringkasan kebijakan mencakup kesalahan berikut ini:

`This policy does not grant any permissions. To grant access, policies must have an action that has an applicable resource or condition.`

Untuk memperbaiki kebijakan ini, Anda harus menggunakan `*` di elemen `Resource`.

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

****  

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

------

#### Sumber daya ditetapkan tanpa tindakan yang sesuai
<a name="mismatch_resource-no-action"></a>

Kebijakan di bawah ini mendefinisikan sumber daya bucket Amazon S3 tetapi tidak mencakup tindakan S3 yang dapat dilakukan pada sumber daya tersebut. Kebijakan ini juga memberikan akses penuh ke semua CloudFront tindakan Amazon.

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

****  

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

------

Kebijakan ini memberikan izin untuk semua CloudFront tindakan. Tetapi karena kebijakan mendefinisikan sumber daya `amzn-s3-demo-bucket` S3 tanpa mendefinisikan tindakan S3 apa pun, ringkasan kebijakan mencakup peringatan berikut:

`This policy defines some actions, resources, or conditions that do not provide permissions. To grant access, policies must have an action that has an applicable resource or condition.`

Untuk memperbaiki kebijakan ini guna memberikan izin bucket S3, Anda harus menetapkan tindakan S3 yang dapat dilakukan pada sumber daya bucket.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudfront:*",
                "s3:CreateBucket",
                "s3:ListBucket*",
                "s3:PutBucket*",
                "s3:GetBucket*"
            ],
            "Resource": [
                "arn:aws:cloudfront:*",
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        }
    ]
}
```

------

Sebagai alternatif, untuk memperbaiki kebijakan ini agar hanya memberikan CloudFront izin, hapus sumber daya S3.

#### Kondisi didefinisikan tanpa tindakan yang berlaku
<a name="mismatch_condition-no-match"></a>

Kebijakan di bawah ini mendefinisikan dua tindakan Amazon S3 untuk semua sumber daya S3, jika awalan S3 sama dan ID versi `custom` sama. `1234` Namun, kunci kondisi `s3:VersionId` digunakan untuk penandaan versi objek dan tidak didukung oleh tindakan bucket didefinisikan. Untuk mempelajari kondisi mana yang didukung oleh tindakan, lihat [Tindakan, Sumber Daya, dan Kunci Kondisi untuk AWS Layanan](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) dan pilih layanan untuk melihat dokumentasi layanan untuk kunci kondisi.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:ListBucket"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        "custom"
                    ],
                    "s3:VersionId": [
                        "1234"
                    ]
                }
            }
        }
    ]
}
```

------

Kebijakan ini memberikan izin untuk tindakan `s3:ListBucketVersions` dan tindakan `s3:ListBucket` jika nama bucket mencakup prefiks `custom`. Tetapi karena kondisi `s3:VersionId` tidak didukung oleh salah satu tindakan yang ditetapkan, ringkasan kebijakan mencakup kesalahan berikut:

`This policy does not grant any permissions. To grant access, policies must have an action that has an applicable resource or condition.`

Untuk memperbaiki kebijakan ini untuk menggunakan penandaan versi objek S3, Anda harus menentukan tindakan S3 yang mendukung kunci kondisi `s3:VersionId`. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:ListBucket",
                "s3:GetObjectVersion"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        "custom"
                    ],
                    "s3:VersionId": [
                        "1234"
                    ]
                }
            }
        }
    ]
}
```

------

Kebijakan ini memberikan izin untuk setiap tindakan dan kondisi dalam kebijakan tersebut. Namun, kebijakan ini masih tidak memberikan izin apa pun karena tidak ada kasus ketika tindakan tunggal sesuai dengan kedua kondisi. Sebaliknya, Anda harus membuat dua pernyataan terpisah yang masing-masing hanya menyertakan tindakan kondisi yang sesuai dengannya.

Untuk memperbaiki kebijakan ini, buat dua pernyataan. Pernyataan pertama mencakup tindakan yang mendukung kondisi `s3:prefix`, dan pernyataan kedua mencakup tindakan yang mendukung kondisi `s3:VersionId`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:ListBucket"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:prefix": "custom"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "s3:GetObjectVersion",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:VersionId": "1234"
                }
            }
        }
    ]
}
```

------

## Pemecahan masalah manajemen kebijakan
<a name="troubleshoot_policies-policy-manage"></a>

Anda dapat mendiagnosis dan menyelesaikan masalah terkait manajemen kebijakan.

### Melampirkan atau melepaskan kebijakan di akun IAM
<a name="troubleshoot_roles_cant-attach-detach-policy"></a>

Beberapa kebijakan AWS terkelola ditautkan ke layanan. Kebijakan ini hanya digunakan dengan [peran yang berkaitan dengan layanan](id_roles.md#iam-term-service-linked-role) untuk layanan itu. Di konsol IAM, saat Anda melihat halaman **Detail kebijakan**, halaman tersebut menyertakan spanduk untuk menunjukkan bahwa kebijakan tersebut ditautkan ke layanan. Anda tidak dapat melampirkan kebijakan ini ke pengguna, grup, atau peran di dalam IAM. Saat Anda membuat peran terkait layanan, kebijakan ini secara otomatis dilampirkan ke peran baru Anda. Karena kebijakan tersebut diperlukan, Anda tidak dapat memisahkan kebijakan dari peran yang terkait dengan layanan. 

### Mengubah kebijakan untuk identitas IAM Anda berdasarkan aktivitas
<a name="troubleshoot_change-policies-based-on-activity"></a>

Anda dapat memperbarui kebijakan untuk identitas IAM Anda (pengguna, grup, dan peran) berdasarkan aktivitasnya. Untuk melakukan ini, lihat peristiwa akun Anda di **Riwayat CloudTrail acara**. CloudTrail log peristiwa mencakup informasi peristiwa terperinci yang dapat Anda gunakan untuk mengubah izin kebijakan.

**Pengguna atau peran sedang mencoba untuk melakukan suatu tindakan AWS dan permintaan tersebut ditolak.**  
Pertimbangkan apakah pengguna atau peran harus memiliki izin untuk melakukan tindakan. Jika demikian, Anda dapat menambahkan tindakan dan bahkan ARN dari sumber daya yang mereka coba akses ke kebijakan mereka.

**Pengguna atau peran memiliki izin yang tidak mereka gunakan.**  
Pertimbangkan untuk menghapus izin tersebut dari kebijakan mereka. Pastikan bahwa kebijakan Anda memberikan [hak istimewa terkecil](best-practices.md#grant-least-privilege) yang diperlukan untuk hanya melakukan tindakan yang diperlukan.

Untuk informasi selengkapnya tentang penggunaan CloudTrail, lihat [Melihat CloudTrail Acara di CloudTrail Konsol](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events-console.html) di *Panduan AWS CloudTrail Pengguna*.

## Memecahkan masalah pada dokumen kebijakan JSON
<a name="troubleshoot_policies-json"></a>

Anda dapat mendiagnosis dan menyelesaikan masalah terkait dokumen kebijakan JSON.

### Memvalidasi kebijakan Anda
<a name="usepolicyvalidation"></a>

 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 lebih menyempurnakan kebijakan Anda. 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. 

### Saya tidak memiliki izin untuk validasi kebijakan di editor JSON
<a name="nopermsforpolicyvalidation"></a>

Dalam Konsol Manajemen AWS, Anda mungkin menerima kesalahan berikut jika Anda tidak memiliki izin untuk melihat hasil validasi kebijakan IAM Access Analyzer:

`You need permissions. You do not have the permissions required to perform this operation. Ask your administrator to add permissions.`

Untuk memperbaiki kesalahan ini, minta administrator Anda untuk menambahkan izin `access-analyzer:ValidatePolicy` untuk Anda.

### Lebih dari satu objek kebijakan JSON
<a name="morethanonepolicyblock"></a>

Kebijakan IAM harus terdiri dari hanya satu objek JSON. Anda menunjukkan sebuah objek dengan menempatkan rungkup \$1 \$1 di sekitarnya. Anda dapat membuat sarang objek lain di dalam objek JSON dengan menyematkan tanda kurung \$1\$1 tambahan di dalam pasangan luar. Kebijakan harus berisi hanya satu pasang kurung kurung \$1\$1 terluar. Contoh berikut tidak benar karena berisi dua objek di tingkat atas (dipanggil masuk*red*):

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

****  

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

------

Namun, Anda dapat memenuhi maksud dari contoh sebelumnya dengan menggunakan tata bahasa kebijakan yang benar. Alih-alih memasukkan dua objek kebijakan lengkap, masing-masing dengan elemen `Statement`, Anda dapat menggabungkan kedua blok menjadi satu elemen `Statement`. Elemen `Statement` memiliki susunan dua objek sebagai nilainya, seperti ditunjukkan dalam contoh berikut (disebut dalam **huruf tebal**): 

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

****  

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

------

### Lebih dari satu elemen pernyataan JSON
<a name="morethanonestatement"></a>

Kesalahan ini pada awalnya mungkin tampak seperti variasi pada bagian sebelumnya. Namun, secara sintaksis ini adalah tipe kesalahan yang berbeda. Contoh berikut hanya memiliki satu objek kebijakan yang ditandai dengan sepasang rungkup \$1 \$1 di tingkat atas. Namun, objek tersebut berisi dua elemen `Statement` di dalamnya.

 Kebijakan IAM harus berisi hanya satu elemen `Statement`, yang terdiri atas nama (`Statement`) yang muncul di sebelah kiri titik dua, diikuti dengan nilainya di sebelah kanan. Nilai dari elemen `Statement` harus berupa objek, yang ditandai dengan rungkup \$1 \$1, yang berisi satu elemen `Effect`, satu elemen `Action`, dan satu elemen `Resource`. Contoh berikut salah karena berisi dua `Statement` elemen dalam objek kebijakan (dipanggil masuk*red*):

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

****  

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

------

Objek nilai dapat berupa himpunan berbagai objek nilai. Untuk memecahkan masalah ini, gabungkan kedua elemen `Statement` ke dalam satu elemen dengan himpunan objek, seperti ditunjukkan dalam contoh berikut (disebut dalam **huruf tebal**):

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

****  

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

------

Nilai dari elemen `Statement` merupakan himpunan objek. Rangkaian dalam contoh ini terdiri dari dua objek, yang masing-masing adalah nilai yang benar untuk elemen `Statement`. Setiap objek di himpunan dipisahkan dengan koma.

### Lebih dari satu efek, tindakan, atau elemen sumber daya dalam elemen pernyataan JSON
<a name="duplicateelement"></a>

Di sisi nilai `Statement` name/value pasangan, objek harus terdiri dari hanya satu `Effect` elemen, satu `Action` elemen, dan satu `Resource` elemen. Kebijakan berikut tidak benar karena memiliki dua `Effect` elemen dalam`Statement`:

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

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": {
        "Effect": "Deny",
        "Effect": "Allow",     
        "Action": "ec2:* ",
        "Resource": "*"
      }
    }
```

------

**catatan**  
Mesin kebijakan tidak mengizinkan kesalahan tersebut di kebijakan baru atau yang telah diedit. Namun demikian, mesin kebijakan terus mengizinkan kebijakan yang disimpan sebelum mesin diperbarui. Perilaku kebijakan yang ada dengan kesalahan tersebut adalah sebagai berikut:  
Beberapa elemen `Effect`: hanya elemen `Effect` terakhir yang diamati. Yang lainnya diabaikan.
Beberapa `Action` elemen: semua `Action` elemen digabungkan secara internal dan diperlakukan seolah-olah mereka adalah daftar tunggal.
Beberapa `Resource` elemen: semua `Resource` elemen digabungkan secara internal dan diperlakukan seolah-olah mereka adalah daftar tunggal.
Mesin kebijakan tidak memungkinkan Anda untuk menyimpan kebijakan dengan kesalahan sintaksis. Perbaiki kesalahan dalam kebijakan sebelum menyimpan. Tinjau dan perbaiki rekomendasi [validasi kebijakan](access_policies_policy-validator.md) apa pun untuk kebijakan Anda.

 Dalam setiap kasus, solusinya adalah menghapus elemen ekstra yang salah. Untuk elemen `Effect`, ini mudah: jika Anda ingin contoh sebelumnya untuk *menolak* izin bagi instans Amazon EC2, maka Anda harus menghapus baris `"Effect": "Allow",` dari kebijakan, sebagai berikut:

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

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": {
        "Effect": "Deny",
        "Action": "ec2:*",
        "Resource": "*"
      }
    }
```

------

Namun, jika elemen duplikat adalah `Action` atau `Resource`, maka resolusinya dapat lebih rumit. Anda mungkin memiliki beberapa tindakan yang ingin Anda izinkan (atau tolak) izinnya, atau Anda mungkin ingin mengontrol akses ke beberapa sumber daya. Misalnya, contoh berikut salah karena memiliki beberapa `Resource` elemen (dipanggil masuk*red*):

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

****  

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

------

Masing-masing elemen wajib di objek nilai elemen `Statement` hanya bisa muncul sekali. Solusinya adalah menempatkan setiap nilai dalam himpunan. Contoh berikut menggambarkan hal ini dengan membuat dua elemen sumber daya terpisah menjadi satu elemen `Resource` dengan susunan sebagai objek nilai (disebut dalam **huruf tebal**):

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

****  

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

------

### Elemen versi JSON hilang
<a name="missing-version"></a>

Elemen kebijakan `Version` berbeda dari versi kebijakan. Elemen kebijakan `Version` digunakan dalam kebijakan dan menentukan versi bahasa kebijakan. Sebagai perbandingan, 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).

Seiring berkembangnya AWS fitur, kemampuan baru ditambahkan ke kebijakan IAM untuk mendukung fitur-fitur tersebut. Terkadang, pembaruan sintaksis kebijakan mencakup nomor versi baru. Jika Anda menggunakan fitur tata bahasa kebijakan yang lebih baru dalam kebijakan Anda, maka Anda harus memberi tahu mesin pembatas kebijakan versi mana yang Anda gunakan. Versi kebijakan default adalah “17-10-2008.” Jika Anda ingin menggunakan fitur kebijakan yang diperkenalkan setelahnya, Anda harus menentukan nomor versi yang mendukung fitur yang Anda inginkan. Sebaiknya Anda *selalu* menyertakan nomor versi sintaksis kebijakan terbaru, yang saat ini adalah `"Version": "2012-10-17"`. Misalnya, kebijakan berikut salah karena menggunakan variabel kebijakan `${...}` di ARN untuk sumber daya. Tetapi gagal menentukan versi sintaks kebijakan yang mendukung variabel kebijakan (dipanggil masuk*red*):

```
{
  "Statement": 
  {
    "Action": "iam:*AccessKey*",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::123456789012:user/${aws:username}"
  }
}
```

Menambahkan elemen `Version` di atas kebijakan dengan nilai `2012-10-17`, API IAM versi pertama yang mendukung variabel kebijakan, menyelesaikan masalah ini (disebut dalam **huruf tebal**):

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": 
  {
    "Action": "iam:*AccessKey*",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::123456789012:user/${aws:username}"
  }
}
```

------