Tata bahasa kebijakan IAM JSON - 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.

Tata bahasa kebijakan IAM JSON

Halaman ini menyajikan tata bahasa formal untuk bahasa yang digunakan untuk membuat kebijakan JSON di IAM. Kami menyajikan tata bahasa ini sehingga Anda dapat memahami cara menyusun dan memvalidasi kebijakan.

Untuk contoh kebijakan, lihat topik berikut:

Untuk contoh kebijakan yang digunakan dalam AWS layanan lain, buka dokumentasi untuk layanan tersebut.

Bahasa kebijakan dan JSON

Kebijakan dinyatakan dalam JSON. 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.

Dalam dokumen ini, kami tidak memberikan deskripsi lengkap mengenai segala sesuatu yang termasuk dalam JSON yang valid. Namun, berikut ini beberapa aturan dasar JSON:

  • Spasi kosong antara entitas individu diperbolehkan.

  • Nilai diapit dengan tanda petik. Tanda petik adalah bersifat opsional untuk nilai numerik dan Boolean.

  • Banyak elemen (misalnya, action_string_list dan resource_string_list) dapat mengambil susunan JSON sebagai nilai. Susunan dapat mengambil satu atau beberapa nilai. Jika ada lebih dari satu nilai yang disertakan, susunan tersebut berada dalam kurung persegi ([ dan ]) dan dipisahkan dengan koma, seperti dalam contoh berikut:

    "Action" : ["ec2:Describe*","ec2:List*"]

  • Tipe data dasar JSON (Boolean, angka, dan string) ditentukan dalam RFC 7159.

Konvensi yang digunakan dalam tata bahasa ini

