Bucket Policy adalah kebijakan otorisasi yang dilampirkan pada sebuah bucket. Anda dapat menggunakan Bucket Policy untuk memberikan otorisasi kepada akun Alibaba Cloud lain, pengguna RAM, atau pengguna anonim agar dapat mengakses bucket tersebut. Hal ini memungkinkan penerapan 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 langsung dilampirkan pada bucket dan mendefinisikan principal mana yang dapat melakukan tindakan tertentu terhadap resource dalam kondisi spesifik.
Ketika pengguna mengirim permintaan akses, OSS mengevaluasi semua kebijakan yang relevan, termasuk Bucket Policy dan Kebijakan RAM. Evaluasi izin mengikuti prinsip deny-first: aturan Deny eksplisit segera memblokir permintaan dan memiliki prioritas lebih tinggi daripada semua aturan Allow. Jika tidak ada aturan Deny maupun Allow, permintaan secara default ditolak.
Bucket Policy memiliki aturan khusus untuk pemilik bucket:
Jika principal diatur ke karakter wildcard (*) dan kebijakan tidak mencakup kondisi, maka kebijakan tersebut berlaku hanya untuk pengguna selain pemilik bucket.
Jika principal diatur ke karakter wildcard (*) dan kebijakan mencakup kondisi, maka kebijakan tersebut berlaku untuk semua pengguna, termasuk pemilik bucket dan pengguna anonim. Aturan deny juga berlaku untuk pemilik bucket, yang dapat menyebabkan seluruh bucket menjadi tidak dapat diakses. Aturan allow juga memberikan akses kepada pengguna anonim, yang berpotensi membocorkan data Anda.
Jika Anda mengonfigurasi beberapa pernyataan Bucket Policy untuk pengguna yang sama, izin pengguna tersebut merupakan gabungan (union) dari semua pernyataan tersebut, dengan tetap mengikuti prinsip deny-first.
Kunci kondisi
acs:SourceIphanya mencocokkan alamat IP sumber dari permintaan dan tidak membedakan apakah alamat IP tersebut berasal dari jaringan publik atau VPC. Artinya, jika Anda hanya menggunakanacs:SourceIpuntuk membatasi akses, permintaan dari VPC lain yang menggunakan rentang alamat IP yang sama juga akan diizinkan, sehingga menimbulkan risiko akses tidak sah. Oleh karena itu, saat mengonfigurasi Bucket Policy, jika Anda menentukanacs:SourceIp, Anda juga harus menentukanacs:SourceVpcuntuk secara eksplisit mengidentifikasi sumber jaringan permintaan tersebut.Pembatasan ini hanya berlaku untuk Bucket Policy baru. Bucket Policy yang sudah ada tidak terpengaruh. Namun, memodifikasi Bucket Policy yang sudah ada dianggap sebagai pengajuan baru dan tunduk pada pembatasan ini.
Konfigurasi kebijakan bucket
OSS menyediakan dua metode untuk mengonfigurasi kebijakan sesuai skenario berbeda: metode grafis dan metode sintaks.
Metode grafis: Menyediakan pengalaman berbasis formulir yang intuitif untuk skenario otorisasi umum, sehingga menyederhanakan konfigurasi.
Metode sintaks: Menggunakan format JSON untuk menulis kebijakan lengkap. Metode ini mendukung semua fitur lanjutan dan kombinasi kondisi kompleks, memberikan fleksibilitas konfigurasi maksimal.
Metode grafis
Buka daftar Buckets dan klik bucket target.
Di panel navigasi sebelah kiri, klik .
Pilih Add in GUI, lalu klik Authorize.
Parameter
Deskripsi
Applied To
Pilih apakah akan memberikan izin pada Whole Bucket atau pada Specific Resources.
Resource Paths
Jika Anda mengatur Applied To ke Whole Bucket, maka Resource Paths diatur menjadi
bucket-name/*.Jika Anda mengatur Applied To ke Specific Resources, masukkan direktori atau objek yang ingin Anda beri otorisasi. Anda dapat menambahkan beberapa entri.
Authorized User
Tentukan principal yang akan diberikan izin.
All Accounts (*): Memberikan izin kepada siapa saja, termasuk pengguna anonim.
RAM User: Pilih pengguna RAM yang termasuk dalam akun Alibaba Cloud saat ini.
Akun yang sedang login harus merupakan Akun Alibaba Cloud (juga dikenal sebagai akun root) atau pengguna RAM yang memiliki izin manajemen atas bucket tersebut dan izin
ListUsersdi konsol RAM. Jika tidak, Anda tidak dapat melihat daftar pengguna RAM untuk akun saat ini.Other Accounts: Masukkan UID akun atau pengguna RAM lain yang ingin diberi otorisasi, atau pengguna temporary dengan kredensial yang diawali dengan
arn:sts, sepertiarn:sts::1798************:assumed-role/role-name/session-name. Anda dapat memberikan otorisasi kepada beberapa pengguna. Masukkan satu pengguna per baris.Jika izin diberikan kepada peran RAM, peran tersebut tidak dapat digunakan untuk mengakses resource yang diotorisasi dari konsol OSS. Anda harus mengakses resource tersebut menggunakan tool baris perintah seperti ossutil, SDK, atau API.
Authorized Operation
Simple Settings: Pilih kombinasi umum operasi yang diizinkan. Opsi meliputi Read-Only (excluding ListObject), Read-Only (including ListObject), Read/Write, Full Access, dan Deny Access.
Advanced Settings: Sesuaikan Effect (Allow atau Reject) dan Operation.
Condition (Opsional)
Tentukan kondisi di mana kebijakan berlaku.
Access Method: Opsi meliputi HTTPS dan HTTP. Setelah memilih opsi, kebijakan hanya berlaku untuk permintaan akses yang menggunakan metode yang dipilih.
IP =: Masukkan daftar alamat IP. Jika memilih opsi ini, kebijakan hanya berlaku untuk permintaan akses dari alamat IP yang ditentukan.
IP ≠: Masukkan daftar alamat IP. Jika memilih opsi ini, kebijakan hanya berlaku untuk permintaan akses yang bukan berasal dari alamat IP yang ditentukan.
VPC =: Pilih VPC milik akun saat ini atau masukkan VPC milik akun lain. Jika memilih opsi ini, kebijakan hanya berlaku untuk permintaan akses dari VPC yang ditentukan.
VPC ≠: Pilih VPC milik akun saat ini atau masukkan VPC milik akun lain. Jika 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 (relasi AND).
Setelah memastikan konfigurasi sudah benar, klik OK untuk menerapkan Bucket Policy.
Metode sintaks
Buka daftar Buckets dan klik bucket target.
Di panel navigasi sebelah kiri, klik .
Pilih Add by Syntax, lalu klik Edit. Di editor, masukkan kebijakan otorisasi dalam format JSON.
Contoh kebijakan: Tolak pengguna
20214760404935xxxxdari semua operasi padaexample-bucketjika permintaan akses tidak berasal dari VPCvpc-t4nlw426y44rd3iq4xxxx.{ "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 kebijakan. Berisi satu atau beberapa aturan spesifik. Setiap aturan mencakup Effect, Action, Principal, Resource, dan Condition.
Elemen kebijakan
Deskripsi
Makna dalam contoh
Effect
Efek kebijakan. Nilai yang valid adalah
AllowdanDeny.Menolak permintaan.
Action
Tindakan spesifik yang dilakukan pada resource. Mendukung karakter wildcard
*.Menolak semua tindakan OSS (
oss:*).Principal
Pengguna, akun, atau peran yang dikenai kebijakan.
Menetapkan bidang Principal ke daftar kosong (
<code class="inline-code___1opEe" data-tag="code" id="396b0553f4p34">Principal:[]) sama dengan menetapkannya untuk semua akun (<code class="inline-code___1opEe" data-tag="code" id="86478af1e5pzx">Principal:["*"]).Kebijakan hanya berlaku untuk pengguna RAM
20214760404935xxxx.Resource
Resource yang dikenai kebijakan.
Kebijakan berlaku untuk bucket
example-bucketitu sendiri dan semua objek di dalamnya.Condition
Kondisi di mana kebijakan berlaku.
Saat Anda mengonfigurasi beberapa kondisi, semua kondisi harus terpenuhi (relasi AND).
Kebijakan Deny ini hanya berlaku ketika VPC sumber permintaan bukan
vpc-t4nlw426y44rd3iq4xxxx.Untuk daftar lengkap elemen kebijakan, lihat Sintaks dan elemen otorisasi.
Setelah memastikan kebijakan otorisasi sudah benar, klik Save dan ikuti petunjuk di layar.
Konfigurasikan bucket policy vektor
Bucket vektor saat ini hanya mendukung konfigurasi Bucket Policy menggunakan metode sintaks.
Buka daftar Vector Buckets dan klik bucket vektor target.
Di panel navigasi sebelah kiri, klik .
Klik Edit. Di editor, masukkan kebijakan otorisasi dalam format JSON.
Contoh kebijakan: 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 otorisasi lengkap mencakup Version dan Statement.
Version: Versi kebijakan akses. Nilainya tetap
1dan tidak dapat diubah.Statement: Badan utama kebijakan. Berisi satu atau beberapa aturan spesifik. Setiap aturan mencakup Effect, Action, Principal, Resource, dan Condition.
Elemen kebijakan
Deskripsi
Makna dalam contoh
Effect
Efek kebijakan. Nilai yang valid adalah
AllowdanDeny.Mengizinkan permintaan.
Action
Tindakan spesifik yang dilakukan pada resource. Mendukung karakter wildcard
*.Membaca dan menulis data vektor.
Principal
Pengguna, akun, atau peran yang dikenai kebijakan.
Menyetel bidang Principal ke daftar kosong (
<code class="inline-code___1opEe" data-init-id="396b0553f4p34" data-tag="code" id="38fd39c90a131">Principal:[]) identik dengan menyetelnya untuk semua akun (<code class="inline-code___1opEe" data-init-id="86478af1e5pzx" data-tag="code" id="da174b022cl89">Principal:["*"]).Kebijakan hanya berlaku untuk pengguna RAM
20816353761158****.Resource
Resource yang dikenai kebijakan.
Kebijakan berlaku untuk tabel indeks
indextestdi bucketvector-bucket-example.Condition
Kondisi di mana kebijakan berlaku.
Saat Anda mengonfigurasi beberapa kondisi, semua kondisi harus terpenuhi (relasi AND).
Tidak ada.
Untuk daftar lengkap elemen kebijakan, lihat Sintaks dan elemen otorisasi.
Setelah memastikan kebijakan otorisasi sudah benar, klik Save dan ikuti petunjuk di layar.
Konfigurasikan kebijakan OSS-HDFS
Untuk memastikan pengguna layanan OSS-HDFS dapat mengakses direktori .dlsdata/ dan objek-objeknya, jangan mengatur operasi yang diizinkan ke Deny Access saat mengonfigurasi Bucket Policy untuk bucket yang diaktifkan OSS-HDFS. Untuk informasi lebih lanjut, lihat Prasyarat penggunaan OSS-HDFS.
Untuk membatasi akses ke alamat IP jaringan tertentu atau VPC demi alasan keamanan, tambahkan 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"
]
}Skenario umum: Pemberian izin
Skenario berikut menunjukkan cara menggunakan Bucket Policy untuk memberikan izin akses kepada pengguna, peran, atau semua pengguna tertentu. Setiap skenario menyediakan contoh kebijakan lengkap yang dapat Anda modifikasi sesuai kebutuhan.
Skenario 1: Berikan izin baca/tulis
Untuk mengizinkan anggota tim atau mitra tertentu 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/tulis pada bucket example-bucket kepada pengguna RAM dengan UID 27737962156157xxxx dan 20214760404935xxxx.
Kebijakan ini tidak memberikan izin kepada pengguna RAM untuk melihat daftar bucket. Akibatnya, pengguna RAM yang ditentukan tidak dapat melihat semua bucket di halaman Buckets atau mengklik bucket untuk membukanya. Pengguna RAM tersebut dapat menambahkan bucket target ke di panel navigasi kiri konsol untuk mengaksesnya.
{
"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 ke direktori tertentu
Untuk melindungi file proyek tertentu dalam bucket dari modifikasi namun tetap mengizinkan anggota proyek membacanya, Anda dapat memberikan izin read-only kepada pengguna RAM yang sesuai. Contoh berikut memberikan izin read-only kepada pengguna RAM dengan UID 20214760404935xxxx pada direktori tertentu (dengan awalan hangzhou/2020 dan shanghai/2015) di bucket example-bucket.
Kebijakan ini tidak memberikan izin kepada pengguna RAM untuk melihat daftar bucket. Akibatnya, pengguna RAM yang ditentukan tidak dapat melihat semua bucket di halaman Buckets atau mengklik bucket untuk membukanya. Pengguna RAM tersebut dapat menambahkan bucket target ke di panel navigasi kiri konsol untuk mengaksesnya.
{
"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 tampil dan daftar
Untuk mengizinkan anggota tim atau mitra tertentu melihat semua informasi tentang bucket dan mencantumkan objek-objeknya, Anda dapat menggunakan Bucket Policy untuk memberikan izin kepada pengguna RAM yang sesuai. Contoh berikut memberikan izin kepada pengguna RAM untuk melihat semua informasi tentang bucket example-bucket dan mencantumkan objek-objek di dalamnya.
Kebijakan ini tidak memberikan izin kepada pengguna RAM untuk melihat daftar bucket. Akibatnya, pengguna RAM yang ditentukan tidak dapat melihat semua bucket di halaman Buckets atau mengklik bucket untuk membukanya. Pengguna RAM tersebut dapat menambahkan bucket target ke di panel navigasi kiri konsol untuk mengaksesnya.
{
"Version":"1",
"Statement":[
{
"Action":[
"oss:Get*",
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Effect":"Allow",
"Principal":[
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
]
}
]
}Skenario 4: Berikan izin baca ke peran RAM
Untuk mengizinkan pengguna RAM atau aplikasi mengakses objek bucket secara sementara, Anda dapat membuat peran RAM dan memberikan izin yang diperlukan. Pengguna RAM atau aplikasi tersebut mengasumsikan peran tersebut untuk mendapatkan kredensial akses sementara guna membaca objek bucket. Contoh berikut memberikan izin kepada semua sesi di bawah satu peran RAM dan sesi tertentu di bawah peran RAM lain untuk membaca semua objek di bucket example-bucket.
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 daftar ke semua pengguna
Jika bucket digunakan untuk berbagi resource publik dan Anda perlu mengizinkan semua pengguna melihat nama objek tetapi tidak mengakses kontennya, Anda dapat mengatur principal ke karakter wildcard (*). Kemudian, berikan izin kepada principal tersebut untuk mencantumkan semua objek. Contoh berikut memberikan izin kepada semua pengguna untuk mencantumkan semua objek di bucket example-bucket.
{
"Version":"1",
"Statement":[
{
"Action":[
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Effect":"Allow",
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
]
}
]
}Skenario umum: Pembatasan akses jaringan
Skenario berikut menunjukkan cara menggunakan Bucket Policy untuk membatasi akses ke bucket berdasarkan sumber jaringan, seperti alamat IP publik atau VPC. Saat mengonfigurasi kondisi berdasarkan alamat IP atau VPC, Anda harus menggunakan kunci kondisi acs:SourceIp dan acs:SourceVpc. Tabel berikut menjelaskan persyaratan pembatasan jaringan umum, pendekatan desain kebijakan, dan skenario terkait untuk membantu Anda memahami perbedaan dan menemukan konfigurasi yang sesuai.
Sumber akses | Pendekatan kebijakan | Skenario |
VPC apa pun | Tolak permintaan di mana acs:SourceVpc tidak dimulai dengan | |
VPC tertentu | Tolak permintaan di mana acs:SourceVpc tidak sama dengan ID VPC yang ditentukan. | |
IP publik tertentu | Pernyataan 1 menolak permintaan jaringan publik dari alamat IP yang tidak ditentukan; Pernyataan 2 menolak semua permintaan VPC. | |
Rentang IP tertentu dalam VPC tertentu | Pernyataan 1 menolak permintaan dari VPC yang tidak ditentukan; Pernyataan 2 menolak permintaan dari rentang IP yang tidak ditentukan dalam VPC yang ditentukan. | |
IP publik tertentu atau VPC tertentu | Pernyataan 1 menolak permintaan jaringan publik dari alamat IP yang tidak ditentukan; Pernyataan 2 menolak permintaan VPC dari VPC yang tidak ditentukan. | |
Semua kecuali IP tertentu (blacklist) | Tolak permintaan dari IP yang ditentukan, dan gunakan wildcard |
Skenario 1: Batasi akses jaringan publik
Untuk memblokir akses ke bucket tertentu dari jaringan publik, buat pernyataan deny yang berisi kunci kondisi acs:SourceVpc dan tambahkan pernyataan tersebut ke Bucket Policy. Pernyataan ini memblokir permintaan yang tidak berasal dari VPC, sehingga secara efektif menolak semua akses jaringan publik. Contoh berikut menolak semua pengguna di luar jaringan VPC untuk mengakses bucket example-bucket.
{
"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 2: Batasi akses ke VPC tertentu
Untuk membatasi akses ke bucket hanya pada VPC tertentu, Anda dapat menggunakan kunci kondisi acs:SourceVpc untuk membuat pernyataan deny dalam Bucket Policy. Pernyataan ini memblokir permintaan yang berasal dari VPC lain atau jaringan publik. Contoh berikut menolak semua pengguna di luar VPC yang ditentukan dengan ID t4nlw426y44rd3iq4xxxx untuk membaca objek di bucket example-bucket.
Karena principal dalam pernyataan deny berikut adalah karakter wildcard (
*) dan mencakup kondisi, pernyataan deny tersebut berlaku untuk semua pengguna, termasuk pemilik bucket.Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin, Anda dapat menambahkan pernyataan allow untuk memberikan izin yang diperlukan.
{
"Version":"1",
"Statement":[
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringNotEquals":{
"acs:SourceVpc":[
"vpc-t4nlw426y44rd3iq4xxxx"
]
}
}
}
]
}Skenario 3: Batasi akses ke alamat IP publik tertentu
Untuk membatasi akses bucket hanya pada alamat IP publik tertentu, Anda harus membuat dua pernyataan deny:
Pernyataan 1 (Tolak permintaan jaringan publik dari alamat IP yang tidak ditentukan): Pernyataan ini menggunakan
StringNotLike: {"acs:SourceVpc": "vpc-*"}untuk mengidentifikasi permintaan jaringan publik (nilaiacs:SourceVpcuntuk permintaan jaringan publik tidak dimulai denganvpc-). Kemudian menggunakanNotIpAddress: {"acs:SourceIp": "..."}untuk menolak permintaan yang bukan berasal dari alamat IP yang ditentukan. Tindakan deny dipicu ketika kedua kondisi terpenuhi.Pernyataan 2 (Tolak semua permintaan VPC): Pernyataan ini menggunakan
StringLike: {"acs:SourceVpc": "vpc-*"}untuk mencocokkan dan menolak semua permintaan dari VPC apa pun, karena tujuannya adalah hanya mengizinkan akses dari alamat IP publik yang ditentukan.
Setelah menambahkan dua pernyataan deny ini ke Bucket Policy, permintaan akan ditolak jika memenuhi kondisi di salah satu pernyataan tersebut. Contoh berikut menolak akses baca ke example-bucket untuk semua pengguna kecuali yang berasal dari alamat IP publik 203.0.113.5.
Karena principal dalam pernyataan deny berikut adalah karakter wildcard (
*) dan mencakup kondisi, pernyataan deny tersebut berlaku untuk semua pengguna, termasuk pemilik bucket.Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin, Anda dapat menambahkan pernyataan allow untuk memberikan izin yang diperlukan.
{
"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 4: Batasi akses ke rentang IP dalam VPC
Untuk membatasi akses ke bucket hanya pada rentang alamat IP tertentu dalam VPC tertentu, Anda harus membuat dua pernyataan deny:
Pernyataan 1 (Tolak semua permintaan dari luar VPC yang ditentukan): Pernyataan ini menggunakan
StringNotEquals: {"acs:SourceVpc": "..."}untuk menolak permintaan dari VPC lain dan jaringan publik.Pernyataan 2 (Tolak permintaan dari luar rentang IP yang ditentukan dalam VPC): Pernyataan ini menggunakan
StringEquals: {"acs:SourceVpc": "..."}untuk mencocokkan permintaan dari VPC yang ditentukan, lalu menggunakanNotIpAddress: {"acs:SourceIp": "..."}untuk menolak permintaan dari luar rentang alamat IP yang ditentukan. Tindakan deny dipicu ketika kedua kondisi terpenuhi.
Setelah menambahkan dua pernyataan deny ini ke Bucket Policy, permintaan akan ditolak jika memenuhi kondisi di salah satu pernyataan tersebut. Contoh berikut menolak akses baca ke bucket example-bucket untuk semua pengguna kecuali yang berasal dari rentang alamat IP 192.168.0.0/16 dalam VPC dengan ID t4nlw426y44rd3iq4xxxx.
Karena principal dalam pernyataan deny berikut adalah karakter wildcard (
*) dan mencakup kondisi, pernyataan deny tersebut berlaku untuk semua pengguna, termasuk pemilik bucket.Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin, Anda dapat menambahkan pernyataan allow untuk memberikan izin yang diperlukan.
{
"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 5: Batasi akses ke IP publik atau VPC
Untuk membatasi akses ke bucket hanya pada alamat IP publik tertentu atau VPC tertentu, Anda harus membuat dua pernyataan deny:
Pernyataan 1 (Untuk permintaan jaringan publik, tolak IP yang tidak ditentukan): Pernyataan ini menggunakan
StringNotLike: {"acs:SourceVpc": "vpc-*"}untuk mengidentifikasi permintaan jaringan publik, lalu menggunakanNotIpAddress: {"acs:SourceIp": "..."}untuk menolak permintaan dari alamat IP publik yang tidak ditentukan. Tindakan deny dipicu ketika kedua kondisi terpenuhi. Permintaan VPC tidak cocok dengan pernyataan ini karena nilaiacs:SourceVpc-nya dimulai denganvpc-.Pernyataan 2 (Untuk permintaan VPC, tolak VPC yang tidak ditentukan): Pernyataan ini menggunakan
StringLike: {"acs:SourceVpc": "vpc-*"}untuk mengidentifikasi permintaan VPC, lalu menggunakanStringNotEquals: {"acs:SourceVpc": "..."}untuk menolak permintaan dari VPC yang tidak ditentukan. Tindakan deny dipicu ketika kedua kondisi terpenuhi. Permintaan jaringan publik tidak cocok dengan pernyataan ini karena nilaiacs:SourceVpc-nya tidak dimulai denganvpc-.
Setelah menambahkan dua pernyataan deny ini ke Bucket Policy, permintaan akan ditolak jika memenuhi kondisi di salah satu pernyataan tersebut. Contoh berikut menolak akses baca ke bucket example-bucket untuk semua pengguna kecuali yang berasal dari alamat IP publik 203.0.113.5 atau VPC dengan ID t4nlw426y44rd3iq4xxxx.
Karena principal dalam pernyataan deny berikut adalah karakter wildcard (
*) dan mencakup kondisi, pernyataan deny tersebut berlaku untuk semua pengguna, termasuk pemilik bucket.Pernyataan deny berikut hanya membatasi akses dan tidak memberikan izin apa pun. Jika principal belum diberikan izin, Anda dapat menambahkan pernyataan allow untuk memberikan izin yang diperlukan.
{
"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 6: Atur blacklist IP
Untuk menolak akses ke bucket dan objek-objeknya dari alamat IP tertentu, Anda dapat menggunakan kebijakan blacklist IP. Dengan mengatur kebijakan deny dalam Bucket Policy, Anda dapat memblokir semua permintaan akses dari alamat IP atau rentang alamat IP yang ditentukan.
StringLike: {"acs:SourceVpc": "*"} dalam kebijakan menggunakan karakter wildcard untuk mencocokkan semua nilai dan sebenarnya tidak membatasi cakupan VPC. Kondisi ini ada untuk memenuhi pembatasan wajib bahwa jika Anda menentukan acs:SourceIp, Anda juga harus menentukan acs:SourceVpc.
Karena principal dalam pernyataan deny berikut adalah karakter wildcard (
*) dan mencakup kondisi, pernyataan deny tersebut berlaku untuk semua pengguna, 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 umum: Kontrol keamanan
Skenario berikut menunjukkan cara menggunakan Bucket Policy untuk menerapkan kebijakan keamanan, termasuk membatasi jenis kredensial, mencegah akses publik, dan mengontrol kebijakan retensi.
Skenario 1: Wajibkan kredensial sementara untuk panggilan API
Untuk mewajibkan panggilan API menggunakan kredensial akses sementara, Anda dapat menggunakan kunci kondisi acs:AccessId untuk membuat pernyataan deny. Pernyataan ini memblokir akses dari kredensial non-sementara, seperti access key jangka panjang dari akun Alibaba Cloud atau pengguna RAM. Upaya akses yang menggunakan kredensial non-sementara akan memicu aturan deny. Contoh berikut menolak semua pengguna yang tidak menggunakan kredensial akses sementara (diawali TMP. atau STS.) untuk melihat bucket example-bucket dan mencantumkan objek-objeknya.
{
"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 2: Larang ACL publik
Untuk mencegah ACL bucket dan objek diatur ke publik, Anda dapat membuat dua pernyataan deny:
Gunakan kunci kondisi
oss:x-oss-acluntuk membuat pernyataan deny yang mencegah ACL bucket diatur ke izin selainprivate. Upaya apa pun untuk mengatur ACL public-read atau public-read-write akan memicu aturan deny.Gunakan kunci kondisi
oss:x-oss-object-acluntuk membuat pernyataan deny yang mencegah ACL objek diatur ke izin selainprivatedandefault.
Setelah menambahkan dua pernyataan deny ini ke Bucket Policy, permintaan akan ditolak jika memenuhi kondisi di salah satu pernyataan tersebut. Contoh berikut menolak operasi yang mengatur ACL akses publik pada bucket 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"
]
}
}
}
]
}Skenario 3: Batasi periode retensi ObjectWorm
Setelah mengaktifkan kebijakan retensi tingkat objek (ObjectWorm) untuk bucket, Anda dapat menggunakan Bucket Policy untuk membatasi jumlah maksimum hari retensi yang dapat diatur pengguna. Misalnya, kebijakan berikut membatasi pengguna pada periode retensi maksimum 30 hari. Permintaan PutObjectRetention apa pun yang melebihi 30 hari akan ditolak.
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"oss:PutObjectRetention"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition": {
"NumericGreaterThan": {
"oss:object-remaining-retention-days": "30"
}
}
}
]
}oss:object-remaining-retention-daysadalah kunci kondisi untuk kebijakan ObjectWorm. Ini merepresentasikan jumlah hari retensi yang tersisa yang ditentukan dalam permintaan.Karena principal dalam kebijakan ini adalah karakter wildcard (*) dan mencakup kondisi, kebijakan ini berlaku untuk semua pengguna, termasuk pemilik bucket.
Pengembangan dan integrasi alat
Selain konfigurasi manual di konsol, Anda dapat menggunakan tool grafis, tool baris perintah, dan SDK untuk mengonfigurasi Bucket Policy.
Gunakan tool grafis ossbrowser
ossbrowser mendukung operasi kebijakan tingkat bucket dan menyediakan pengalaman visual yang mirip dengan konsol. Instal dan login ke ossbrowser, lalu ikuti petunjuk di layar untuk mengonfigurasi Bucket Policy.
Gunakan tool baris perintah ossutil
Anda dapat mengatur kebijakan otorisasi dengan menjalankan perintah put-bucket-policy.
CatatanUntuk mengatur kebijakan otorisasi untuk bucket vektor, jalankan 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 mengatur kebijakan otorisasi untuk bucket.
Kuota dan batasan
Ukuran kebijakan: Sebuah bucket dapat memiliki beberapa pernyataan Bucket Policy, tetapi ukuran total semua kebijakan tidak boleh melebihi 16 KB.
Panjang field: Panjang setiap field dalam Bucket Policy tidak boleh melebihi 4.095 byte.