Kebijakan bucket merupakan kebijakan otorisasi untuk bucket Object Storage Service (OSS). Anda dapat menggunakan kebijakan bucket untuk memberikan atau menolak akses detail halus ke sumber daya OSS tertentu bagi pengunjung terautentikasi—seperti Akun Alibaba Cloud, pengguna Resource Access Management (RAM), dan peran RAM—atau bagi pengunjung anonim. Sebagai contoh, Anda dapat memberikan izin read-only kepada pengguna RAM dari Akun Alibaba Cloud lain atas sumber daya OSS tertentu.
Catatan penggunaan
Sebelum mengonfigurasi kebijakan bucket, pastikan Anda memahami fitur ini. Untuk informasi selengkapnya, lihat Bucket policy.
Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lain dalam wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Regions and endpoints.
Topik ini memperoleh kredensial akses dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Configure access credentials.
Topik ini membuat instans OSSClient menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Configure a client (Go SDK V1).
Untuk menetapkan kebijakan bucket, Anda harus memiliki izin
oss:PutBucketPolicy. Untuk mengambil kebijakan bucket, Anda harus memiliki izinoss:GetBucketPolicy. Untuk menghapus kebijakan bucket, Anda harus memiliki izinoss:DeleteBucketPolicy. Untuk informasi selengkapnya, lihat Attach a custom policy to a RAM user.
Kode contoh
Tetapkan kebijakan bucket
Kode berikut menunjukkan cara menetapkan kebijakan bucket:
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Atur yourEndpoint ke Endpoint bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Atur versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Contoh berikut menunjukkan bagaimana pemilik resource (pemilik bucket dengan UID 174649585760xxxx) menggunakan kebijakan bucket untuk memberikan izin kepada pengguna tertentu (pengguna RAM dengan UID 20214760404935xxxx) guna mencantumkan semua file di examplebucket.
policyConfig := `
{
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:ListObjects"
],
"Principal": [
"20214760404935xxxx"
],
"Effect" : "Allow",
"Resource" : ["acs:oss:*:174649585760xxxx:examplebucket/*"]
}
],
"Version": "1"
}`
// Tetapkan kebijakan bucket.
bucketName := "examplebucket"
err = client.SetBucketPolicy(bucketName, policyConfig)
if err != nil {
log.Fatalf("Gagal menetapkan kebijakan bucket untuk '%s': %v", bucketName, err)
}
log.Println("SetBucketPolicy berhasil")
}
Ambil kebijakan bucket
Kode berikut menunjukkan cara mengambil kebijakan bucket:
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Atur yourEndpoint ke Endpoint bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Atur versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Dapatkan konfigurasi kebijakan bucket.
bucketName := "yourBucketName"
strPolicy, err := client.GetBucketPolicy(bucketName)
if err != nil {
log.Fatalf("Gagal mengambil kebijakan bucket untuk '%s': %v", bucketName, err)
}
log.Printf("Kebijakan bucket untuk '%s': %s", bucketName, strPolicy)
}
Hapus kebijakan bucket
Kode berikut menunjukkan cara menghapus kebijakan bucket:
package main
import (
"log"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
}
// Buat instans OSSClient.
// Atur yourEndpoint ke Endpoint bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, sesuaikan wilayahnya.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Atur versi signature.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
log.Fatalf("Gagal membuat klien OSS: %v", err)
}
// Hapus kebijakan bucket.
bucketName := "yourBucketName"
err = client.DeleteBucketPolicy(bucketName)
if err != nil {
log.Fatalf("Gagal menghapus kebijakan bucket untuk '%s': %v", bucketName, err)
}
log.Println("DeleteBucketPolicy berhasil")
}
Referensi
Untuk informasi selengkapnya mengenai operasi API untuk menetapkan kebijakan bucket, lihat SetBucketPolicy.
Untuk informasi selengkapnya mengenai operasi API untuk mengambil kebijakan bucket, lihat GetBucketPolicy.
Untuk informasi selengkapnya mengenai operasi API untuk menghapus kebijakan bucket, lihat DeleteBucketPolicy.