Konvensi berikut digunakan dalam tata bahasa ini:

  • Karakter berikut adalah token JSON dan disertakan dalam kebijakan:

    { } [ ] " , :

  • Karakter berikut adalah karakter khusus dalam tata bahasa dan tidak disertakan dalam kebijakan:

    = < > ( ) |

  • Jika suatu elemen memungkinkan beberapa nilai, elemen tersebut ditunjukkan menggunakan nilai berulang, pemisah koma, dan elipsis (...). Contoh:

    [<action_string>, <action_string>, ...]

    <principal_map> = { <principal_map_entry>, <principal_map_entry>, ... }

    Jika beberapa nilai diperbolehkan, memasukkan hanya satu nilai juga akan valid. Hanya untuk satu nilai, koma di akhir harus dihilangkan. Jika elemen mengambil sebuah susunan (ditandai dengan [dan]) tetapi hanya satu nilai yang disertakan, tanda kurung bersifat opsional. Contoh:

    "Action": [<action_string>]

    "Action": <action_string>

  • Tanda tanya (?) setelah elemen tertentu menunjukkan bahwa elemen tersebut bersifat opsional. Contoh:

    <version_block?>

    Namun, pastikan untuk merujuk pada catatan yang mengikuti daftar tata bahasa untuk perincian tentang elemen opsional.

  • Garis vertikal (|) di antara elemen menunjukkan alternatif. Dalam tata bahasa, tanda kurung menentukan ruang lingkup alternatif. Contoh:

    ("Principal" | "NotPrincipal")

  • Elemen yang harus berupa string literal diapit dengan tanda petik ganda ("). Contoh:

    <version_block> = "Version" : ("2008-10-17" | "2012-10-17")

Untuk catatan tambahan, lihat Catatan tata bahasa kebijakan mengikuti daftar tata bahasa.

Tata Bahasa

Daftar berikut menjelaskan tata bahasa kebijakan. Untuk konvensi yang digunakan dalam daftar, lihat bagian sebelumnya. Untuk informasi tambahan, lihat catatan setelahnya.

catatan

Tata bahasa ini menjelaskan kebijakan yang ditandai dengan versi 2008-10-17 dan 2012-10-17. 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.

policy = { <version_block?> <id_block?> <statement_block> } <version_block> = "Version" : ("2008-10-17" | "2012-10-17") <id_block> = "Id" : <policy_id_string> <statement_block> = "Statement" : [ <statement>, <statement>, ... ] <statement> = { <sid_block?>, <principal_block?>, <effect_block>, <action_block>, <resource_block>, <condition_block?> } <sid_block> = "Sid" : <sid_string> <effect_block> = "Effect" : ("Allow" | "Deny") <principal_block> = ("Principal" | "NotPrincipal") : ("*" | <principal_map>) <principal_map> = { <principal_map_entry>, <principal_map_entry>, ... } <principal_map_entry> = ("AWS" | "Federated" | "Service" | "CanonicalUser") : [<principal_id_string>, <principal_id_string>, ...] <action_block> = ("Action" | "NotAction") : ("*" | [<action_string>, <action_string>, ...]) <resource_block> = ("Resource" | "NotResource") : : ("*" | <resource_string> | [<resource_string>, <resource_string>, ...]) <condition_block> = "Condition" : { <condition_map> } <condition_map> = { <condition_type_string> : { <condition_key_string> : <condition_value_list> }, <condition_type_string> : { <condition_key_string> : <condition_value_list> }, ... } <condition_value_list> = [<condition_value>, <condition_value>, ...] <condition_value> = (<condition_value_string> | <condition_value_string> | <condition_value_string>)

Catatan tata bahasa kebijakan

  • Satu kebijakan dapat berisi serangkaian pernyataan.

  • Kebijakan memiliki ukuran maksimum antara 2.048 karakter hingga 10.240 karakter, bergantung pada entitas yang menyertai kebijakan tersebut. Untuk informasi selengkapnya, lihat IAM dan AWS STS kuota. Perhitungan ukuran kebijakan tidak mencakup karakter spasi kosong.

  • Elemen individu dilarang berisi beberapa kasus dari kunci yang sama. Misalnya, Anda tidak dapat menyertakan blok Effect dua kali dalam pernyataan yang sama.

  • Blok dapat muncul dalam urutan apa pun. Misalnya, version_block dapat mengikuti id_block dalam kebijakan. Demikian pula, effect_block, principal_block, action_block dapat muncul dengan urutan apa pun dalam pernyataan.

  • id_block bersifat opsional dalam kebijakan berbasis sumber daya. Komponen itu dilarang dimasukkan dalam kebijakan berbasis identitas.

  • principal_block diperlukan dalam kebijakan berbasis sumber daya (misalnya, dalam kebijakan bucket Amazon S3 dan dalam kebijakan kepercayaan untuk peran IAM. Komponen itu dilarang dimasukkan dalam kebijakan berbasis identitas.

  • Elemen principal_map di kebijakan bucket Amazon S3 dapat mencakup ID CanonicalUser. Sebagian besar kebijakan berbasis sumber daya tidak mendukung pemetaan ini. Untuk mempelajari selengkapnya tentang menggunakan ID pengguna kanonik dalam kebijakan bucket, lihat Menentukan Prinsipal dalam Kebijakan di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

  • Setiap nilai string (policy_id_string, sid_string, principal_id_string, action_string, resource_string, condition_type_string, condition_key_string, dan versi string dari condition_value) dapat memiliki batasan panjang minimal dan maksimal, nilai tertentu yang diizinkan, atau format internal yang diperlukan.

Catatan tentang nilai string

Bagian ini menyediakan informasi tambahan tentang nilai string yang digunakan dalam elemen yang berbeda dalam kebijakan.

action_string

Terdiri dari namespace layanan, titik dua, dan nama tindakan Nama tindakan dapat mencakup kartu bebas. Contoh:

"Action":"ec2:StartInstances" "Action":[ "ec2:StartInstances", "ec2:StopInstances" ] "Action":"cloudformation:*" "Action":"*" "Action":[ "s3:Get*", "s3:List*" ]
policy_id_string

Menyediakan cara untuk menyertakan informasi tentang kebijakan secara keseluruhan. Beberapa layanan, seperti Amazon SQS dan Amazon SNS, menggunakan elemen Id dengan cara khusus. Kecuali jika dibatasi oleh layanan individu, policy_id_string dapat mencakup spasi. Beberapa layanan mewajibkan nilai ini unik di dalam akun AWS .

catatan

id_block diperbolehkan dalam kebijakan berbasis sumber daya, tetapi tidak dalam kebijakan berbasis identitas

Tidak ada batas panjang, meskipun string ini berkontribusi pada panjang kebijakan secara keseluruhan, yang dibatasi.

"Id":"Admin_Policy" "Id":"cd3ad3d9-2776-4ef1-a904-4c229d1642ee"
sid_string

Memberikan cara untuk menyertakan informasi tentang pernyataan individu. Untuk kebijakan IAM, karakter alfanumerik dasar (A-Z,a-z,0-9) adalah hanya karakter yang diperbolehkan dalam nilai Sid. Layanan AWS lain yang mendukung kebijakan sumber daya mungkin memiliki persyaratan lain untuk nilai Sid. Misalnya, beberapa layanan memerlukan nilai ini untuk menjadi unik dalam Akun AWS, dan beberapa layanan memungkinkan karakter tambahan seperti spasi dalam Sid nilai.

"Sid":"1" "Sid": "ThisStatementProvidesPermissionsForConsoleAccess"
principal_id_string

Menyediakan cara untuk menentukan prinsipal menggunakan Amazon Resource Name (ARN) dari, pengguna IAM Akun AWS, peran IAM, pengguna federasi, atau pengguna peran yang dianggap. Untuk itu Akun AWS, Anda juga dapat menggunakan formulir pendek AWS:accountnumber alih-alih ARN penuh. Untuk semua opsi termasuk layanan AWS , peran yang diasumsikan, dan sebagainya, lihat Menentukan prinsipal.

Perhatikan bahwa Anda dapat menggunakan * hanya untuk menentukan "semua orang/anonim". Anda tidak dapat menggunakannya Iuntuk menentukan bagian nama atau ARN.

resource_string

Dalam sebagian besar kasus, terdiri atas Amazon Resource Name (ARN

"Resource":"arn:aws:iam::123456789012:user/Bob" "Resource":"arn:aws:s3:::examplebucket/*"
condition_type_string

Mengidentifikasi tipe kondisi yang diuji, seperti StringEquals, StringLike, NumericLessThan, DateGreaterThanEquals, Bool, BinaryEquals, IpAddress, ArnEquals, dll. Untuk daftar lengkap tipe kondisi, lihat Elemen kebijakan IAM JSON: Operator kondisi.

"Condition": { "NumericLessThanEquals": { "s3:max-keys": "10" } } "Condition": { "Bool": { "aws:SecureTransport": "true" } } "Condition": { "StringEquals": { "s3:x-amz-server-side-encryption": "AES256" } }
condition_key_string

Mengidentifikasi kunci kondisi yang nilainya akan diuji untuk menentukan apakah kondisi terpenuhi. AWS mendefinisikan satu set kunci kondisi yang tersedia di semua AWS layanan, termasuk, aws:PrincipalTypeaws:SecureTransport, danaws:userid.

Untuk daftar kunci AWS kondisi, lihatAWS kunci konteks kondisi global. Untuk kunci kondisi kepatuhan yang bersifat khusus terhadap layanan, lihat dokumentasi untuk layanan tersebut seperti berikut:

"Condition":{ "Bool": { "aws:SecureTransport": "true" } } "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } }
condition_value_string

Mengidentifikasi nilai condition_key_string yang menentukan apakah kondisi terpenuhi. Untuk daftar lengkap nilai valid untuk jenis kondisi, lihatElemen kebijakan IAM JSON: Operator kondisi.

"Condition":{ "ForAnyValue:StringEquals": { "dynamodb:Attributes": [ "ID", "PostDateTime" ] } }