Kebijakan izin dalam Resource Access Management (RAM) menentukan izin tertentu dan terdiri dari elemen dasar berikut: Effect, Action atau NotAction, Resource, Condition, dan Principal.
Elemen | Deskripsi |
Effect | Otorisasi dapat memiliki salah satu dari dua efek berikut:
|
Action/NotAction | Aksi adalah operasi pada sumber daya tertentu. Dalam pernyataan kebijakan, Anda hanya dapat menentukan Action atau NotAction:
|
Resource | Sumber daya adalah objek tertentu yang dapat diberi otorisasi. |
Condition | Menentukan kondisi yang diperlukan agar kebijakan berlaku. |
Principal | Menentukan pihak yang berwenang yang diizinkan atau ditolak mengakses sumber daya. Elemen ini hanya berlaku untuk kebijakan berbasis sumber daya, seperti kebijakan kepercayaan peran RAM. |
Effect
Elemen `Effect` bersifat wajib dan menentukan apakah pernyataan tersebut memberikan izin eksplisit atau penolakan.
Nilai valid untuk elemen `Effect` adalah `Allow` dan `Deny`.
Jika kebijakan izin berisi pernyataan `Allow` dan `Deny`, aturan prioritas penolakan (deny precedence rule) akan berlaku.
Kode berikut memberikan contoh:
"Effect": "Allow"Action/NotAction
Elemen ini bersifat wajib dan menentukan operasi yang diizinkan atau ditolak. Anda dapat menggunakan `Action` atau `NotAction` dalam suatu pernyataan, tetapi tidak keduanya sekaligus. Elemen `Action` mencantumkan operasi yang diizinkan atau ditolak oleh kebijakan, sedangkan elemen `NotAction` menentukan operasi yang dikecualikan dari kebijakan. Artinya, semua operasi kecuali yang disebutkan dalam `NotAction` dipengaruhi oleh kebijakan tersebut.
Nilai elemen `Action` atau `NotAction` adalah nama operasi API yang didefinisikan oleh layanan Alibaba Cloud.
Format elemen `Action` atau `NotAction` adalah <ram-code>:<action-name>.
ram-code: kode yang digunakan dalam RAM untuk mengidentifikasi layanan Alibaba Cloud. Untuk informasi selengkapnya, lihat kode yang tercantum dalam kolom RAM Code di Layanan yang bekerja dengan RAM.action-name: Nama operasi API terkait.
Nilai elemen `Action` atau `NotAction` umumnya tidak peka huruf besar/kecil. Namun, untuk memastikan perilaku yang konsisten, kami menyarankan Anda menggunakan awalan aksi <ram-code> dan nama aksi <action-name> persis seperti yang ditentukan dalam dokumentasi otorisasi layanan Alibaba Cloud terkait.
Kode berikut memberikan contoh:
Contoh tindakan
"Action": [ "oss:ListBuckets", "ecs:Describe*", "rds:Describe*" ]Contoh NotAction
Contoh berikut mengizinkan semua operasi kecuali operasi RAM. Alih-alih mencantumkan semua operasi yang diizinkan, kebijakan ini hanya mencantumkan pengecualian (`ram:*`), sehingga pernyataan kebijakan menjadi lebih ringkas. Namun, hal ini memberikan cakupan izin yang luas. Gunakan dengan hati-hati dan pastikan kebijakan tersebut memenuhi persyaratan keamanan Anda.
{ "Effect": "Allow", "NotAction": "ram:*", "Resource": "*" }
Resource
Elemen `Resource` bersifat wajib dalam kebijakan berbasis identitas dan menentukan satu atau beberapa objek yang diberi otorisasi.
Nilai elemen `Resource` adalah Nama Sumber Daya Alibaba Cloud (ARN) dari suatu sumber daya.
Format elemen `Resource` adalah acs:<ram-code>:<region>:<account-id>:<relative-id>. Gunakan ARN sumber daya persis seperti yang ditentukan dalam dokumentasi otorisasi layanan Alibaba Cloud terkait.
Daftar berikut menjelaskan format tersebut:
acs: Singkatan dari Alibaba Cloud Service, yang menunjukkan platform cloud publik Alibaba Cloud.ram-code: kode yang mengidentifikasi layanan Alibaba Cloud dalam RAM. Untuk informasi selengkapnya, lihat kode yang tercantum dalam kolom RAM Code di Layanan yang bekerja dengan RAM.region: Informasi wilayah. Untuk sumber daya global yang dapat diakses tanpa menentukan wilayah, atur bidang ini menjadi tanda bintang (*). Untuk informasi selengkapnya, lihat Wilayah dan zona.account-id: ID akun Alibaba Cloud. Contoh:123456789012****.relative-id: Bagian deskripsi sumber daya yang spesifik untuk layanan tersebut. Semantiknya ditentukan oleh layanan Alibaba Cloud. Bagian ini mendukung struktur mirip pohon seperti jalur file. Misalnya, untuk menentukan objek OSS, formatnya adalahrelative-id = "mybucket/dir1/object1.jpg".
Kode berikut memberikan contoh:
"Resource": [
"acs:ecs:*:*:instance/inst-001",
"acs:ecs:*:*:instance/inst-002",
"acs:oss:*:*:mybucket",
"acs:oss:*:*:mybucket/*"
]Condition
Elemen `Condition` bersifat opsional dan menentukan kondisi di mana kebijakan berlaku.
Elemen `Condition` juga dikenal sebagai blok kondisi. Elemen ini terdiri dari satu atau beberapa klausa kondisi. Setiap klausa kondisi mencakup jenis operator kondisional, kunci kondisi, dan nilai kondisi.

