Bucket policy adalah kebijakan otorisasi yang dilampirkan pada bucket untuk memberikan akses kepada akun Alibaba Cloud lain, pengguna Resource Access Management (RAM), atau pengguna anonim. Anda dapat menggunakan bucket policy untuk menerapkan otorisasi cross-account, kontrol akses anonim, serta pembatasan akses berdasarkan alamat IP atau VPC.
Cara kerja
Bucket policy menggunakan model otorisasi berbasis resource. Kebijakan ini dilampirkan langsung pada bucket dan menentukan pihak mana (principal) yang dapat melakukan tindakan (action) tertentu terhadap resource tertentu dalam kondisi tertentu.
Saat pengguna mengirim permintaan akses, Object Storage Service (OSS) mengevaluasi semua kebijakan yang relevan, termasuk bucket policy dan kebijakan RAM. Evaluasi izin mengikuti prinsip deny-first eksplisit: aturan Deny apa pun akan segera memblokir permintaan dan mengungguli semua kebijakan Allow. Jika tidak ada aturan Deny maupun Allow, permintaan ditolak secara default.
Bucket policy memiliki aturan khusus yang memengaruhi pemilik bucket:
Jika Principal diatur ke karakter wildcard (*) dan kebijakan tidak mencakup Condition, maka kebijakan tersebut hanya berlaku untuk pengguna selain pemilik bucket.
Jika Principal diatur ke karakter wildcard (*) dan kebijakan mencakup Condition, maka kebijakan tersebut berlaku untuk semua pengguna, termasuk pemilik bucket.
Saat Anda mengonfigurasi beberapa aturan bucket policy untuk pengguna yang sama, izin pengguna tersebut merupakan gabungan dari semua aturan tersebut. Prinsip deny-first tetap berlaku.
Saat mengonfigurasi bucket policy atau kebijakan RAM, lakukan berdasarkan arsitektur akses jaringan Anda. Konfigurasikan kedua kondisi acs:SourceIp dan acs:SourceVpc untuk kontrol akses ganda. Menggunakan hanya satu kondisi dapat menimbulkan risiko keamanan. Misalnya, jika Anda hanya membatasi akses berdasarkan alamat IP publik, VPC masih dapat mengakses secara tidak sah melalui alamat IP egress yang sesuai.
Konfigurasikan kebijakan otorisasi bucket
OSS menyediakan dua cara untuk mengonfigurasi kebijakan: editor visual dan editor sintaks. Metode ini dirancang untuk kebutuhan konfigurasi yang berbeda.
Editor visual: Menyediakan pengalaman intuitif. Anda dapat menggunakan formulir untuk mengonfigurasi kebijakan dalam skenario otorisasi umum. Ini menyederhanakan proses konfigurasi.
Editor sintaks: Menggunakan format JSON untuk mendefinisikan kebijakan lengkap. Mendukung semua fitur lanjutan dan kombinasi kondisi kompleks. Memberikan fleksibilitas konfigurasi maksimal.
Metode kebijakan grafis
Buka halaman Buckets dan klik bucket target.
Di panel navigasi sebelah kiri, klik .
Pilih Add in GUI, lalu klik Authorize. Konfigurasikan otorisasi tersebut.
Item Konfigurasi
Deskripsi
Applied To
Pilih apakah akan mengotorisasi Whole Bucket atau Specific Resources.
Resource Paths
Jika Anda mengatur Applied To ke Whole Bucket, maka Resource Paths adalah
bucket-name/*.Jika Anda mengatur Applied To ke Specific Resources, masukkan folder atau objek individual yang ingin diotorisasi. Anda dapat menambahkan beberapa catatan.
Authorized User
Tentukan objek yang diotorisasi.
All Accounts (*): Mengotorisasi siapa saja, termasuk pengunjung anonim.
RAM User: Pilih pengguna RAM di bawah akun Alibaba Cloud saat ini.
Akun login saat ini harus berupa akun Alibaba Cloud atau pengguna RAM dengan izin manajemen untuk bucket ini dan izin
ListUsersdi konsol Resource Access Management (RAM). Jika tidak, Anda tidak dapat melihat daftar pengguna RAM untuk akun saat ini.Other Accounts: Masukkan UID akun lain atau pengguna RAM yang ingin diotorisasi, atau pengguna sementara yang dimulai dengan
arn:sts, sepertiarn:sts::1798************:assumed-role/role-name/session-name. Anda dapat mengotorisasi beberapa pengguna. Masukkan satu pengguna per baris.Saat objek yang diotorisasi adalah peran RAM, akun tersebut tidak dapat mengakses resource yang diotorisasi melalui konsol OSS. Akses harus dilakukan menggunakan tool seperti antarmuka baris perintah ossutil (CLI), kit pengembangan perangkat lunak (SDK), atau API.
Authorized Operation
Simple Settings: Pilih kombinasi umum operasi yang diotorisasi. Opsi meliputi Read-Only (excluding ListObject), Read-Only (including ListObject), Read/Write, Full Access, dan Deny Access.
CatatanUntuk memastikan pengguna layanan OSS-HDFS dapat mengakses folder
.dlsdata/dan objek apa pun di dalamnya, jangan mengatur operasi yang diotorisasi ke Deny Access saat mengonfigurasi bucket policy untuk bucket yang telah mengaktifkan layanan OSS-HDFS.Advanced Settings: Sesuaikan Effect (Allow atau Reject) dan Operation yang diotorisasi.
Condition (Opsional)
Tentukan kondisi agar otorisasi berlaku.
Access Method: Opsi meliputi HTTPS dan HTTP. Setelah memilih opsi, kebijakan hanya berlaku untuk permintaan akses yang menggunakan metode tersebut.
IP =: Masukkan daftar alamat IP. Setelah memilih opsi ini, kebijakan hanya berlaku jika alamat IP akses ada dalam daftar.
IP ≠: Masukkan daftar alamat IP. Setelah memilih opsi ini, kebijakan hanya berlaku jika alamat IP akses tidak ada dalam daftar.
VPC =: Pilih VPC dari akun saat ini atau masukkan VPC dari akun lain. Setelah memilih opsi ini, kebijakan hanya berlaku untuk permintaan akses dari VPC yang ditentukan.
VPC ≠: Pilih VPC dari akun saat ini atau masukkan VPC dari akun lain. Setelah memilih opsi ini, kebijakan hanya berlaku untuk permintaan akses yang bukan berasal dari VPC yang ditentukan.
Saat Anda mengonfigurasi beberapa kondisi, semua kondisi harus terpenuhi (hubungan AND) agar kebijakan berlaku.
Setelah memastikan konfigurasi otorisasi benar, klik OK untuk menerapkan bucket policy.
Pendekatan kebijakan berbasis sintaks
Buka halaman Buckets dan klik bucket target.
Di panel navigasi sebelah kiri, klik .
Pilih Add by Syntax, lalu klik Edit. Masukkan kebijakan otorisasi dalam format JSON di editor.
Contoh kebijakan: Untuk pengguna
20214760404935xxxx, jika permintaan akses tidak berasal dari jaringan VPCvpc-t4nlw426y44rd3iq4xxxx, semua operasi padaexample-bucketditolak.{ "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 otorisasi lengkap mencakup Version dan Statement.
Version: Versi kebijakan akses. Nilainya tetap
1dan tidak dapat diubah.Statement: Badan utama pernyataan kebijakan. Berisi satu atau lebih aturan otorisasi atau penolakan spesifik. Setiap pernyataan otorisasi mencakup Effect, Action, Principal, Resource, dan Condition.
Elemen Kebijakan
Deskripsi
Makna dalam contoh kebijakan
Effect
Efek kebijakan. Nilai yang valid adalah
AllowdanDeny.Tolak permintaan tersebut.
Action
Operasi spesifik yang dilakukan pada resource. Mendukung karakter wildcard
*.Menolak semua operasi OSS (
oss:*).Principal
Entitas yang dipengaruhi kebijakan, seperti pengguna, akun, atau peran.
Jika bidang Principal dikonfigurasi sebagai daftar kosong (
Principal:[]), perilakunya identik dengan dikonfigurasi untuk semua akun (Principal:["*"]).Kebijakan hanya berlaku untuk pengguna RAM
20214760404935xxxx.Resource
Cakupan resource yang dipengaruhi 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 (hubungan AND) agar kebijakan berlaku.
Kebijakan Deny ini hanya berlaku ketika VPC sumber permintaan tidak sama dengan
vpc-t4nlw426y44rd3iq4xxxx.Untuk daftar lengkap elemen otorisasi, lihat Sintaks dan elemen otorisasi OSS.
Setelah memastikan kebijakan otorisasi benar, klik Save dan ikuti petunjuk di layar untuk menyimpan kebijakan.
Konfigurasikan kebijakan otorisasi untuk bucket vektor
Untuk bucket vektor, Anda hanya dapat mengonfigurasi bucket policy menggunakan editor sintaks.
Buka halaman Vector Bucket List dan klik bucket vektor target.
Di panel navigasi sebelah kiri, klik .
Klik Edit dan masukkan kebijakan otorisasi dalam format JSON di editor.
Contoh kebijakan: Berikan izin kepada pengguna
20816353761158****untuk membaca dan menulis data vektor di tabel indeksindextestdivector-bucket-example.{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "oss:PutVectors", "oss:GetVectors" ], "Principal": [ "20816353761158****" ], "Resource": [ "acs:ossvector:*:*:vector-bucket-example/indextest" ] }] }Kebijakan otorisasi lengkap mencakup Version dan Statement.
Version: Versi kebijakan akses. Nilainya tetap
1dan tidak dapat diubah.Statement: Badan utama pernyataan kebijakan. Berisi satu atau lebih aturan otorisasi atau penolakan spesifik. Setiap pernyataan otorisasi mencakup Effect, Action, Principal, Resource, dan Condition.
Elemen Kebijakan
Deskripsi
Makna dalam contoh kebijakan
Effect
Efek kebijakan. Nilai yang valid adalah
AllowdanDeny.Mengizinkan permintaan.
Action
Operasi spesifik yang dilakukan pada resource. Mendukung karakter wildcard
*.Membaca dan menulis data vektor.
Principal
Entitas yang dipengaruhi kebijakan, seperti pengguna, akun, atau peran.
Jika bidang Principal dikonfigurasi sebagai daftar kosong (
Principal:[]), perilakunya identik dengan dikonfigurasi untuk semua akun (Principal:["*"]).Kebijakan hanya berlaku untuk pengguna RAM
20816353761158****.Resource
Cakupan resource yang dipengaruhi kebijakan.
Kebijakan berlaku untuk tabel indeks
indextestdivector-bucket-example.Condition
Kondisi di mana kebijakan berlaku.
Saat Anda mengonfigurasi beberapa kondisi, semua kondisi harus terpenuhi (hubungan AND) agar kebijakan berlaku.
Tidak ada.
Untuk daftar lengkap elemen otorisasi, lihat Sintaks dan elemen otorisasi OSS.
Setelah memastikan kebijakan otorisasi benar, klik Save dan ikuti petunjuk di layar untuk menyimpan kebijakan.
Skenario otorisasi umum
Skenario berikut menunjukkan penerapan bucket policy dalam bisnis nyata. Skenario ini mencakup berbagai kebutuhan seperti pemberian izin, pembatasan akses, dan kontrol keamanan. Setiap skenario menyediakan contoh konfigurasi kebijakan lengkap yang dapat Anda sesuaikan sesuai kebutuhan.
Skenario 1: Berikan izin baca dan tulis kepada pengguna RAM tertentu
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 untuk bucket target (example-bucket) kepada pengguna RAM tertentu (UID 27737962156157xxxx dan 20214760404935xxxx).
Karena kebijakan ini tidak memberikan izin untuk melihat daftar bucket, pengguna RAM yang ditentukan tidak dapat melihat bucket target di halaman Buckets. Untuk mengakses bucket tersebut, mereka dapat mengklik di panel navigasi sebelah kiri untuk menambahkan bucket ke favorit mereka.
{
"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: Berikan izin read-only untuk folder tertentu kepada pengguna RAM tertentu
Saat Anda perlu melindungi file proyek tertentu dalam bucket agar tidak dimodifikasi tetapi memungkinkan anggota proyek terkait untuk membacanya, Anda dapat memberikan izin read-only kepada pengguna RAM yang sesuai. Contoh berikut memberikan izin read-only untuk folder tertentu (dengan awalan hangzhou/2020 dan shanghai/2015) di bucket target (example-bucket) kepada pengguna RAM tertentu (UID 20214760404935xxxx).
Karena kebijakan ini tidak memberikan izin untuk melihat daftar bucket, pengguna RAM yang ditentukan tidak dapat melihat bucket target di halaman Buckets. Untuk mengakses bucket tersebut, mereka dapat mengklik di panel navigasi sebelah kiri untuk menambahkan bucket ke favorit mereka.
{
"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: Berikan izin kepada pengguna RAM tertentu untuk melihat bucket dan melihat daftar file-nya
Saat Anda perlu mengizinkan anggota tim atau mitra tertentu untuk melihat semua informasi tentang bucket dan melihat daftar file-nya, Anda dapat menggunakan bucket policy untuk memberikan izin yang sesuai kepada pengguna RAM tersebut. Contoh berikut memberikan izin kepada pengguna RAM tertentu untuk melihat semua informasi tentang bucket target (example-bucket) dan melihat daftar file-nya.
Karena kebijakan ini tidak memberikan izin untuk melihat daftar bucket, pengguna RAM yang ditentukan tidak dapat melihat bucket target di halaman Buckets. Untuk mengakses bucket tersebut, mereka dapat mengklik di panel navigasi sebelah kiri untuk menambahkan bucket ke favorit mereka.
{
"Version":"1",
"Statement":[
{
"Action":[
"oss:Get*",
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Effect":"Allow",
"Principal":[
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
]
}
]
}Skenario 4: Berikan izin kepada peran RAM tertentu untuk membaca file
Saat Anda perlu mengizinkan pengguna RAM atau aplikasi untuk mengakses file bucket secara sementara, Anda dapat membuat peran RAM dan memberikan izin yang sesuai. Pengguna RAM atau aplikasi tersebut mengasumsikan peran tersebut untuk mendapatkan kredensial akses sementara guna membaca file bucket. Contoh berikut memberikan izin untuk membaca semua file dalam bucket (example-bucket) kepada semua sesi di bawah satu peran RAM dan sesi tertentu di bawah peran RAM lain dalam akun Alibaba Cloud.
Saat memberikan izin kepada peran RAM, Principal harus mengikuti format ini: arn:sts::<uid>:assumed-role/<role-name>/<session-name>. Nilai untuk <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: Berikan izin kepada semua pengunjung untuk melihat daftar semua file
Saat bucket digunakan untuk berbagi sumber daya publik dan Anda ingin semua pengunjung dapat melihat nama file tetapi tidak mengakses konten file sebenarnya, Anda dapat mengatur Principal ke karakter wildcard asterisk (*) dan memberikan izin untuk melihat daftar semua file. Contoh berikut memberikan izin kepada semua pengunjung untuk melihat daftar semua file di bucket target (example-bucket).
{
"Version":"1",
"Statement":[
{
"Action":[
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Effect":"Allow",
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
]
}
]
}Skenario 6: Batasi akses dari jaringan publik
Saat Anda perlu melarang akses ke bucket tertentu dari jaringan publik, Anda dapat menggunakan kunci kondisi acs:SourceVpc untuk membuat pernyataan deny dan menambahkannya ke bucket policy. Ini memblokir permintaan dari jaringan non-VPC. Contoh berikut menolak akses ke bucket target (example-bucket) untuk semua pengunjung kecuali yang berasal dari jaringan 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: Batasi akses ke VPC tertentu
Saat Anda perlu membatasi akses ke bucket hanya untuk VPC tertentu, Anda dapat menggunakan kunci kondisi acs:SourceVpc untuk membuat pernyataan deny dan menambahkannya ke bucket policy. Ini memblokir permintaan dari VPC lain atau jaringan publik. Contoh berikut menolak semua pengunjung, kecuali yang berasal dari VPC tertentu (ID t4nlw426y44rd3iq4xxxx), untuk membaca file di bucket target (example-bucket).
Karena Principal dalam pernyataan deny berikut adalah karakter wildcard asterisk (
*) dan mencakup Condition, pernyataan deny tersebut berlaku untuk semua pengunjung, termasuk pemilik bucket.Pernyataan deny ini hanya membatasi akses dan tidak memberikan izin apa pun. Jika entitas yang diotorisasi memerlukan akses, Anda harus menambahkan pernyataan allow terpisah.
{
"Version":"1",
"Statement":[
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringNotEquals":{
"acs:SourceVpc":[
"vpc-t4nlw426y44rd3iq4xxxx"
]
}
}
}
]
}Skenario 8: Batasi akses ke alamat IP publik tertentu
Saat Anda perlu membatasi akses bucket hanya untuk alamat IP publik tertentu, Anda dapat menggunakan kunci kondisi acs:SourceIp untuk membuat pernyataan deny dan menambahkannya ke bucket policy. Ini memblokir permintaan dari alamat IP publik lainnya. Contoh berikut menolak semua pengunjung, kecuali yang berasal dari alamat IP publik tertentu 203.0.113.5, untuk membaca dari example-bucket.
Karena Principal dalam pernyataan deny berikut adalah karakter wildcard asterisk (
*) dan mencakup Condition, pernyataan deny tersebut berlaku untuk semua pengunjung, termasuk pemilik bucket.Pernyataan deny ini hanya membatasi akses dan tidak memberikan izin apa pun. Jika entitas yang diotorisasi memerlukan akses, Anda harus menambahkan pernyataan allow terpisah.
{
"Version":"1",
"Statement":[
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringLike":{
"acs:SourceVpc":[
"vpc-*"
]
}
}
},
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"NotIpAddress":{
"acs:SourceIp":[
"203.0.113.5"
]
}
}
}
]
}Skenario 9: Membatasi akses hanya ke blok CIDR tertentu dalam VPC tertentu
Saat Anda perlu membatasi akses ke bucket hanya untuk 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 jaringan publik. Permintaan dari alamat IP publik atau VPC lain gagal memenuhi kondisi yang ditentukan, sehingga memicu aturan deny.Gunakan kunci kondisi
acs:SourceIpdan kunci kondisiacs:SourceVpcuntuk membuat pernyataan deny yang memblokir permintaan dari luar blok CIDR VPC yang ditentukan.
Setelah Anda menambahkan kedua pernyataan deny ini ke bucket policy, aturan deny akan dipicu jika salah satu kondisi terpenuhi. Contoh berikut menolak semua pengunjung, kecuali yang berasal dari blok CIDR tertentu (192.168.0.0/16) dalam VPC tertentu (ID t4nlw426y44rd3iq4xxxx), untuk membaca file dari bucket target (example-bucket).
Karena Principal dalam pernyataan deny berikut adalah karakter wildcard asterisk (
*) dan mencakup Condition, pernyataan deny tersebut berlaku untuk semua pengunjung, termasuk pemilik bucket.Pernyataan deny ini hanya membatasi akses dan tidak memberikan izin apa pun. Jika entitas yang diotorisasi memerlukan akses, Anda harus menambahkan pernyataan allow terpisah.
{
"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: Batasi akses ke alamat IP publik tertentu atau VPC tertentu
Saat Anda perlu membatasi akses ke bucket hanya untuk alamat IP publik tertentu atau VPC tertentu, Anda harus membuat dua pernyataan deny:
Gunakan kunci kondisi
acs:SourceIpuntuk membuat pernyataan deny yang memblokir permintaan dari alamat IP publik lainnya. Secara bersamaan, gunakan operator kondisiStringNotLikedan kunci kondisiacs:SourceVpcuntuk mengecualikan permintaan dari VPC yang ditentukan.Gunakan kunci kondisi
acs:SourceVpcuntuk membuat pernyataan kebijakan deny yang memblokir permintaan dari VPC lain. Untuk mencegah permintaan dari alamat IP publik ditolak secara keliru, gunakan operator kondisiStringLikedengan kunciacs:SourceVpcuntuk membuat pengecualian.
Setelah Anda menambahkan kedua pernyataan deny ini ke bucket policy, aturan deny akan dipicu jika salah satu kondisi terpenuhi. Contoh berikut menolak semua pengunjung, kecuali yang berasal dari alamat IP publik tertentu (203.0.113.5) atau VPC tertentu (ID t4nlw426y44rd3iq4xxxx), untuk membaca file dari bucket target (example-bucket).
Karena Principal dalam pernyataan deny berikut adalah karakter wildcard asterisk (
*) dan mencakup Condition, pernyataan deny tersebut berlaku untuk semua pengunjung, termasuk pemilik bucket.Pernyataan deny ini hanya membatasi akses dan tidak memberikan izin apa pun. Jika entitas yang diotorisasi memerlukan akses, Anda harus menambahkan pernyataan allow terpisah.
{
"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: Tetapkan daftar hitam IP
Saat Anda perlu menolak akses ke bucket dan objek-objeknya dari alamat IP tertentu, Anda dapat menggunakan kebijakan daftar hitam IP. Dengan menetapkan kebijakan deny di bucket policy, Anda dapat memblokir semua permintaan akses dari alamat IP atau blok CIDR tertentu.
Karena Principal dalam pernyataan deny berikut adalah karakter wildcard asterisk (
*) dan mencakup Condition, pernyataan deny tersebut berlaku untuk semua pengunjung, termasuk pemilik bucket.Anda dapat mengonfigurasi beberapa alamat IP dan blok CIDR sekaligus. 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"
]
}
}
}
]
}Skenario 12: Wajibkan panggilan API menggunakan kredensial akses sementara
Untuk mewajibkan panggilan API menggunakan kredensial akses sementara, Anda dapat menambahkan pernyataan deny dengan kunci kondisi acs:AccessId ke bucket policy. Ini memblokir metode akses yang menggunakan kredensial non-sementara, seperti pasangan Kunci Akses jangka panjang dari akun Alibaba Cloud atau pengguna RAM. Contoh berikut menolak semua pengunjung, kecuali yang menggunakan kredensial akses sementara (dimulai dengan TMP. atau STS.), untuk melihat bucket target (example-bucket) dan melihat daftar file-nya.
{
"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: Larang pengaturan ACL bucket dan objek menjadi publik
Saat Anda perlu melarang pengaturan daftar kontrol akses (ACL) bucket dan objek menjadi 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. Upaya apa pun untuk mengatur ACL Bucket ke public-read atau public-read-write gagal memenuhi kondisi private dan memicu aturan deny.Gunakan kunci kondisi
oss:x-oss-object-acluntuk membuat pernyataan deny yang mencegah ACL objek diatur ke izin selainprivatedandefault.
Setelah Anda menambahkan kedua pernyataan deny ini ke bucket policy, aturan deny akan 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"
]
}
}
}
]
}Integrasi pengembangan dan tool
Selain konfigurasi manual di konsol, Anda juga dapat menggunakan tool grafis atau baris perintah, SDK, dan metode lain untuk mengonfigurasi bucket policy.
Gunakan tool grafis ossbrowser
ossbrowser mendukung operasi kebijakan tingkat bucket dan menyediakan pengalaman konfigurasi visual yang mirip dengan konsol. Instal dan login ke ossbrowser, lalu ikuti petunjuk di layar untuk mengonfigurasi bucket policy.
Gunakan tool baris perintah ossutil
Tetapkan kebijakan otorisasi menggunakan perintah put-bucket-policy.
CatatanSaat menetapkan kebijakan otorisasi untuk bucket vektor, gunakan perintah
ossutil vectors-api put-bucket-policy.Gunakan SDK
Anda dapat mengonfigurasi kebijakan menggunakan 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 secara langsung
Panggil operasi PutBucketPolicy untuk menetapkan kebijakan otorisasi untuk bucket.
Kuota dan batasan
Ukuran kebijakan: Anda dapat menambahkan beberapa bucket policy ke satu bucket. Ukuran total semua kebijakan tidak boleh melebihi 16 KB.
Panjang field: Panjang setiap field dalam bucket policy tidak boleh melebihi 4.095 byte.