Kebijakan bucket adalah kebijakan otorisasi berbasis resource. Pemilik bucket dapat menggunakan kebijakan bucket untuk memberikan otorisasi kepada pengguna lain agar mengakses resource tertentu di Object Storage Service (OSS). Topik ini menjelaskan cara menjalankan perintah bucket-policy untuk menambahkan, memodifikasi, mengkueri, atau menghapus kebijakan bucket.
Catatan penggunaan
-
Untuk menambahkan atau memodifikasi kebijakan bucket, Anda harus memiliki izin
oss:PutBucketPolicy. Untuk mengkueri kebijakan bucket, Anda harus memiliki izinoss:GetBucketPolicy. Untuk menghapus kebijakan bucket, Anda harus memiliki izinoss:DeleteBucketPolicy. Untuk informasi selengkapnya, lihat Grant a custom policy. -
Mulai versi ossutil 1.6.16 dan yang lebih baru, Anda dapat langsung menggunakan ossutil sebagai nama biner di command line tanpa perlu menyesuaikan nama biner berdasarkan sistem operasi. Untuk versi ossutil sebelum 1.6.16, Anda tetap harus menyesuaikan nama biner sesuai sistem operasi. Untuk informasi selengkapnya, lihat ossutil command reference.
-
Untuk informasi selengkapnya tentang kebijakan bucket, lihat Bucket Policy.
Tambahkan atau modifikasi kebijakan bucket
Sebelum menambahkan atau memodifikasi kebijakan bucket, buat file JSON di komputer lokal dan konfigurasikan kebijakan bucket dalam file tersebut. Anda dapat mengonfigurasi beberapa kebijakan bucket dalam satu file JSON, asalkan ukuran totalnya tidak melebihi 16 KB.
Saat menambahkan atau memodifikasi kebijakan bucket, ossutil membaca kebijakan dari file JSON dan menerapkannya ke bucket yang ditentukan. Penambahan kebijakan bucket akan menimpa kebijakan yang sudah ada sebelumnya.
-
Sintaks perintah
ossutil bucket-policy --method put oss://bucketname local_json_fileTabel berikut menjelaskan parameter pada perintah di atas.
Parameter
Deskripsi
bucketname
Nama bucket tempat Anda ingin menambahkan atau memodifikasi kebijakan bucket.
local_json_file
Nama file JSON lokal tempat Anda mengonfigurasi kebijakan bucket.
-
Contoh
-
Buat file bernama local_json_file di komputer lokal Anda dan konfigurasikan kebijakan bucket sesuai skenario yang berbeda.
Contoh berikut menunjukkan cara mengonfigurasi kebijakan bucket umum.
CatatanContoh berikut menunjukkan bagaimana pemilik bucket dengan UID
174649585760****dalam parameter Resource mengonfigurasi kebijakan bucket untuk memberikan izin berbeda kepada RAM user, seperti RAM user dengan UID20214760404935****dalam parameter Principal dan pengguna anonim*.-
Izinkan hanya permintaan anonim dari alamat IP tertentu untuk mengakses semua resource di bucket bernama examplebucket:
{ "Statement": [ { "Action": [ "oss:GetObject", "oss:GetObjectAcl", "oss:ListObjects", "oss:RestoreObject", "oss:GetVodPlaylist", "oss:ListObjectVersions", "oss:GetObjectVersion", "oss:GetObjectVersionAcl", "oss:RestoreObjectVersion" ], "Condition": { "IpAddress": { "acs:SourceIp": [ "10.10.10.10" ] } }, "Effect": "Allow", "Principal": [ "*" ], "Resource": [ "acs:oss:*:174649585760xxxx:examplebucket/*" ] }, { "Action": [ "oss:ListObjects", "oss:GetObject" ], "Condition": { "StringLike": { "oss:Prefix": [ "*" ] }, "IpAddress": { "acs:SourceIp": [ "10.10.10.10" ] } }, "Effect": "Allow", "Principal": [ "*" ], "Resource": [ "acs:oss:*:174649585760xxxx:examplebucket" ] } ], "Version": "1" } -
Berikan izin read-only kepada RAM user pada direktori
hangzhou/2020danhangzhou/2015di bucket bernama examplebucket:{ "Statement": [ { "Action": [ "oss:GetObject", "oss:GetObjectAcl", "oss:ListObjects", "oss:RestoreObject", "oss:GetVodPlaylist", "oss:ListObjectVersions", "oss:GetObjectVersion", "oss:GetObjectVersionAcl", "oss:RestoreObjectVersion" ], "Effect": "Allow", "Principal": [ "20214760404935xxxx" ], "Resource": [ "acs:oss:*:174649585760xxxx:examplebucket/hangzhou/2020/*", "acs:oss:*:174649585760xxxx:examplebucket/hangzhou/2015/*" ] }, { "Action": [ "oss:ListObjects", "oss:GetObject" ], "Condition": { "StringLike": { "oss:Prefix": [ "hangzhou/2020/*", "hangzhou/2015/*" ] } }, "Effect": "Allow", "Principal": [ "20214760404935xxxx" ], "Resource": [ "acs:oss:*:174649585760xxxx:examplebucket" ] } ], "Version": "1" } -
Tolak permintaan anonim ke semua objek di direktori
hangzhou/2021/di bucket bernama examplebucket:{ "Statement": [ { "Action": [ "oss:RestoreObject", "oss:ListObjects", "oss:AbortMultipartUpload", "oss:PutObjectAcl", "oss:GetObjectAcl", "oss:ListParts", "oss:DeleteObject", "oss:PutObject", "oss:GetObject", "oss:GetVodPlaylist", "oss:PostVodPlaylist", "oss:PublishRtmpStream", "oss:ListObjectVersions", "oss:GetObjectVersion", "oss:GetObjectVersionAcl", "oss:RestoreObjectVersion" ], "Effect": "Deny", "Principal": [ "*" ], "Resource": [ "acs:oss:*:174649585760xxxx:examplebucket/hangzhou/2021/*" ] }, { "Action": [ "oss:ListObjects", "oss:GetObject" ], "Condition": { "StringLike": { "oss:Prefix": [ "hangzhou/2021/*" ] } }, "Effect": "Deny", "Principal": [ "*" ], "Resource": [ "acs:oss:*:174649585760xxxx:examplebucket" ] } ], "Version": "1" }
-
-
Tambahkan kebijakan bucket ke bucket examplebucket.
ossutil bucket-policy --method put oss://examplebucket local_json_fileJika output berikut ditampilkan, kebijakan bucket telah berhasil ditambahkan ke bucket examplebucket:
1.125101(s) elapsed
-
Kueri kebijakan bucket
-
Sintaks perintah
ossutil bucket-policy --method get oss://bucketname local_json_fileParameter
Deskripsi
bucketname
Nama bucket yang kebijakan bucketya ingin Anda kueri.
local_json_file
File JSON lokal yang digunakan untuk menyimpan kebijakan bucket hasil kueri. Jika parameter ini tidak ditentukan, kebijakan bucket hasil kueri akan ditampilkan tanpa disimpan ke file JSON.
-
Contoh
Jalankan perintah berikut untuk mengkueri kebijakan bucket dari bucket bernama examplebucket:
ossutil bucket-policy --method get oss://examplebucket local_json_fileJika output berikut ditampilkan, kebijakan bucket dari examplebucket telah dikueri dan disimpan ke file JSON lokal:
0.212407(s) elapsed
Verifikasi status pemblokiran alamat IP
Setelah Anda mengambil JSON kebijakan bucket, periksa bidang Condition untuk menentukan apakah alamat IP tertentu diblokir.
Bidang Condition.IpAddress.acs:SourceIp berisi daftar alamat IP atau Blok CIDR yang menjadi target kebijakan bucket. Gunakan aturan berikut untuk menafsirkan daftar tersebut bersama dengan bidang Effect:
-
Jika
EffectbernilaiDenydanConditionmenggunakanIpAddress, alamat IP dalam daftaracs:SourceIpdiblokir. -
Jika
EffectbernilaiDenydanConditionmenggunakanNotIpAddress, alamat IP yang tidak ada dalam daftaracs:SourceIpdiblokir.
Contoh berikut menunjukkan JSON kebijakan bucket hasil pengambilan yang memblokir akses dari Blok CIDR 192.168.1.0/24:
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "oss:GetObject",
"Resource": "acs:oss:*:uid:examplebucket/*",
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"192.168.1.0/24"
]
}
}
}
]
}
Hapus kebijakan bucket
Jika Anda tidak lagi memerlukan kebijakan bucket untuk memberikan otorisasi kepada pengguna lain agar mengakses resource OSS Anda, hapus kebijakan bucket yang telah dikonfigurasi.
-
Sintaks perintah
ossutil bucket-policy --method delete oss://bucketname -
Contoh
Jalankan perintah berikut untuk menghapus semua kebijakan bucket dari bucket bernama examplebucket:
ossutil bucket-policy --method delete oss://examplebucketJika output berikut ditampilkan, semua kebijakan bucket dari examplebucket telah dihapus:
0.530750(s) elapsed
Opsi umum
Untuk mengakses bucket di wilayah yang berbeda, gunakan -e untuk menentukan endpoint. Untuk mengakses bucket yang dimiliki oleh Akun Alibaba Cloud lain, gunakan -i untuk ID AccessKey dan -k untuk Rahasia AccessKey.
Sebagai contoh, Anda dapat menjalankan perintah berikut untuk mengonfigurasi kebijakan bucket untuk bucket bernama examplebucket yang berada di wilayah China (Hangzhou) dan dimiliki oleh Akun Alibaba Cloud lain:
ossutil bucket-policy --method put oss://examplebucket local_json_file -e oss-cn-hangzhou.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecret