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:
-
Contoh Kebijakan untuk Bekerja di Konsol Amazon EC2 dan Contoh Kebijakan untuk Bekerja Dengan CLI, Amazon EC2 AWS CLI, atau SDK AWS di Panduan Pengguna Amazon EC2.
-
Contoh Kebijakan Bucket dan Contoh Kebijakan Pengguna di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
Untuk contoh kebijakan yang digunakan dalam AWS layanan lain, buka dokumentasi untuk layanan tersebut.
Topik
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
danresource_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 mengikutiid_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 IDCanonicalUser
. 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 daricondition_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 identitasTidak 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 nilaiSid
. Misalnya, beberapa layanan memerlukan nilai ini untuk menjadi unik dalam Akun AWS, dan beberapa layanan memungkinkan karakter tambahan seperti spasi dalamSid
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:
alih-alih ARN penuh. Untuk semua opsi termasuk layanan AWS , peran yang diasumsikan, dan sebagainya, lihat Menentukan prinsipal.accountnumber
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:PrincipalType
aws: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:
-
Menentukan Ketentuan dalam Kebijakan di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon
-
Kebijakan IAM untuk Amazon EC2 di Panduan Pengguna Amazon EC2.
"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
" ] } }