Memecahkan masalah kebijakan IAM - AWS Identity and Access Management

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

Memecahkan masalah kebijakan IAM

Kebijakan 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 AWS Management Console menggunakan opsi editor Visual dan JSON. Ketika Anda melihat kebijakan di AWS Management Console, 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.

Perlu diingat bahwa semua kebijakan IAM disimpan menggunakan sintaks yang dimulai dengan aturan JavaScript Object Notation (JSON). Anda tidak perlu memahami sintaksis ini untuk membuat atau mengelola kebijakan Anda. Anda dapat membuat dan mengedit kebijakan menggunakan editor visual di AWS Management Console. Untuk mempelajari lebih lanjut tentang sintaksis JSON di kebijakan IAM, lihat Tata bahasa kebijakan IAM JSON .

Pemecahan Masalah Topik Kebijakan IAM

Atasi masalah menggunakan editor visual

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.

Restrukturisasi kebijakan

Saat Anda membuat kebijakan, AWS memvalidasi, memproses, dan mengubah kebijakan sebelum menyimpannya. Saat AWS mengembalikan kebijakan sebagai respons terhadap kueri pengguna atau menampilkannya di konsol, AWS mengubah kebijakan kembali menjadi format yang dapat dibaca manusia tanpa mengubah izin yang diberikan oleh kebijakan. Hal ini dapat mengakibatkan perbedaan dalam hal 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 ID dalam elemen utama dapat diganti oleh ARN dari. Pengguna root akun AWS Karena kemungkinan perubahan ini, Anda tidak boleh membandingkan dokumen kebijakan JSON sebagai string.

Saat Anda membuat kebijakan terkelola pelanggan di AWS Management Console, Anda dapat memilih untuk bekerja sepenuhnya di editor JSON. Jika Anda tidak pernah membuat perubahan apa pun di editor Visual dan memilih Berikutnya dari editor JSON, kebijakan tersebut cenderung tidak direstrukturisasi. Namun, jika Anda membuat kebijakan dan menggunakan editor Visual untuk membuat modifikasi apa pun, atau jika Anda memilih Berikutnya dari opsi Editor Visual, IAM mungkin merestrukturisasi kebijakan tersebut untuk mengoptimalkan tampilannya di editor visual.

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

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, 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 jenis sumber daya.

  • Gunakan pembangun ARN – Berdasarkan jenis sumber daya, Anda mungkin melihat bidang yang berbeda untuk membangun ARN Anda. 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. Anda harus memberikan Wilayah, Akun, dan InstanceIdnilai untuk sumber daya Anda. Jika Anda memberikan ID akun tetapi memilih Apa pun untuk Wilayah dan ID instans, maka kebijakan tersebut memberikan izin untuk setiap instans dalam akun Anda.

  • Ketik atau tempel ARN – Anda dapat menentukan sumber daya berdasarkan Amazon Resource Name (ARN). Anda dapat memasukkan karakter wildcard (*) di bidang ARN mana pun (di antara setiap pasangan titik dua). Untuk informasi selengkapnya, lihat Elemen kebijakan IAM JSON: Resource.

Menolak izin di editor visual

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, kami merekomendasikan sebagai praktik terbaik agar Anda memberikan izin hanya untuk tindakan dan sumber daya yang dibutuhkan pengguna. Anda harus membuat pernyataan untuk menolak izin hanya jika Anda ingin membatalkan izin secara terpisah yang diizinkan oleh pernyataan atau kebijakan lain. Kami sarankan Anda membatasi jumlah izin penolakan seminim mungkin karena dapat meningkatkan kesulitan izin pemecahan masalah. Untuk informasi lebih lanjut tentang cara IAM mengevaluasi logika kebijakan, lihat Logika evaluasi kebijakan.

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

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.

Jika Anda akrab dengan sintaksis JSON, Anda juga dapat menggunakan karakter wildcard (*) untuk menetapkan beberapa layanan secara manual. Sebagai contoh, ketik Code* untuk memberikan izin untuk semua layanan yang dimulai dengan Code, seperti CodeBuild dan CodeCommit. Namun, Anda selanjutnya harus mengetikkan ARN tindakan dan sumber daya untuk melengkapi kebijakan Anda. Sebagai tambahan, saat Anda menyimpan kebijakan Anda, kebijakan itu mungkin distruktur ulang 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

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 menampilkan pesan kesalahan dan tidak mengizinkan Anda untuk meninjau dan menyimpan kebijakan Anda. Untuk melihat batasan IAM mengenai ukuran kebijakan yang dikelola, lihat Batas karakter IAM dan STS.

Untuk mengurangi ukuran kebijakan Anda di editor visual, edit kebijakan Anda atau pindahkan blok izin ke kebijakan lain. Pesan kesalahan mencakup jumlah karakter yang dimuat dalam dokumen kebijakan Anda, dan 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

