Buat kebijakan RAM kustom untuk mengontrol resource OSS mana yang dapat diakses oleh Pengguna RAM Anda dan bagaimana cara mengaksesnya.
Kebijakan sistem dan prasyarat
-
Dua kebijakan sistem mencakup pola akses OSS umum:
AliyunOSSFullAccess: memberikan izin manajemen penuh atas semua bucket OSS.
AliyunECSReadOnlyAccess: memberikan izin read-only pada Bucket OSS.
Kebijakan sistem (seperti AliyunOSSFullAccess dan AliyunOSSReadOnlyAccess) dikelola oleh Alibaba Cloud dan tidak dapat dimodifikasi. Jika izin yang diberikan oleh kebijakan sistem tidak memenuhi kebutuhan Anda, Anda dapat membuat kebijakan kustom untuk kontrol akses detail halus. Kebijakan kustom dapat diedit dan dimodifikasi.
Sebelum menulis kebijakan, tinjau izin OSS yang tersedia. Untuk informasi selengkapnya, lihat RAM Policy.
Berikan akses OSS kepada Pengguna RAM
Buat Pengguna RAM. Untuk informasi selengkapnya, lihat Create a RAM user.
Buat kebijakan kustom. Untuk informasi selengkapnya, lihat Create a custom policy dan Policy examples.
Lampirkan kebijakan tersebut ke Pengguna RAM. Untuk informasi selengkapnya, lihat Manage RAM user permissions.
Contoh kebijakan
-
Contoh 1: Berikan akses manajemen penuh ke bucket tertentu
Kebijakan ini memberikan Pengguna RAM semua operasi OSS (
oss:*) pada bucket bernamamyphotosdan semua objek di dalamnya.{ "Version": "1", "Statement": [ { "Sid": "AllowFullAccessToMyphotos", "Effect": "Allow", "Action": "oss:*", "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ] } ] } -
Contoh 2: Berikan akses read-only ke bucket
Kebijakan ini memungkinkan Pengguna RAM mencantumkan objek dan membaca isinya di bucket
myphotos. Izin yang diperlukan berbeda tergantung apakah pengguna mengakses OSS melalui SDK/CLI atau Konsol OSS.-
Akses SDK dan CLI
Diperlukan dua pernyataan: satu untuk mencantumkan objek di bucket, dan satu lagi untuk membaca objek individual.
{ "Version": "1", "Statement": [ { "Sid": "AllowListObjectsInMyphotos", "Effect": "Allow", "Action": "oss:ListObjects", "Resource": "acs:oss:*:*:myphotos" }, { "Sid": "AllowGetObjectsInMyphotos", "Effect": "Allow", "Action": "oss:GetObject", "Resource": "acs:oss:*:*:myphotos/*" } ] } -
Akses Konsol OSS
Konsol memerlukan izin tambahan di luar yang dibutuhkan SDK/CLI.
CatatanSaat Pengguna RAM masuk ke Konsol OSS, operasi
ListBuckets,GetBucketAcl, danGetObjectAcldipanggil untuk memeriksa apakah bucket bersifat publik.Pernyataan pertama memberikan operasi visibilitas tingkat konsol pada semua bucket. Pernyataan kedua dan ketiga memberikan akses pencatatan dan pembacaan yang dibatasi pada
myphotos.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": "acs:oss:*:*:*" }, { "Sid": "AllowListObjectsInMyphotos", "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetBucketAcl" ], "Resource": "acs:oss:*:*:myphotos" }, { "Sid": "AllowGetObjectsInMyphotos", "Effect": "Allow", "Action": [ "oss:GetObject", "oss:GetObjectAcl" ], "Resource": "acs:oss:*:*:myphotos/*" } ] }
-
-
Contoh 3: Batasi akses ke alamat IP tertentu
Gunakan elemen
Conditionuntuk membatasi alamat IP mana yang dapat mengakses bucketmyphotos. Pilih pendekatan daftar izin (allowlist) atau daftar larangan (denylist).-
Daftar izin IP (Allow dengan kondisi IP)
Kebijakan ini memberikan akses baca ke
myphotoshanya jika permintaan berasal dari Blok CIDR192.168.0.0/16atau172.16.1.0/16. Kondisi IP hanya berlaku untuk pernyataan akses data — pernyataanAllowuntuk visibilitas konsol tetap tidak dibatasi.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Sid": "AllowReadFromAllowedIPs", "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ], "Condition": { "IpAddress": { "acs:SourceIp": ["192.168.0.0/16", "172.16.1.0/16"] } } } ] } -
Daftar larangan IP (Deny dengan kondisi IP)
Kebijakan ini secara eksplisit menolak semua operasi OSS jika permintaan berasal dari alamat IP di luar Blok CIDR
192.168.0.0/16. Pengguna RAM di luar rentang tersebut tidak dapat mengakses atau mengelola bucketmyphotos.Dua pernyataan pertama memberikan izin
Allowyang diperlukan; yang ketiga menerapkan Deny. Keduanya diperlukan — Allow memberikan akses, sedangkan Deny mengesampingkannya untuk IP di luar rentang.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Sid": "AllowReadFromMyphotos", "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ] }, { "Sid": "DenyAccessFromOutsideAllowedIP", "Effect": "Deny", "Action": "oss:*", "Resource": [ "acs:oss:*:*:*" ], "Condition": { "NotIpAddress": { "acs:SourceIp": ["192.168.0.0/16"] } } } ] }CatatanPernyataan Deny memiliki prioritas lebih tinggi daripada pernyataan Allow. Saat Pengguna RAM di luar bucket
myphotosmencoba membaca data dan alamat IP-nya tidak termasuk dalam Blok CIDR192.168.0.0/16, OSS mengembalikan error permission denied.
-
-
Contoh 4: Berikan akses read-only ke folder tertentu
Otorisasi tingkat folder merupakan penggunaan lanjutan kebijakan RAM. Izin yang diperlukan bergantung pada cara Pengguna RAM mengakses OSS.
Bucket berikut menyimpan foto yang diorganisir berdasarkan lokasi dan tahun:
Bucket
myphotosberisi folder yang dinamai berdasarkan lokasi, masing-masing dengan subfolder yang dinamai berdasarkan tahun.myphotos[Bucket] ├── beijing │ ├── 2014 │ └── 2015 ├── hangzhou │ ├── 2013 │ ├── 2014 │ └── 2015 // Berikan izin read-only pada folder ini kepada Pengguna RAM. └── qingdao ├── 2014 └── 2015Tujuannya adalah memberikan akses read-only ke folder
myphotos/hangzhou/2015/. Pilih skenario yang sesuai dengan kasus penggunaan Anda:-
Skenario 1: Akses objek langsung tanpa pencatatan folder
Pengguna RAM membaca objek menggunakan path lengkapnya tetapi tidak dapat mencantumkan isi folder. Lampirkan kebijakan ini ke layanan aplikasi yang mengambil objek berdasarkan path yang diketahui.
Dalam skenario ini, Pengguna RAM dapat menggunakan path lengkap untuk membaca data objek.
{ "Version": "1", "Statement": [ { "Sid": "AllowGetObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] } ] } -
Skenario 2: Akses folder melalui OSS CLI
Pengguna RAM dapat mencantumkan dan membaca objek di
myphotos/hangzhou/2015/menggunakan OSS CLI atau dengan memanggil operasi OSS secara langsung. Gunakan kebijakan ini untuk memberikan akses kepada pengembang perangkat lunak.Dalam skenario ini, Pengguna RAM dapat menggunakan OSS CLI atau memanggil operasi untuk membaca data dari folder tersebut.
Izin
ListObjectsdiperlukan untuk mencantumkan objek di folder. KondisiPrefixmembatasi pencatatan hanya pada folder target.{ "Version": "1", "Statement": [ { "Sid": "AllowGetObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] }, { "Sid": "AllowListObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:myphotos" ], "Condition": { "StringLike": { "oss:Prefix": "hangzhou/2015/*" } } } ] } -
Skenario 3: Akses folder melalui Konsol OSS
Pengguna RAM menavigasi ke
myphotos/hangzhou/2015/menggunakan Konsol OSS atau klien visual seperti Windows File Explorer.Dalam skenario ini, Pengguna RAM dapat menggunakan klien OSS visual (misalnya, Windows File Explorer) untuk mengakses folder
myphotos/hangzhou/2015/.Tiga set izin diperlukan agar navigasi konsol berfungsi dengan benar:
Izin untuk mencantumkan semua
bucketIzin untuk mencantumkan folder di bawah
myphotosIzin untuk mencantumkan folder di bawah
myphotos/hangzhou
Pernyataan pertama memberikan visibilitas konsol di semua bucket. Pernyataan kedua memberikan akses baca ke folder target. Pernyataan ketiga menggunakan kondisi
DelimiterdanPrefixuntuk mengaktifkan navigasi folder demi folder hingga kehangzhou/2015/.{ "Version": "1", "Statement": [ { "Sid": "AllowConsoleVisibility", "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Sid": "AllowGetObjectsInHangzhou2015", "Effect": "Allow", "Action": [ "oss:GetObject", "oss:GetObjectAcl" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] }, { "Sid": "AllowFolderNavigationInMyphotos", "Effect": "Allow", "Action": [ "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:myphotos" ], "Condition": { "StringLike": { "oss:Delimiter": "/", "oss:Prefix": [ "", "hangzhou/", "hangzhou/2015/*" ] } } } ] }
-