Topik ini menjelaskan sintaks dan struktur kebijakan akses di RAM (Resource Access Management), yang dapat Anda gunakan untuk membuat atau memperbarui kebijakan.
Prasyarat
Sebelum menggunakan sintaks kebijakan, pahami karakteristik kebijakan dan aturan penggunaannya.
Kebijakan akses mencakup karakter-karakter berikut:
Karakter JSON dalam kebijakan akses:
{ } [ ] " , :.Karakter khusus yang digunakan dalam sintaks meliputi
= < > ( ) |.
Aturan penggunaan karakter adalah sebagai berikut:
Jika suatu elemen menerima satu atau beberapa nilai, Anda dapat menentukannya dengan cara berikut:
Untuk menentukan beberapa nilai, gunakan koma (,) dan elipsis (...). Contohnya:
[ <action_string>, <action_string>, ...].Untuk menentukan satu nilai, Anda dapat menggunakan array berisi satu elemen atau string. Misalnya,
"Action": [<action_string>]dan"Action": <action_string>memiliki efek yang sama.
Tanda tanya (?) setelah suatu elemen menunjukkan bahwa elemen tersebut opsional. Contohnya:
<condition_block?>.Tanda VERTICAL LINE (|) di antara beberapa nilai menunjukkan bahwa Anda hanya boleh memilih salah satu dari nilai tersebut. Contohnya:
("Allow" | "Deny").Nilai yang diapit tanda kutip ganda ("") menunjukkan string teks. Contohnya:
<version_block> = "Version" : ("1").
Struktur kebijakan
Kebijakan akses terdiri atas elemen-elemen berikut:
Nomor versi.
Daftar pernyataan (statement). Setiap pernyataan mencakup efek (effect), operasi (action), resource, dan condition opsional.
Sintaks kebijakan
policy = {
<version_block>,
<statement_block>
}
<version_block> = "Version" : ("1")
<statement_block> = "Statement" : [ <statement>, <statement>, ... ]
<statement> = {
<effect_block>,
<action_block>,
<resource_block>,
<condition_block?>
}
<effect_block> = "Effect" : ("Allow" | "Deny")
<action_block> = "Action" | "NotAction" :
("*" | <action_string> | [<action_string>, <action_string>, ...])
<resource_block> = "Resource" :
("*" | <resource_string> | [<resource_string>, <resource_string>, ...])
<condition_block> = "Condition" : <condition_map>
<condition_map> = {
<condition_type_string> : {
<condition_key_string> : <condition_value_list>,
<condition_key_string> : <condition_value_list>,
...
},
<condition_type_string> : {
<condition_key_string> : <condition_value_list>,
<condition_key_string> : <condition_value_list>,
...
}, ...
}
<condition_value_list> = (<condition_value> | [<condition_value>, <condition_value>, ...])
<condition_value> = ("String" | "Number" | "Boolean" | "Date and time" | "IP address")Daftar berikut menjelaskan sintaks kebijakan akses:
Version: Versi kebijakan akses. Nilainya tetap 1 dan tidak dapat diubah.
Statement: Kebijakan akses dapat mencakup beberapa pernyataan.
Setiap pernyataan menentukan efek berupa
AllowatauDeny.CatatanElemen Action maupun Resource mendukung beberapa nilai dalam satu pernyataan.
Setiap pernyataan mendukung kondisi (Condition) yang independen.
CatatanBlok kondisi dapat menggabungkan beberapa kondisi, dan setiap kondisi dapat menggunakan jenis operator yang berbeda.
Prioritas Deny: Pengguna dapat diberikan beberapa kebijakan akses. Jika kebijakan tersebut mencakup pernyataan
AllowdanDeny, aturan prioritas deny akan berlaku.Nilai elemen:
Jika nilai elemen berupa string, angka, tanggal dan waktu, Boolean, atau alamat IP, apit dengan tanda kutip ganda ("").
Jika nilai elemen berupa string, Anda dapat menggunakan wildcard
*dan?untuk pencocokan kabur.Wildcard
*mencocokkan nol atau lebih karakter. Misalnya,ecs:Describe*mencocokkan semua operasi ECS yang dimulai denganDescribe.Wildcard
?mencocokkan tepat satu karakter.
Validasi format kebijakan
Kebijakan akses mendukung format JSON. Sistem memvalidasi format JSON setiap kali Anda membuat atau memperbarui kebijakan akses. Anda juga dapat menggunakan validator atau editor JSON pihak ketiga untuk memvalidasi format tersebut. Untuk informasi lebih lanjut mengenai standar sintaks JSON, lihat RFC 7159.