Karena elemen `Condition` bersifat opsional, sistem tidak memeriksa keberadaannya. Jika Anda menggunakan elemen `Condition`, pastikan ejaan dan penggunaan huruf besar/kecil pada semua komponennya benar.
Kunci kondisi sangat peka terhadap huruf besar/kecil. Sensitivitas nilai kondisi terhadap huruf besar/kecil bergantung pada operator kondisional. Misalnya, untuk kunci kondisi string, operator StringEquals melakukan perbandingan yang peka huruf besar/kecil, sedangkan operator StringEqualsIgnoreCase melakukan perbandingan yang tidak peka huruf besar/kecil.
Daftar berikut menjelaskan elemen `Condition`:
Logika evaluasi
Kunci kondisi dapat memiliki satu atau beberapa nilai. Selama evaluasi, kondisi terpenuhi jika nilai kunci kondisi dalam permintaan cocok dengan salah satu nilai yang ditentukan dalam kebijakan (logika OR).
Klausa kondisi dapat memiliki beberapa kunci kondisi. Klausa kondisi terpenuhi hanya jika semua kunci kondisinya terpenuhi (logika AND).
Blok kondisi dapat memiliki beberapa klausa kondisi. Blok kondisi terpenuhi hanya jika semua klausa kondisinya terpenuhi (logika AND).
Jenis operator kondisional
Operator kondisional dapat diklasifikasikan ke dalam kategori berikut: string, angka, tanggal dan waktu, Boolean, dan alamat IP. Untuk definisi dan contoh, lihat Operator kondisional.
Kunci kondisi
Format penamaan kunci kondisi global Alibaba Cloud adalah
acs:<condition-key>.Kunci kondisi global
Tipe
Deskripsi
acs:CurrentTimeTanggal dan waktu
Waktu saat server web menerima permintaan.
CatatanWaktu harus dalam UTC dan diformat berdasarkan standar ISO 8601.
Misalnya, pukul 20:00:00 pada 10 Januari 2023 (UTC+8) dinyatakan sebagai
2023-01-10T20:00:00+08:00atau2023-01-10T12:00:00Z.acs:SecureTransportBoolean
Menunjukkan apakah saluran aman digunakan untuk mengirim permintaan. Contoh: HTTPS.
acs:SourceIpAlamat IP
Alamat IP klien yang mengirim permintaan.
CatatanNilai
acs:SourceIpdapat berupa alamat IP tertentu atau blok CIDR. Jangan menuliskan alamat IP tertentu dalam notasi CIDR. Misalnya, jangan menulis 10.0.0.1 sebagai 10.0.0.1/32.acs:MFAPresentBoolean
Menunjukkan apakah MFA digunakan ketika pengguna masuk.
CatatanJika MFA For RAM User Logons diatur ke Required Only For Unusual Logon dalam pengaturan keamanan pengguna RAM, kunci kondisi
acs:MFAPresentmenjadi tidak berlaku. Untuk informasi selengkapnya, lihat Mengelola pengaturan keamanan pengguna RAM.acs:PrincipalARNString
Identitas pemohon. Kunci kondisi ini hanya dapat digunakan dalam kebijakan kontrol direktori sumber daya dan kebijakan kepercayaan peran RAM. Contoh:
acs:ram:*:*:role/*resourcedirectory*.CatatanSaat ini, Anda hanya dapat menentukan ARN peran RAM, dan harus menggunakan huruf kecil. Anda dapat melihat ARN peran RAM di halaman detail peran di Konsol RAM.
acs:PrincipalRDIdString
ID direktori sumber daya tempat akun Alibaba Cloud pemohon berada. Kunci kondisi ini hanya dapat digunakan dalam kebijakan kepercayaan peran RAM dan kebijakan bucket OSS.
acs:PrincipalRDPathString
Jalur akun Alibaba Cloud pemohon dalam direktori sumber daya. Kunci kondisi ini hanya dapat digunakan dalam kebijakan kepercayaan peran RAM dan kebijakan bucket OSS.
acs:RequestTag/<tag-key>String
Tag yang dikirim dalam permintaan. <tag-key> menunjukkan kunci tag. Ganti <tag-key> dengan kunci tag aktual. Untuk informasi selengkapnya tentang layanan Alibaba Cloud dan jenis sumber daya yang didukung, lihat Resource Type Authorization di Layanan yang mendukung tag.
acs:ResourceTag/<tag-key>String
Tag yang terikat pada sumber daya yang diminta. <tag-key> menunjukkan kunci tag. Ganti <tag-key> dengan kunci tag aktual. Untuk informasi selengkapnya tentang layanan Alibaba Cloud dan jenis sumber daya yang didukung, lihat informasi Resource Type Authorization di Layanan yang mendukung tag.
Format penamaan kunci kondisi tingkat layanan Alibaba Cloud adalah
<ram-code>:<condition-key>.Misalnya, kunci kondisi OSS
oss:Delimiteradalah karakter yang digunakan untuk mengelompokkan nama objek dalam permintaan `ListObjects`.Untuk informasi tentang kunci kondisi untuk layanan Alibaba Cloud tertentu, lihat dokumentasi otorisasi layanan tersebut.
Contoh kondisi
Kondisi dalam satu pernyataan dievaluasi menggunakan logika AND. Untuk mengevaluasi kondisi menggunakan logika OR, Anda harus menempatkannya dalam pernyataan terpisah.
Contoh 1: Izinkan pengguna RAM mengakses instance ECS hanya jika mereka telah mengaktifkan MFA dan mengakses dari alamat IP 203.0.113.2.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "IpAddress": { "acs:SourceIp": [ "203.0.113.2" ] }, "Bool": { "acs:MFAPresent": [ "true" ] } } } ] }Contoh 2: Izinkan pengguna RAM mengakses instance ECS jika mereka telah mengaktifkan MFA atau mengakses dari alamat IP 203.0.113.2.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "IpAddress": { "acs:SourceIp": [ "203.0.113.2" ] } } }, { "Effect": "Allow", "Action": "ecs:*", "Resource": "*", "Condition": { "Bool": { "acs:MFAPresent": [ "true" ] } } } ] }
Principal
Elemen `Principal` menentukan pihak yang berwenang yang diberikan atau ditolak izinnya. Elemen ini wajib dalam kebijakan berbasis sumber daya, seperti kebijakan kepercayaan peran RAM. Dalam kebijakan kepercayaan, elemen `Principal` menentukan entitas yang dapat mengasumsikan peran tersebut.
Anda tidak dapat menggunakan elemen `Principal` dalam kebijakan berbasis identitas. Kebijakan berbasis identitas disambungkan ke identitas RAM, seperti pengguna RAM, kelompok pengguna, atau peran RAM. Dalam kasus ini, identitas RAM merupakan pihak yang berwenang secara implisit.
Dalam elemen `Principal`, Anda dapat menambahkan beberapa tipe pihak yang berwenang dan menentukan beberapa pihak untuk setiap tipe. Gunakan koma (,) untuk memisahkan beberapa tipe pihak yang berwenang. Jika suatu tipe pihak memiliki beberapa nilai, masukkan nilai-nilai tersebut dalam tanda kurung siku ([]) dan pisahkan dengan koma (,). Hubungan antara beberapa pihak yang berwenang mengikuti logika OR, artinya cukup salah satu pihak yang berwenang yang ditentukan dalam kebijakan diberi otorisasi.
Contoh entitas otorisasi:
"Principal": {
"RAM": [
"acs:ram::123456789012****:root",
"acs:ram::987654321098****:root"
],
"Service": "ecs.aliyuncs.com"
}Pihak yang berwenang adalah entitas RAM terotentikasi. Tipe pihak yang berwenang yang tersedia adalah:
Akun Alibaba Cloud
Anda dapat menentukan akun Alibaba Cloud sebagai pihak yang berwenang. Hal ini memberikan otorisasi kepada semua pengguna RAM dan peran RAM yang termasuk dalam akun yang ditentukan. Saat menentukan akun Alibaba Cloud, Anda harus menggunakan ARN-nya dalam format
acs:ram::<account-id>:root. Kode berikut memberikan contoh:"Principal": { "RAM": "acs:ram::123456789012****:root" }CatatanPengguna root dari akun Alibaba Cloud yang ditentukan tidak termasuk saat Anda menggunakan ARN akun sebagai pihak yang berwenang.
Pengguna RAM
Anda dapat menentukan pengguna RAM sebagai pihak yang berwenang. Anda harus menggunakan ARN pengguna RAM dalam format
acs:ram::<account-id>:user/<user-name>, di mana<user-name>adalah nama login pengguna RAM. Kode berikut memberikan contoh:"Principal": { "RAM": [ "acs:ram::123456789012****:user/<user1-name>", "acs:ram::123456789012****:user/<user2-name>" ] }Anda tidak dapat menggunakan karakter wildcard (*) untuk pencocokan parsial saat menentukan pengguna RAM. Anda harus menentukan ARN lengkapnya.
PentingDalam kebijakan kepercayaan peran RAM, jika elemen `Principal` berisi ARN pengguna RAM, sistem akan mengonversi ARN ini menjadi ID unik (misalnya, `29695932303672****`) saat kebijakan disimpan. ID ini biasanya tidak terlihat dan hanya ditampilkan dalam kebijakan kepercayaan jika pengguna RAM tersebut dihapus. Jika hal ini terjadi, Anda dapat menghapus ID tersebut atau menggantinya dengan ARN pengguna RAM yang valid. Mekanisme ini membantu mengurangi risiko keamanan. Saat membuat atau memperbarui kebijakan kepercayaan,
<user-name>tidak peka huruf besar/kecil karena sistem secara otomatis mengonversinya menjadi ARN standar.Peran RAM
Jika Anda menentukan peran RAM untuk elemen `Principal` dalam kebijakan, Anda harus menggunakan ARN peran RAM dalam format
acs:ram::<account-id>:role/<role-name>. Dalam format ini,<role-name>adalah nama peran RAM. Contoh:"Principal": { "RAM": [ "acs:ram::123456789012****:role/<role-name>" ] }ARN peran RAM tidak mendukung pencocokan wildcard dengan tanda bintang (*).
PentingDalam kebijakan kepercayaan peran RAM, jika elemen `Principal` berisi Nama Sumber Daya Alibaba Cloud (ARN) peran RAM lain, sistem akan mengonversi ARN tersebut menjadi ID saat kebijakan disimpan. Misalnya: 38915594982675****. ID ini biasanya tidak terlihat dan hanya muncul dalam kebijakan kepercayaan setelah peran RAM yang ditentukan dihapus. Dalam kasus ini, hapus ID tersebut atau ganti dengan ARN peran RAM yang valid. Hal ini membantu mengurangi risiko keamanan. Saat membuat atau memperbarui kebijakan kepercayaan,
<role-name>tidak peka huruf besar/kecil. Sistem secara otomatis mengonversinya menjadi ARN standar.Layanan Alibaba Cloud
Anda dapat menentukan layanan Alibaba Cloud sebagai pihak yang berwenang. Anda harus menentukan nama prinsipal layanan, yaitu pengidentifikasi untuk layanan tersebut. Nama ini biasanya dalam format
<service-name>.aliyuncs.com. Untuk nilai spesifik<service-name>, lihat dokumentasi layanan Alibaba Cloud yang akan mengasumsikan peran tersebut. Kode berikut memberikan contoh:"Principal": { "Service": [ "ecs.aliyuncs.com" ] }Penyedia identitas
Anda dapat menentukan pengguna federasi dari penyedia identitas (IdP) sebagai pihak yang berwenang menggunakan ARN IdP. Alibaba Cloud mendukung Single Sign-On (SSO) berbasis Security Assertion Markup Language (SAML) 2.0 dan OpenID Connect (OIDC). Untuk SSO berbasis protokol SAML, ARN Penyedia Identitas SAML adalah
acs:ram::<account-id>:saml-provider/<provider-name>. Untuk SSO berbasis protokol OIDC, ARN Penyedia Identitas OIDC adalahacs:ram::<account-id>:oidc-provider/<provider-name>. Nilai ARN dalam elemen `Principal` peka huruf besar/kecil, sehingga Anda harus menggunakan ARN IdP yang tepat."Principal": { "Federated": [ "acs:ram::123456789012****:saml-provider/<provider-name>" ] }