Saat Anda membuat atau mengedit kebijakan dalam editor visual, Anda mungkin melihat peringatan bahwa kebijakan Anda mencakup layanan, tindakan, atau jenis 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.

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 di pratinjau, Anda dapat mengabaikan peringatan dan melanjutkan, meskipun Anda harus secara manual mengetikkan ARN tindakan dan sumber daya untuk melengkapi kebijakan Anda. 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 khusus, Anda dapat mengabaikan peringatan dan melanjutkan, meskipun Anda harus secara manual mengetikkan ARN tindakan dan sumber daya untuk melengkapi kebijakan Anda. 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 dapat mengabaikan peringatan dan melanjutkan, meskipun Anda harus mengetik ARN tindakan dan sumber daya secara manual untuk menyelesaikan kebijakan Anda. 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.

  • Tindakan tidak mendukung editor visual — Jika kebijakan Anda menyertakan layanan yang didukung dengan tindakan yang tidak didukung, Anda dapat mengabaikan peringatan dan melanjutkan, meskipun Anda harus mengetik ARN sumber daya secara manual untuk menyelesaikan kebijakan Anda. 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.

  • 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. Untuk menghindari hal ini, kami sarankan Anda menggunakan editor visual dengan memilih dari daftar layanan dan tindakan, dan kemudian menyelesaikan bagian sumber daya sesuai dengan petunjuknya. Namun demikian, jika layanan tidak sepenuhnya mendukung editor visual, Anda mungkin harus mengetikkan 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 apakah ada nama layanan, tindakan, dan tipe sumber daya salah eja. Misalnya, Anda mungkin menggunakan s2 alih-alih s3 dan ListMyBuckets alih-alih ListAllMyBuckets. Salah tik tindakan umum lainnya adalah masuknya teks yang tidak perlu di ARN, sepertiarn:aws:s3: : :*, atau titik dua hilamh dalam tindakan, seperti iam.CreateUser. Anda dapat mengevaluasi kebijakan yang mungkin menyertakan kesalahan ketik dengan memilih Berikutnya untuk meninjau ringkasan kebijakan dan mengonfirmasi apakah kebijakan tersebut memberikan izin yang Anda inginkan.

Pemecahan masalah menggunakan ringkasan kebijakan

Anda dapat mendiagnosis dan menyelesaikan masalah terkait rangkuman kebijakan.

Ringkasan kebijakan hilang

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, ringkasan layanan, dan ringkasan tindakan. Tabel ringkasan kebijakan mencakup daftar layanan dan ringkasan izin yang ditentukan oleh kebijakan yang dipilih. Anda dapat melihat ringkasan kebijakan 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, maka Anda akan melihat dokumen kebijakan JSON, bukan ringkasan, dan menerima 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 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” (*). Ini berarti tidak ada akses Deny atau Allow yang diberikan.

    catatan

    Anda harus berhati-hati saat menggunakan elemen-elemen kebijakan ini seperti NotPrincipal, NotAction, dan NotResource. Untuk informasi selengkapnya tentang elemen-elemen kebijakan, lihat Referensi elemen kebijakan IAM JSON.

    Anda dapat membuat kebijakan yang tidak memberikan izin yang efektif jika Anda memberikan layanan dan sumber daya yang tidak sesuai. Hal ini dapat terjadi jika 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. Untuk lebih memahami kebijakan Anda, selalu uji kebijakan tersebut dengan simulator kebijakan.

Ringkasan kebijakan mencakup layanan, tindakan, atau tipe sumber daya yang tidak dikenal

Di konsol IAM, jika ringkasan kebijakan menyertakan simbol peringatan ( ), 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).

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.

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.

  • 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).

  • 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).

  • Typo — AWS memeriksa bahwa JSON benar secara sintaksis, dan kebijakan tersebut tidak menyertakan kesalahan ketik atau kesalahan lain sebagai bagian dari validasi kebijakan.

catatan

Sebagai praktik terbaik, 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

Ketika layanan atau tindakan yang tersedia secara umum (GA) tidak dikenali oleh ringkasan kebijakan IAM atau editor visual, kemungkinan layanan tersebut tidak mendukung fitur-fitur ini. 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 AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. 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.

  3. Di sisi kiri di AWS Management Console footer, pilih Umpan Balik. Di kotak Umpan Balik untuk IAM, ketikI 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 AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. 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.

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

  4. Di sisi kiri di AWS Management Console footer, pilih Umpan Balik. Di kotak Umpan Balik untuk IAM, ketikI 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

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.

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 atau harus berlaku untuk tindakan tersebut. Untuk mempelajari sumber daya mana yang didukung oleh tindakan, lihat Dokumentasi AWS untuk layanan Anda. Untuk mempelajari kondisi mana yang didukung oleh suatu tindakan, lihat Tindakan, Sumber Daya, dan Kunci Kondisi untuk AWS Layanan.

Untuk mempelajari apakah kebijakan Anda mendefinisikan tindakan, sumber daya, atau kondisi yang tidak memberikan izin, Anda dapat melihat ringkasan kebijakan untuk kebijakan Anda menggunakan konsol IAM di 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:

Untuk melihat contoh ringkasan kebijakan yang mencakup peringatan, lihat Ringkasan kebijakan (daftar layanan).

