All Products
Search
Document Center

Object Storage Service:Kebijakan bucket (Go SDK V1)

Last Updated:Nov 30, 2025

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 izin oss:GetBucketPolicy. Untuk menghapus kebijakan bucket, Anda harus memiliki izin oss: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.