Anda dapat mengonfigurasi kebijakan Manajemen Akses Sumber Daya (RAM) untuk mengelola izin pengguna seperti karyawan, sistem, atau aplikasi, serta sumber daya yang dapat diakses oleh pengguna tersebut. Sebagai contoh, Anda dapat membuat kebijakan RAM untuk memberi otorisasi kepada pengguna agar dapat mencantumkan dan membaca objek dalam bucket tertentu.
Lampirkan kebijakan kustom ke pengguna RAM
Buat kebijakan kustom.
Anda dapat merujuk pada contoh umum kebijakan RAM dalam topik ini sesuai dengan skenario aktual dan membuat kebijakan kustom menggunakan skrip. Untuk informasi lebih lanjut, lihat Buat Kebijakan Kustom.
Kebijakan RAM berisi nomor versi dan pernyataan. Setiap pernyataan mencakup elemen-elemen berikut: Effect, Action, Resource, dan Condition. Elemen Condition bersifat opsional. Untuk informasi lebih lanjut, lihat Kebijakan RAM.
PentingDalam Object Storage Service (OSS), Anda dapat menetapkan elemen Resource ke karakter wildcard asterisk (*) untuk menentukan sumber daya dari jenis tertentu. Nilai dari elemen Resource berada dalam format berikut:
acs:oss:{region}:{bucket_owner}:{bucket_name}/{object_name}. Sebagai contoh, jika elemen Resource diatur keacs:oss:*:*:mybucket/*, semua sumber daya dalam bucket mybucket ditentukan. Jika elemen Resource diatur keacs:oss:*:*:mybucket/abc*.txt, semua objek .txt yang namanya mengandung awalan abc dalam bucket mybucket ditentukan.Lampirkan kebijakan kustom ke pengguna RAM.
Lampirkan kebijakan RAM yang dibuat di Langkah 1 ke pengguna RAM. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Pengguna RAM.
Setelah membuat Kebijakan RAM, Anda dapat memberikannya kepada berbagai Pengguna. Berdasarkan kebutuhan bisnis, kebijakan tersebut dapat digunakan bersama oleh beberapa pengguna. Atau, Anda dapat melampirkannya ke Grup dengan persyaratan izin yang identik, sehingga semua pengguna dalam grup mewarisi izin yang didefinisikan dalam kebijakan.
Contoh 1: Mengotorisasi pengguna RAM untuk mengontrol penuh bucket
Kebijakan RAM berikut memberikan pengguna RAM kontrol penuh atas bucket mybucket.
Untuk memastikan keamanan data, kami sarankan Anda tidak memberikan kontrol penuh kepada pengguna RAM atas bucket yang digunakan oleh aplikasi seluler.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:*",
"Resource": [
"acs:oss:*:*:mybucket",
"acs:oss:*:*:mybucket/*"
]
}
]
}Contoh 2: Melarang pengguna RAM menghapus beberapa objek dalam bucket
Kebijakan RAM berikut melarang pengguna RAM menghapus semua objek .txt yang namanya mengandung awalan abc dalam bucket mybucket:
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"oss:DeleteObject"
],
"Resource": [
"acs:oss:*:*:mybucket/abc*.txt"
]
}
]
}Contoh 3: Mengotorisasi pengguna RAM untuk mencantumkan dan membaca objek dalam bucket
Mengotorisasi pengguna RAM untuk mencantumkan dan membaca objek dalam bucket menggunakan OSS SDK atau ossutil.
Kebijakan RAM berikut memberikan otorisasi kepada pengguna RAM untuk mencantumkan dan membaca semua objek dalam bucket
mybucketmenggunakan OSS SDK atau ossutil:CatatanElemen Resource untuk tindakan ListObjects harus menentukan semua sumber daya dalam bucket yang diinginkan.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:ListObjects", "Resource": "acs:oss:*:*:mybucket" }, { "Effect": "Allow", "Action": "oss:GetObject", "Resource": "acs:oss:*:*:mybucket/*" } ] }Mengotorisasi pengguna RAM untuk mencantumkan dan membaca objek dalam bucket menggunakan konsol OSS.
Kebijakan RAM berikut memberikan otorisasi kepada pengguna RAM untuk mencantumkan dan membaca semua objek dalam bucket
mybucketmenggunakan konsol OSS:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketLifecycle", "oss:GetBucketWorm", "oss:GetBucketVersioning", "oss:GetBucketAcl" ], "Resource": "acs:oss:*:*:*" }, { "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetBucketAcl" ], "Resource": "acs:oss:*:*:mybucket" }, { "Effect": "Allow", "Action": [ "oss:GetObject", "oss:GetObjectAcl" ], "Resource": "acs:oss:*:*:mybucket/*" } ] }
Contoh 4: Melarang pengguna RAM menghapus bucket
Kebijakan RAM berikut melarang pengguna RAM menghapus bucket mybucket:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:*",
"Resource": [
"acs:oss:*:*:mybucket",
"acs:oss:*:*:mybucket/*"
]
},
{
"Effect": "Deny",
"Action": [
"oss:DeleteBucket"
],
"Resource": [
"acs:oss:*:*:mybucket"
]
}
]
}Contoh 5: Mengotorisasi pengguna RAM untuk mengakses beberapa direktori dalam bucket
Dalam contoh ini, sebuah bucket bernama mybucket digunakan untuk menyimpan foto. Bucket tersebut berisi beberapa direktori yang dinamai berdasarkan lokasi tempat foto-foto tersebut diambil. Setiap direktori berisi subdirektori yang dinamai berdasarkan tahun-tahun ketika foto-foto tersebut diambil.
mybucket[Bucket]
├── beijing
│ ├── 2014
│ └── 2015
├── hangzhou
│ ├── 2013
│ ├── 2014
│ └── 2015
└── qingdao
├── 2014
└── 2015Sebagai contoh, Anda ingin memberikan izin baca saja kepada pengguna RAM pada direktori mybucket/hangzhou/2014/ dan mybucket/hangzhou/2015/. Otorisasi tingkat direktori adalah fitur lanjutan dari kebijakan RAM dan memerlukan kebijakan RAM dengan tingkat kompleksitas yang berbeda berdasarkan skenario aktual. Kebijakan RAM berikut cocok untuk skenario yang berbeda dan disediakan hanya sebagai referensi.
Berikan izin baca saja kepada pengguna RAM pada objek dalam direktori
mybucket/hangzhou/2014/danmybucket/hangzhou/2015/.Dalam skenario ini, pengguna RAM mengetahui jalur lengkap objek yang dapat diakses. Kami sarankan Anda mengonfigurasi kebijakan RAM untuk mengotorisasi pengguna RAM mengakses objek menggunakan jalur lengkap objek.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:GetObject" ], "Resource": [ "acs:oss:*:*:mybucket/hangzhou/2014/*", "acs:oss:*:*:mybucket/hangzhou/2015/*" ] } ] }Berikan izin kepada pengguna RAM untuk mengakses direktori
mybucket/hangzhou/2014/danmybucket/hangzhou/2015/serta mencantumkan objek dalam direktori menggunakan ossutil.Dalam skenario ini, pengguna RAM tidak mengetahui objek dalam direktori dan dapat menggunakan ossutil atau memanggil operasi API untuk mendapatkan informasi tentang objek dalam direktori. Dalam hal ini, izin
ListObjectsharus ditentukan dalam kebijakan.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:GetObject" ], "Resource": [ "acs:oss:*:*:mybucket/hangzhou/2014/*", "acs:oss:*:*:mybucket/hangzhou/2015/*" ] }, { "Effect": "Allow", "Action": [ "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:mybucket" ], "Condition":{ "StringLike":{ "oss:Prefix": [ "hangzhou/2014/*", "hangzhou/2015/*" ] } } } ] }Berikan izin kepada pengguna RAM untuk mengakses direktori menggunakan konsol OSS.
Dalam skenario ini, pengguna RAM dapat menggunakan konsol OSS untuk mengakses direktori
mybucket/hangzhou/2014/danmybucket/hangzhou/2015/dari direktori root secara bertahap.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketLifecycle", "oss:GetBucketWorm", "oss:GetBucketVersioning", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Effect": "Allow", "Action": [ "oss:GetObject", "oss:GetObjectAcl" ], "Resource": [ "acs:oss:*:*:mybucket/hangzhou/2014/*", "acs:oss:*:*:mybucket/hangzhou/2015/*" ] }, { "Effect": "Allow", "Action": [ "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:mybucket" ], "Condition": { "StringLike": { "oss:Delimiter": "/", "oss:Prefix": [ "", "hangzhou/", "hangzhou/2014/*", "hangzhou/2015/*" ] } } } ] }
Contoh 6: Larang pengguna RAM menghapus objek dari sebuah bucket
Kebijakan RAM berikut melarang pengguna RAM menghapus objek dari bucket mybucket:
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"oss:DeleteObject"
],
"Resource": [
"acs:oss:*:*:mybucket/*"
]
}
]
}Contoh 7: Larang pengguna RAM mengakses objek yang memiliki tag tertentu
Kebijakan RAM berikut berisi pernyataan Deny yang melarang pengguna RAM mengakses objek yang disimpan dalam bucket examplebucket dan memiliki tag status:ok dan key1:value1:
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"oss:GetObject"
],
"Resource": [
"acs:oss:*:174649585760xxxx:examplebucket/*"
],
"Condition": {
"StringEquals": {
"oss:ExistingObjectTag/status":"ok",
"oss:ExistingObjectTag/key1":"value1"
}
}
}
]
}Contoh 8: Mengotorisasi pengguna RAM untuk mengakses OSS dari IP tertentu
Izinkan akses dari alamat IP tertentu
Kebijakan RAM berikut memberikan otorisasi kepada pengguna RAM untuk membaca semua objek dalam bucket
mybuckethanya dari alamat IP dalam blok CIDR192.168.0.0/16dan198.51.100.0/24yang ditentukan dalam pernyataanAllow:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*:mybucket", "acs:oss:*:*:mybucket/*" ], "Condition":{ "IpAddress": { "acs:SourceIp": ["192.168.0.0/16", "198.51.100.0/24"] } } } ] }Tolak akses dari alamat IP tertentu
Kebijakan RAM berikut melarang pengguna RAM mengakses sumber daya OSS dari alamat IP yang tidak berada dalam blok CIDR
192.168.0.0/16yang ditentukan dalam pernyataanDeny:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*:mybucket", "acs:oss:*:*:mybucket/*" ] }, { "Effect": "Deny", "Action": "oss:*", "Resource": [ "acs:oss:*:*:*" ], "Condition":{ "NotIpAddress": { "acs:SourceIp": ["192.168.0.0/16"] } } } ] }CatatanDalam kebijakan RAM, pernyataan Deny memiliki prioritas lebih tinggi daripada pernyataan Allow. Oleh karena itu, ketika pengguna RAM mencoba membaca data dalam bucket mybucket dari alamat IP yang tidak berada dalam blok CIDR
192.168.0.0/16, pesan kesalahan akan dikembalikan, yang menunjukkan bahwa pengguna RAM tidak memiliki izin yang diperlukan.
Contoh 9: Gunakan RAM atau STS untuk memberikan izin kepada pengguna mengakses sumber daya OSS
Gunakan RAM atau Security Token Service (STS) untuk memberikan izin kepada pengguna dengan alamat IP 192.168.0.1 untuk melakukan operasi berikut dari klien OSS SDK for Java:
Cantumkan objek yang namanya mengandung awalan
foodalam bucket examplebucket.Berikan izin kepada pengguna untuk melakukan operasi unggah, unduh, dan hapus pada objek yang namanya mengandung awalan
filedalam bucket examplebucket.
Kebijakan RAM berikut dapat memenuhi persyaratan manajemen akses sebelumnya:
{
"Version": "1",
"Statement": [
{
"Action": [
"oss:GetBucketAcl",
"oss:ListObjects"
],
"Resource": [
"acs:oss:*:177530505652xxxx:mybucket"
],
"Effect": "Allow",
"Condition": {
"StringEquals": {
"acs:UserAgent": "java-sdk",
"oss:Prefix": "foo"
},
"IpAddress": {
"acs:SourceIp": "192.168.0.1"
}
}
},
{
"Action": [
"oss:PutObject",
"oss:GetObject",
"oss:DeleteObject"
],
"Resource": [
"acs:oss:*:177530505652xxxx:mybucket/file*"
],
"Effect": "Allow",
"Condition": {
"StringEquals": {
"acs:UserAgent": "java-sdk"
},
"IpAddress": {
"acs:SourceIp": "192.168.0.1"
}
}
}
]
}Contoh 10: Larang akses publik ke bucket dan objek melalui konfigurasi ACL
Contoh berikut menunjukkan cara melarang akses publik ke ACL Bucket dan Object, sehingga meningkatkan keamanan data OSS.
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"oss:PutBucket",
"oss:PutBucketAcl"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"oss:x-oss-acl": "private"
}
}
},
{
"Effect": "Deny",
"Action": [
"oss:PutObject",
"oss:PutObjectAcl"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"oss:x-oss-object-acl": [
"private",
"default"
]
}
}
}
]
}Contoh 11: Mengotorisasi pengguna RAM untuk menggunakan IMM
Kebijakan RAM berikut memberikan izin kepada pengguna RAM untuk menggunakan Intelligent Media Management (IMM):
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:PutObject",
"oss:PostProcessTask",
"oss:ProcessImm"
],
"Resource": "*"
},
{
"Action": [
"imm:CreateOfficeConversionTask",
"imm:GetWebofficeURL"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Effect": "Allow",
"Action": "ram:PassRole",
"Resource": "acs:ram:*:*:role/aliyunimmdefaultrole"
}
]
}Contoh 12: Otorisasi pengguna RAM untuk mengubah tipe redundansi penyimpanan bucket
Berikan izin kepada pengguna RAM untuk mengubah tipe redundansi penyimpanan sebuah bucket.
Kebijakan RAM berikut memberikan izin kepada pengguna RAM untuk mengubah jenis redundansi penyimpanan bucket mybucket:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:CreateBucketDataRedundancyTransition", "oss:GetBucketDataRedundancyTransition", "oss:ListBucketDataRedundancyTransition", "oss:DeleteBucketDataRedundancyTransition" ], "Resource": "acs:oss:*:*:mybucket" } ] }Berikan izin kepada pengguna RAM untuk mengubah tipe redundansi penyimpanan semua bucket.
PentingKebijakan RAM berikut memberikan izin kepada pengguna RAM untuk mengubah tipe redundansi penyimpanan semua bucket dalam akun Alibaba Cloud. Berhati-hatilah saat memberikan izin kepada pengguna RAM.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:CreateBucketDataRedundancyTransition", "oss:GetBucketDataRedundancyTransition", "oss:ListBucketDataRedundancyTransition", "oss:DeleteBucketDataRedundancyTransition" ], "Resource": "acs:oss:*:*:*" } ] }
Contoh 13: Otorisasi pengguna RAM untuk memesan paket sumber daya OSS
Kebijakan RAM berikut memberikan izin kepada pengguna RAM untuk memesan paket sumber daya OSS:
Setelah pengguna RAM memesan paket sumber daya OSS, pengguna tersebut perlu menghubungi pemilik akun Alibaba Cloud tempat pengguna RAM tersebut bernaung untuk membayar pesanan. Untuk memberikan otorisasi kepada pengguna RAM membayar pesanan, pemilik akun Alibaba Cloud perlu memberikan izin bss:PayOrder kepada pengguna RAM. bss:PayOrder adalah izin berisiko tinggi. Kami sarankan Anda tidak memberikan izin ini kepada pengguna RAM kecuali benar-benar diperlukan.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:CreateOrder",
"Resource": "acs:oss:*:*:*"
}
]
}Contoh 14: Mengotorisasi pengguna RAM untuk mengaktifkan OSS
Kebijakan RAM berikut memberikan izin kepada pengguna RAM untuk mengaktifkan OSS:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:ActivateProduct",
"Resource": "acs:oss:*:*:*"
}
]
}Contoh 15: Otorisasi pengguna RAM untuk membaca dan menulis bucket dengan tag tertentu
Kebijakan RAM berikut memberikan izin kepada pengguna RAM untuk membaca dan menulis bucket dengan tag tertentu. Kunci tag adalah key1 dan nilai tag adalah value1.
{
"Version": "1",
"Statement": [
{
"Action": [
"oss:ListBuckets",
"oss:GetBucketStat",
"oss:GetBucketInfo",
"oss:GetBucketAcl",
"oss:ListObjects",
"oss:PutObject",
"oss:GetObject"
],
"Resource": [
"acs:oss:*:*:*"
],
"Effect": "Allow",
"Condition": {
"StringEquals": {
"oss:BucketTag/key1": "value1"
}
}
}
]
}Setelah diberi otorisasi, kebijakan ini memungkinkan pengguna RAM melakukan operasi tertentu pada Bucket OSS dengan tag key1=value1.
Saat memulai permintaan
ListBucketsmenggunakan OSS SDK atau ossutil, Anda harus menyertakan parameter tag (contoh:tag-key=key1,tag-value=value1) untuk menyaring hasil. Jika kebijakan dikonfigurasi dengan benar, hanya bucket yang memiliki tag tertentu yang akan dikembalikan.Saat memvalidasi permintaan
ListBucketsmelalui Konsol OSS, di mana melampirkan parameter tag tidak didukung, permintaan akan gagal karena kondisi kebijakan tidak terpenuhi (oss:BucketTag/key1=value1) dan muncul pesan tentang izinyang tidak mencukupi.Operasi lainnya (contoh:
PutObject,GetObject) juga dibatasi oleh persyaratan penandaan ini; bucket target harus memenuhi kriteria penandaankey1=value1, jika tidak, permintaan akan ditolak.