Tindakan didefinisikan tanpa sumber daya yang sesuai

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 ARN di elemen Resource kebijakan. 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.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "arn:aws:ec2:us-east-2:ACCOUNT-ID: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.

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

Sumber daya ditetapkan tanpa tindakan yang sesuai

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.

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

Kebijakan ini memberikan izin untuk semua CloudFront tindakan. Tetapi karena kebijakan mendefinisikan sumber daya examplebucket 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.

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

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

Kondisi didefinisikan tanpa tindakan yang berlaku

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 dan ikuti tautan ke dokumentasi layanan untuk kunci kondisi.

{ "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.

{ "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.

{ "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

Anda dapat mendiagnosis dan menyelesaikan masalah terkait manajemen kebijakan.

Melampirkan atau melepaskan kebijakan di akun IAM

Beberapa kebijakan AWS terkelola ditautkan ke layanan. Kebijakan ini hanya digunakan dengan peran yang berkaitan dengan layanan untuk layanan itu. Di konsol IAM, saat Anda melihat halaman Detail kebijakan untuk 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

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. Anda mungkin menemukan bahwa pengguna atau peran sedang mencoba melakukan tindakan AWS dan permintaan tersebut ditolak. Dalam hal ini, Anda dapat mempertimbangkan apakah pengguna atau peran harus memiliki izin untuk melakukan tindakan tersebut. Jika demikian, Anda dapat menambahkan tindakan dan bahkan ARN dari sumber daya yang mereka coba akses ke kebijakan mereka. Sebagai alternatif, jika pengguna atau peran memiliki izin yang tidak mereka gunakan, Anda mungkin mempertimbangkan untuk menghapus izin tersebut dari kebijakan mereka. Pastikan bahwa kebijakan Anda memberikan hak istimewa terkecil yang diperlukan untuk hanya melakukan tindakan yang diperlukan. Untuk informasi selengkapnya tentang penggunaan CloudTrail, lihat Melihat CloudTrail Acara di CloudTrail Konsol di Panduan AWS CloudTrail Pengguna.

Memecahkan masalah pada dokumen kebijakan JSON

Anda dapat mendiagnosis dan menyelesaikan masalah terkait dokumen kebijakan JSON.

Memvalidasi kebijakan Anda

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 Memvalidasi kebijakan IAM. Untuk mempelajari selengkapnya tentang pemeriksaan kebijakan IAM Access Analyzer dan rekomendasi yang dapat ditindaklanjuti, lihat validasi kebijakan IAM Access Analyzer.

Saya tidak memiliki izin untuk validasi kebijakan di editor JSON

Dalam AWS Management Console, 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

Kebijakan IAM harus terdiri dari satu dan hanya satu objek JSON. Anda menunjukkan sebuah objek dengan menempatkan rungkup { } di sekitarnya. Meskipun Anda dapat membuatkan nest untuk objek lain di dalam objek JSON dengan menyematkan rungkup { } tambahan di dalam pasangan bagian luar, kebijakan hanya dapat berisi satu pasang rungkup { } terluar. Contoh berikut ini salah karena berisi dua objek di tingkat atas (ditampilkan dalam warna merah):

{ "Version": "2012-10-17", "Statement": { "Effect":"Allow", "Action":"ec2:Describe*", "Resource":"*" } } { "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-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):

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

Lebih dari satu elemen pernyataan JSON

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 { } 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 { }, yang berisi satu elemen Effect, satu elemen Action, dan satu elemen Resource. Contoh berikut ini salah karena berisi dua elemen Statement dalam objek kebijakan (ditampilkan dalam warna merah):

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-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):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":"*" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-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

Di sisi nilai pasangan nama/nilai Statement, objek harus terdiri dari hanya satu elemen Effect, satu elemen Action, dan satu elemen Resource. Kebijakan berikut ini salah karena memiliki dua elemen Effect dalam objek nilai Statement:

{ "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 elemen Action: semua elemen Action digabung secara internal dan diperlakukan seolah-olah itu adalah daftar tunggal.

  • Beberapa elemen Resource: semua elemen Resource digabung secara internal dan diperlakukan seolah-olah itu adalah daftar tunggal.

Mesin kebijakan tidak memungkinkan Anda untuk menyimpan kebijakan dengan kesalahan sintaksis. Anda harus memperbaiki kesalahan dalam kebijakan sebelum Anda dapat menyimpannya. Kami menyarankan Anda meninjau rekomendasi validasi kebijakan apa pun yang benar 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:

{ "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 elemen Resource (yang ditampilkan dalam warna merah):

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket", "Resource": "arn:aws:s3:::my-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):

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

Elemen versi JSON hilang

Elemen kebijakan Version 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. Untuk mempelajari lebih lanjut tentang elemen kebijakan Version, lihat Elemen kebijakan IAM JSON: Version. Untuk mempelajari selengkapnya tentang versi kebijakan, lihat Peningkatan versi IAM.

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. Namun, kebijakan ini gagal menentukan versi sintaksis kebijakan yang mendukung variabel kebijakan (ditampilkan dalam warna merah):

{ "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):

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