Bucket Policy adalah kebijakan otorisasi berbasis resource yang dilampirkan ke bucket. Anda dapat menggunakannya untuk memberikan akses ke bucket Anda kepada akun Alibaba Cloud lain, pengguna RAM, atau pengguna anonim, sehingga memungkinkan skenario seperti otorisasi cross-account, kontrol akses anonim, serta pembatasan berdasarkan alamat IP atau VPC.
Cara kerja
Bucket Policy dilampirkan langsung ke bucket dan menentukan Principal mana yang dapat melakukan Action tertentu pada Resource tertentu di bawah Condition tertentu.
Saat pengguna mengirim permintaan akses, OSS mengevaluasi semua kebijakan yang relevan, termasuk Bucket Policy dan kebijakan RAM yang berlaku. Proses evaluasi mengikuti satu aturan: penolakan eksplisit memiliki prioritas lebih tinggi. Aturan Deny eksplisit apa pun akan segera memblokir permintaan tersebut, mengesampingkan semua kebijakan Allow. Jika tidak ada aturan Deny atau Allow yang berlaku, permintaan ditolak secara default.
Bucket Policy memiliki aturan evaluasi khusus untuk pemilik bucket:
Jika Principal diatur ke karakter wildcard (*) dan kebijakan tidak mencakup elemen
Condition, kebijakan tersebut berlaku untuk semua pengguna kecuali pemilik bucket.Jika Principal diatur ke karakter wildcard (*) dan kebijakan mencakup elemen
Condition, kebijakan tersebut berlaku untuk semua pengguna, termasuk pemilik bucket.
Jika Anda mengonfigurasi beberapa aturan Bucket Policy untuk pengguna yang sama, izin pengguna tersebut merupakan gabungan dari semua aturan yang berlaku. Prinsip bahwa penolakan eksplisit memiliki prioritas lebih tinggi tetap berlaku.
Saat Anda mengonfigurasi Bucket Policy, jika Anda mengonfigurasi
acs:SourceIp, Anda juga harus mengonfigurasiacs:SourceVpc.
Konfigurasi bucket policy
OSS menyediakan dua metode untuk mengonfigurasi Bucket Policy: antarmuka pengguna grafis (GUI) dan editor kebijakan berbasis sintaks. Masing-masing metode melayani kebutuhan yang berbeda.
Antarmuka pengguna grafis (GUI): Menyediakan pengalaman berbasis formulir yang intuitif untuk skenario otorisasi umum, sehingga menyederhanakan konfigurasi.
Kebijakan berbasis sintaks: Menggunakan editor JSON untuk menulis kebijakan lengkap. Metode ini mendukung semua fitur lanjutan dan kombinasi kondisi kompleks, memberikan fleksibilitas maksimal.
Antarmuka grafis
Buka halaman Buckets dan klik nama bucket target.
Di panel navigasi sebelah kiri, pilih .
Pilih Add in GUI, lalu klik Authorize untuk membuka panel konfigurasi kebijakan.
Parameter
Deskripsi
Applied To
Pilih apakah kebijakan berlaku untuk Whole Bucket atau untuk Specific Resources.
Resource Paths
Jika Applied To diatur ke Whole Bucket, maka Resource Paths adalah
bucket-name/*.Jika Anda mengatur Applied To ke Specific Resources, masukkan direktori atau objek yang ingin Anda otorisasi. Anda dapat menambahkan beberapa entri.
Authorized User
Tentukan principal.
All Accounts (*): Kebijakan berlaku untuk siapa saja, termasuk pengguna anonim.
RAM user: Pilih pengguna RAM yang termasuk dalam Akun Alibaba Cloud saat ini.
Akun saat ini harus merupakan akun root atau pengguna RAM dengan izin manajemen untuk bucket ini dan izin
ListUsersdi konsol RAM. Jika tidak, Anda tidak dapat melihat daftar pengguna RAM.Other accounts: Masukkan UID akun atau pengguna RAM lain, atau ARN pengguna peran yang diasumsikan yang dimulai dengan
arn:sts, sepertiarn:sts::1798************:assumed-role/role-name/session-name. Anda dapat mengotorisasi beberapa pengguna. Masukkan satu per baris.Jika principal yang diotorisasi adalah peran RAM, mereka harus mengakses resource secara terprogram menggunakan tool seperti ossutil, SDK, atau API.
Authorized Operation
Simple Settings: Pilih kombinasi operasi umum. Opsi termasuk Read-Only (excluding ListObject), Read-Only (including ListObject), Read/Write, Full Access, dan Deny Access.
PentingUntuk memastikan layanan OSS-HDFS dapat mengakses direktori
.dlsdata/dan semua objek di dalamnya, jangan mengatur aksi Deny Access saat Anda mengonfigurasi Bucket Policy untuk bucket yang telah mengaktifkan layanan OSS-HDFS. Jika Anda harus membatasi akses ke alamat IP jaringan atau VPC tertentu demi alasan keamanan, Anda perlu menambahkan konfigurasi khusus. Untuk informasi selengkapnya, lihat Prasyarat untuk menggunakan OSS-HDFS.Advanced Settings: Sesuaikan Effect (Allow atau Reject) dan Operation yang diizinkan.
Condition (Opsional)
Tentukan kondisi di mana kebijakan berlaku.
Access Method: Opsi termasuk HTTPS dan HTTP. Jika dipilih, kebijakan hanya berlaku untuk permintaan yang menggunakan protokol yang ditentukan.
IP =: Masukkan daftar alamat IP. Jika dipilih, kebijakan hanya berlaku untuk permintaan dari alamat IP yang ditentukan.
IP ≠: Masukkan daftar alamat IP. Jika dipilih, kebijakan hanya berlaku untuk permintaan yang tidak berasal dari alamat IP yang ditentukan.
VPC =: Pilih VPC dari akun saat ini atau masukkan ID VPC dari akun lain. Jika dipilih, kebijakan hanya berlaku untuk permintaan dari VPC yang ditentukan.
VPC ≠: Pilih VPC dari akun saat ini atau masukkan ID VPC dari akun lain. Jika dipilih, kebijakan hanya berlaku untuk permintaan yang tidak berasal dari VPC yang ditentukan.
Saat Anda mengonfigurasi beberapa kondisi, semua kondisi harus terpenuhi (logika AND) agar kebijakan berlaku.
Setelah memverifikasi pengaturan, klik OK.
Sintaks kebijakan
Buka halaman Buckets dan klik nama bucket target.
Di panel navigasi sebelah kiri, pilih .
Pilih Add by Syntax, lalu klik Edit. Di editor kebijakan, masukkan kebijakan berformat JSON.
Contoh kebijakan otorisasi: Untuk pengguna
20214760404935xxxx, jika permintaan akses tidak berasal dari jaringan VPCvpc-t4nlw426y44rd3iq4xxxx, maka tolak semua aksi padaexample-bucket.{ "Version": "1", "Statement": [ { "Effect": "Deny", "Action": "oss:*", "Principal": [ "20214760404935xxxx" ], "Resource": [ "acs:oss:*:174649585760xxxx:example-bucket", "acs:oss:*:174649585760xxxx:example-bucket/*" ], "Condition": { "StringNotEquals": { "acs:SourceVpc": "vpc-t4nlw426y44rd3iq4xxxx" } } } ] }Kebijakan lengkap mencakup elemen Version dan blok Statement.
Version: Versi kebijakan izin. Nilainya diatur ke
1dan tidak dapat diubah.Statement: Elemen utama kebijakan. Berisi satu atau beberapa aturan. Setiap aturan adalah pernyataan yang mencakup elemen seperti Effect, Action, Principal, Resource, dan Condition.
Elemen
Deskripsi
Contoh
Effect
Efek kebijakan. Nilainya dapat berupa
AllowatauDeny.Deny permintaan tersebut.
Action
Aksi spesifik yang dilakukan pada resource. Karakter wildcard
*didukung.Tolak semua aksi OSS (
oss:*).Principal
Pengguna, akun, atau peran yang menjadi sasaran kebijakan.
Jika bidang Principal diatur ke daftar kosong (yaitu,
Principal:[]), perilakunya identik dengan mengaturnya ke semua akun (yaitu,Principal:["*"]).Kebijakan hanya berlaku untuk pengguna RAM
20214760404935xxxx.Resource
Cakupan resource yang menjadi sasaran kebijakan.
Kebijakan berlaku untuk
example-bucketitu sendiri dan semua objek di dalamnya.Condition
Kondisi di mana kebijakan berlaku.
Saat Anda mengonfigurasi beberapa kondisi, semua kondisi harus terpenuhi (logika AND) agar kebijakan berlaku.
Kebijakan Deny ini hanya berlaku ketika VPC sumber tidak sama dengan
vpc-t4nlw426y44rd3iq4xxxx.Untuk daftar lengkap elemen kebijakan, lihat Elemen dan sintaks kebijakan.
Setelah memverifikasi bahwa kebijakan sudah benar, klik Save dan ikuti petunjuk di layar untuk menyimpan kebijakan.
Konfigurasi bucket policy vektor
Untuk bucket vektor, Anda hanya dapat mengonfigurasi Bucket Policy menggunakan editor kebijakan berbasis sintaks.
Buka halaman Vector Buckets dan klik nama bucket vektor target.
Di panel navigasi sebelah kiri, pilih .
Klik Edit. Di editor kebijakan, masukkan kebijakan berformat JSON.
Contoh kebijakan otorisasi: Berikan izin kepada pengguna
20816353761158****untuk membaca dan menulis data vektor pada tabel indeksindextestdivector-bucket-example.{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "oss:PutVectors", "oss:GetVectors" ], "Principal": [ "20816353761158****" ], "Resource": [ "acs:ossvector:*:*:vector-bucket-example/indextest" ] }] }Kebijakan lengkap mencakup elemen Version dan blok Statement.
Version: Versi kebijakan izin. Nilainya tetap
1dan tidak dapat diubah.Statement: Elemen utama kebijakan. Berisi satu atau beberapa aturan. Setiap aturan adalah pernyataan yang mencakup elemen seperti Effect, Action, Principal, Resource, dan Condition.
Elemen
Deskripsi
Contoh
Effect
Efek kebijakan dapat berupa
AllowatauDeny.Allow permintaan.
Action
Aksi spesifik yang dilakukan pada resource. Karakter wildcard
*didukung.Membaca dan menulis data vektor.
Principal
Pengguna, akun, atau peran yang menjadi sasaran kebijakan.
Jika bidang Principal diatur ke daftar kosong (yaitu,
Principal:[]), perilakunya identik dengan mengaturnya ke semua akun (yaitu,Principal:["*"]).Kebijakan hanya berlaku untuk pengguna RAM
20816353761158****.Resource
Cakupan resource yang menjadi sasaran kebijakan.
Kebijakan berlaku untuk tabel indeks
indextestdivector-bucket-example.Condition
Kondisi di mana kebijakan berlaku.
Saat Anda mengonfigurasi beberapa kondisi, semua kondisi harus terpenuhi (logika AND) agar kebijakan berlaku.
Tidak ada.
Untuk daftar lengkap elemen kebijakan, lihat Elemen dan sintaks kebijakan.
Setelah memverifikasi bahwa kebijakan sudah benar, klik Save dan ikuti petunjuk di layar untuk menyimpan kebijakan.
Kasus penggunaan
Skenario berikut menunjukkan penerapan khas Bucket Policy, mencakup pemberian izin, pembatasan akses, dan kontrol keamanan. Setiap skenario menyediakan contoh kebijakan lengkap yang dapat Anda sesuaikan dengan kebutuhan.
Skenario 1: Memberikan izin baca/tulis kepada pengguna RAM
Saat Anda perlu mengizinkan anggota tim atau mitra tertentu untuk mengunggah, mengunduh, dan mengelola file dalam bucket, Anda dapat menggunakan Bucket Policy untuk memberikan izin kepada pengguna RAM yang sesuai. Contoh berikut memberikan izin baca dan tulis pada bucket target (example-bucket) kepada pengguna RAM dengan UID 27737962156157xxxx dan 20214760404935xxxx.
Karena kebijakan ini tidak memberikan izin oss:ListBuckets, pengguna RAM yang ditentukan tidak dapat melihat bucket di halaman Buckets. Untuk mengakses bucket, pengguna RAM dapat menambahkan path bucket ke di panel navigasi kiri konsol.
{
"Version":"1",
"Statement":[
{
"Effect":"Allow",
"Action":[
"oss:GetObject",
"oss:PutObject",
"oss:GetObjectAcl",
"oss:PutObjectAcl",
"oss:AbortMultipartUpload",
"oss:ListParts",
"oss:RestoreObject",
"oss:GetVodPlaylist",
"oss:PostVodPlaylist",
"oss:PublishRtmpStream",
"oss:ListObjectVersions",
"oss:GetObjectVersion",
"oss:GetObjectVersionAcl",
"oss:RestoreObjectVersion"
],
"Principal":[
"27737962156157xxxx",
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
]
},
{
"Effect":"Allow",
"Action":[
"oss:ListObjects"
],
"Principal":[
"27737962156157xxxx",
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
],
"Condition":{
"StringLike":{
"oss:Prefix":[
"*"
]
}
}
}
]
}Skenario 2: Memberikan izin read-only pada direktori
Jika Anda ingin melindungi file proyek tertentu dalam bucket agar tidak dimodifikasi tetapi memungkinkan anggota proyek membacanya, Anda dapat memberikan izin read-only kepada pengguna RAM yang sesuai. Misalnya, Anda dapat memberikan izin read-only kepada pengguna RAM dengan UID 20214760404935xxxx untuk direktori yang memiliki awalan hangzhou/2020 dan shanghai/2015 di bucket example-bucket.
Karena kebijakan ini tidak memberikan izin oss:ListBuckets, pengguna RAM yang ditentukan tidak dapat melihat bucket di halaman Buckets. Untuk mengakses bucket, pengguna RAM dapat menambahkan path bucket ke di panel navigasi kiri konsol.
{
"Version":"1",
"Statement":[
{
"Action":[
"oss:GetObject",
"oss:GetObjectAcl",
"oss:GetObjectVersion",
"oss:GetObjectVersionAcl"
],
"Effect":"Allow",
"Principal":[
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/hangzhou/2020/*",
"acs:oss:*:174649585760xxxx:example-bucket/shanghai/2015/*"
]
},
{
"Action":[
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Condition":{
"StringLike":{
"oss:Prefix":[
"hangzhou/2020/*",
"shanghai/2015/*"
]
}
},
"Effect":"Allow",
"Principal":[
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
]
}
]
}Skenario 3: Memberikan izin untuk melihat bucket dan mencantumkan objek
Jika Anda perlu mengizinkan anggota tim atau mitra tertentu untuk melihat semua informasi tentang bucket dan mencantumkan file di dalamnya, Anda dapat menggunakan Bucket Policy untuk memberikan izin yang diperlukan kepada pengguna RAM yang sesuai. Contoh berikut memberikan izin kepada pengguna RAM tertentu untuk melihat semua informasi tentang bucket target (example-bucket) dan mencantumkan file di dalamnya.
Karena kebijakan ini tidak memberikan izin oss:ListBuckets, pengguna RAM yang ditentukan tidak dapat melihat bucket di halaman Buckets. Untuk mengakses bucket, pengguna RAM dapat menambahkan path bucket ke di panel navigasi kiri konsol.
{
"Version":"1",
"Statement":[
{
"Action":[
"oss:Get*",
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Effect":"Allow",
"Principal":[
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
]
}
]
}Skenario 4: Memberikan izin kepada peran RAM untuk membaca objek
Jika Anda perlu mengizinkan pengguna RAM atau aplikasi untuk sementara mengakses file dalam bucket, Anda dapat membuat peran RAM dan memberikan izin yang diperlukan. Dengan mengasumsikan peran tersebut, pengguna RAM atau aplikasi memperoleh kredensial akses sementara untuk membaca file dalam bucket. Contoh berikut memberikan izin untuk membaca semua file dalam bucket example-bucket kepada semua sesi dari satu peran RAM dan sesi tertentu dari peran RAM lain di bawah akun Alibaba Cloud.
Saat memberikan izin kepada peran RAM, Principal harus menggunakan format berikut: arn:sts::<uid>:assumed-role/<role-name>/<session-name>. Dalam format ini, nilai <role-name> dan <session-name> bersifat case-sensitive.
{
"Version": "1",
"Statement": [
{
"Action": [
"oss:GetObject"
],
"Effect": "Allow",
"Principal": [
"arn:sts::10323xxxxx72056:assumed-role/role-name/session-name",
"arn:sts::10323xxxxx72056:assumed-role/role2-name/*"
],
"Resource": [
"acs:oss:*:10323xxxxx72056:example-bucket/*"
]
}
]
}Skenario 5: Memberikan izin kepada semua pengguna untuk mencantumkan objek
Saat bucket digunakan untuk berbagi resource publik dan Anda ingin mengizinkan semua pengunjung melihat nama file tetapi tidak mengakses konten file sebenarnya, Anda dapat mengatur Principal ke karakter wildcard (*) dan memberikan izin untuk mencantumkan semua file. Contoh berikut memberikan izin kepada semua pengunjung untuk mencantumkan semua file dalam bucket target (example-bucket).
{
"Version":"1",
"Statement":[
{
"Action":[
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Effect":"Allow",
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
]
}
]
}Skenario 6: Memblokir akses dari internet
Saat Anda perlu menolak akses ke bucket tertentu dari internet publik, Anda dapat menggunakan kunci kondisi acs:SourceVpc untuk membuat pernyataan kebijakan Deny dan menambahkannya ke Bucket Policy guna memblokir permintaan yang tidak berasal dari VPC. Permintaan dari internet publik ditolak karena tidak sesuai dengan awalan jaringan VPC yang ditentukan. Contoh berikut menolak akses ke bucket target (example-bucket) untuk semua permintaan yang tidak berasal dari VPC.
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": "oss:*",
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:174649585760xxxx:example-bucket/*",
"acs:oss:*:174649585760xxxx:example-bucket"
],
"Condition": {
"StringNotLike": {
"acs:SourceVpc": [
"vpc-*"
]
}
}
}
]
}Skenario 7: Mengizinkan akses hanya dari VPC tertentu
Untuk membatasi akses ke bucket hanya dari VPC tertentu, Anda dapat menambahkan pernyataan kebijakan Deny dengan kunci kondisi acs:SourceVpc ke Bucket Policy. Hal ini menolak permintaan dari VPC lain atau internet publik karena permintaan tersebut tidak berasal dari ID VPC yang ditentukan. Contoh berikut menolak semua pemohon untuk membaca file dalam bucket target example-bucket kecuali jika permintaan berasal dari VPC yang ditentukan dengan ID t4nlw426y44rd3iq4xxxx.
Karena
Principaldalam pernyataan kebijakan deny berikut adalah karakter wildcard asterisk (*) dan pernyataan tersebut mencakupCondition, pernyataan kebijakan deny berlaku untuk semua pengakses, termasuk pemilik bucket.Pernyataan Deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin akses, Anda juga harus menambahkan pernyataan Allow untuk memberikan izin yang diperlukan.
Jika layanan OSS-HDFS diaktifkan untuk bucket, Anda harus menambahkan kondisi berikut ke semua pernyataan Deny. Hal ini memastikan bahwa layanan backend OSS-HDFS dapat membaca dan menulis ke bucket melalui jaringan klasik:
"StringNotLike": { "oss:ClassicIntranet": [ "true" ] }
{
"Version":"1",
"Statement":[
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringNotEquals":{
"acs:SourceVpc":[
"vpc-t4nlw426y44rd3iq4xxxx"
]
}
}
}
]
}Skenario 8: Mengizinkan akses hanya dari alamat IP publik tertentu
Untuk membatasi akses ke bucket hanya dari alamat IP publik tertentu, buat pernyataan kebijakan Deny yang menggunakan kunci kondisi acs:SourceIp dan tambahkan ke Bucket Policy. Kebijakan ini memblokir permintaan dari alamat IP publik lainnya. Permintaan dari alamat IP publik lain tidak memenuhi kondisi IP yang ditentukan dan karenanya memicu aturan penolakan. Contoh berikut menolak operasi baca pada example-bucket untuk semua pengunjung kecuali yang berasal dari alamat IP publik 203.0.113.5.
Karena
Principaldalam pernyataan kebijakan deny berikut adalah karakter wildcard asterisk (*) dan pernyataan tersebut mencakupCondition, pernyataan kebijakan deny berlaku untuk semua pengakses, termasuk pemilik bucket.Pernyataan Deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin akses, Anda juga harus menambahkan pernyataan Allow untuk memberikan izin yang diperlukan.
Jika layanan OSS-HDFS diaktifkan untuk bucket, Anda harus menambahkan kondisi berikut ke semua pernyataan Deny. Hal ini memastikan bahwa layanan backend OSS-HDFS dapat membaca dan menulis ke bucket melalui jaringan klasik:
"StringNotLike": { "oss:ClassicIntranet": [ "true" ] }
{
"Version": "1",
"Statement": [{
"Effect": "Deny",
"Action": [
"oss:GetObject"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition": {
"NotIpAddress": {
"acs:SourceIp": [
"203.0.113.5"
]
},
"StringNotLike": {
"acs:SourceVpc": [
"vpc-*"
]
}
}
},
{
"Effect": "Deny",
"Action": [
"oss:GetObject"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition": {
"StringLike": {
"acs:SourceVpc": [
"vpc-*"
]
}
}
}
]
}Skenario 9: Mengizinkan akses dari rentang IP tertentu dalam VPC
Untuk membatasi akses bucket ke rentang alamat IP tertentu dalam VPC tertentu, Anda harus membuat dua pernyataan Deny:
Gunakan kunci kondisi
acs:SourceVpcuntuk membuat pernyataan kebijakan deny yang memblokir permintaan dari VPC lain atau internet publik. Permintaan dari alamat IP publik atau VPC lain diidentifikasi sebagai tidak memenuhi kondisi IP yang ditentukan, yang memicu aturan deny.Gunakan kunci kondisi
acs:SourceIpdanacs:SourceVpcuntuk membuat pernyataan kebijakan deny yang memblokir permintaan dari luar segmen jaringan VPC yang ditentukan.
Setelah menambahkan dua pernyataan Deny di atas ke Bucket Policy, akses ditolak jika salah satu kondisi terpenuhi. Contoh berikut menolak semua permintaan untuk membaca objek dari bucket target (example-bucket) kecuali permintaan yang berasal dari rentang alamat IP 192.168.0.0/16 dalam VPC yang ditentukan (ID: t4nlw426y44rd3iq4xxxx).
Karena
Principaldalam pernyataan kebijakan deny berikut adalah karakter wildcard asterisk (*) dan pernyataan tersebut mencakupCondition, pernyataan kebijakan deny berlaku untuk semua pengakses, termasuk pemilik bucket.Pernyataan Deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin akses, Anda juga harus menambahkan pernyataan Allow untuk memberikan izin yang diperlukan.
Jika layanan OSS-HDFS diaktifkan untuk bucket, Anda harus menambahkan kondisi berikut ke semua pernyataan Deny. Hal ini memastikan bahwa layanan backend OSS-HDFS dapat membaca dan menulis ke bucket melalui jaringan klasik:
"StringNotLike": { "oss:ClassicIntranet": [ "true" ] }
{
"Version":"1",
"Statement":[
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringNotEquals":{
"acs:SourceVpc":[
"vpc-t4nlw426y44rd3iq4xxxx"
]
}
}
},
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringEquals":{
"acs:SourceVpc":[
"vpc-t4nlw426y44rd3iq4xxxx"
]
},
"NotIpAddress":{
"acs:SourceIp":[
"192.168.0.0/16"
]
}
}
}
]
}Skenario 10: Mengizinkan akses dari IP atau VPC tertentu
Untuk membatasi akses bucket ke alamat IP publik tertentu atau VPC tertentu, Anda harus membuat dua pernyataan Deny:
Buat pernyataan kebijakan deny yang menggunakan kunci kondisi
acs:SourceIpuntuk memblokir permintaan dari alamat IP publik lain, dan operator kondisiStringNotLikeserta kunci kondisiacs:SourceVpcuntuk mengecualikan permintaan dari VPC yang ditentukan.Gunakan kunci kondisi
acs:SourceVpcuntuk membuat pernyataan kebijakan deny yang memblokir permintaan dari VPC lain. Pada saat yang sama, gunakan operator kondisiStringLikedengan kunciacs:SourceVpcuntuk mengecualikan permintaan dari alamat IP publik yang ditentukan. Hal ini mencegah permintaan tersebut salah ditolak karena tidak memenuhi kondisi ID VPC.
Setelah dua pernyataan kebijakan deny di atas ditambahkan ke Bucket Policy, permintaan ditolak jika salah satu kondisi terpenuhi. Contoh berikut menolak semua pengunjung, kecuali yang berasal dari alamat IP publik 203.0.113.5 atau VPC t4nlw426y44rd3iq4xxxx, untuk membaca file dalam bucket target example-bucket.
Karena
Principaldalam pernyataan kebijakan deny berikut adalah karakter wildcard asterisk (*) dan pernyataan tersebut mencakupCondition, pernyataan kebijakan deny berlaku untuk semua pengakses, termasuk pemilik bucket.Pernyataan Deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin akses, Anda juga harus menambahkan pernyataan Allow untuk memberikan izin yang diperlukan.
Jika layanan OSS-HDFS diaktifkan untuk bucket, Anda harus menambahkan kondisi berikut ke semua pernyataan Deny. Hal ini memastikan bahwa layanan backend OSS-HDFS dapat membaca dan menulis ke bucket melalui jaringan klasik:
"StringNotLike": { "oss:ClassicIntranet": [ "true" ] }
{
"Version":"1",
"Statement":[
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringNotLike":{
"acs:SourceVpc":[
"vpc-*"
]
},
"NotIpAddress":{
"acs:SourceIp":[
"203.0.113.5"
]
}
}
},
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringLike":{
"acs:SourceVpc":[
"vpc-*"
]
},
"StringNotEquals":{
"acs:SourceVpc":[
"vpc-t4nlw426y44rd3iq4xxxx"
]
}
}
}
]
}Skenario 11: Mengonfigurasi daftar hitam IP
Untuk menolak akses ke bucket dan objeknya dari alamat IP tertentu, Anda dapat menggunakan kebijakan daftar hitam IP. Dengan mengonfigurasi kebijakan Deny dalam Bucket Policy, Anda dapat memblokir semua permintaan akses dari alamat IP atau rentang alamat IP yang ditentukan.
Karena
Principaldalam pernyataan kebijakan deny berikut adalah karakter wildcard asterisk (*) dan pernyataan tersebut mencakupCondition, pernyataan kebijakan deny berlaku untuk semua pengakses, termasuk pemilik bucket.Anda dapat mengonfigurasi beberapa alamat IP dan rentang alamat IP. Pisahkan dengan koma.
{
"Version": "1",
"Statement": [{
"Effect": "Deny",
"Action": "oss:*",
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:174649585760xxxx:example-bucket/*",
"acs:oss:*:174649585760xxxx:example-bucket"
],
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"101.***.***.100"
]
},
"StringLike": {
"acs:SourceVpc": [
"*"
]
}
}
}]
}Skenario 12: Mengharuskan kredensial sementara untuk panggilan API
Saat Anda mengakses resource bucket melalui API, Anda dapat mewajibkan penggunaan kredensial akses sementara. Untuk melakukannya, tambahkan pernyataan kebijakan Deny yang menggunakan kunci kondisi acs:AccessId ke Bucket Policy Anda. Pernyataan ini memblokir akses dari kredensial non-sementara lainnya, seperti kunci akses jangka panjang dari akun Alibaba Cloud atau pengguna RAM. Upaya akses yang menggunakan kredensial non-sementara akan memicu aturan Deny dalam kebijakan. Contoh berikut menolak semua pengunjung, kecuali yang menggunakan kredensial akses sementara yang dimulai dengan TMP. atau STS., untuk melihat bucket target (example-bucket) dan mencantumkan file di dalamnya.
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action":[
"oss:Get*",
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition": {
"StringNotLike": {
"acs:AccessId": [
"TMP.*",
"STS.*"
]
}
}
}
]
}Skenario 13: Melarang ACL publik untuk bucket dan objek
Untuk melarang pengaturan ACL bucket dan objek agar mengizinkan akses publik, Anda dapat membuat dua pernyataan Deny:
Gunakan kunci kondisi
oss:x-oss-acluntuk membuat pernyataan kebijakan Deny yang mencegah ACL Bucket diatur ke izin selainprivate. Setiap upaya mengatur izin ke public-read atau public-read-write diidentifikasi sebagai pelanggaran terhadap kondisi private dan memicu aturan deny.Gunakan kunci kondisi
oss:x-oss-object-acluntuk membuat pernyataan kebijakan deny guna mencegah ACL Objek diatur ke izin selainprivateataudefault.
Setelah menambahkan dua pernyataan kebijakan deny di atas ke Bucket Policy, tindakan deny dipicu jika salah satu kondisi terpenuhi. Contoh berikut menolak operasi yang mengatur izin akses publik pada bucket target (example-bucket).
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"oss:PutBucketAcl"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:*:example-bucket"
],
"Condition": {
"StringNotEquals": {
"oss:x-oss-acl": "private"
}
}
},
{
"Effect": "Deny",
"Action": [
"oss:PutObjectAcl"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:*:example-bucket/*"
],
"Condition": {
"StringNotEquals": {
"oss:x-oss-object-acl": [
"private",
"default"
]
}
}
}
]
}Pengembangan dan integrasi tool
Selain menggunakan konsol, Anda dapat mengelola otorisasi Bucket Policy dengan tool grafis, tool baris perintah, dan SDK.
Gunakan tool grafis ossbrowser
ossbrowser menyediakan antarmuka visual, mirip dengan konsol, untuk mengelola kebijakan bucket. Setelah Anda menginstal dan login ke ossbrowser, ikuti petunjuk di layar untuk mengonfigurasi Bucket Policy.
Gunakan tool baris perintah ossutil
Tetapkan kebijakan otorisasi dengan menjalankan perintah put-bucket-policy.
CatatanUntuk menetapkan kebijakan otorisasi untuk bucket vektor, jalankan perintah
ossutil vectors-api put-bucket-policy.Gunakan SDK
Anda dapat mengonfigurasi kebijakan dengan menggunakan SDK untuk berbagai bahasa pemrograman, seperti Java SDK, Python SDK, Go SDK, dan Node.js SDK. Untuk informasi lebih lanjut tentang SDK yang didukung, lihat Referensi SDK.
Panggil API
Panggil operasi PutBucketPolicy untuk menetapkan kebijakan otorisasi untuk bucket.
Kuota dan Batasan
Ukuran kebijakan: Satu bucket hanya dapat memiliki satu Bucket Policy. Kebijakan ini dapat berisi beberapa aturan, tetapi ukuran totalnya tidak boleh melebihi 16 KB.
Panjang field: Panjang setiap field dalam Bucket Policy tidak boleh melebihi 4.095 byte.