全部产品
Search
文档中心

Object Storage Service:Kebijakan Bucket (Go SDK V2)

更新时间:Nov 09, 2025

Kebijakan bucket adalah kebijakan otorisasi OSS untuk bucket. Anda dapat menggunakan kebijakan bucket untuk memberikan atau menolak akses dengan detail halus ke sumber daya OSS tertentu bagi pengguna anonim atau pengguna yang ditentukan, seperti Akun Alibaba Cloud, Pengguna RAM, dan Peran RAM. Sebagai contoh, Anda dapat memberikan izin read-only pada sumber daya OSS tertentu kepada Pengguna RAM dari Akun Alibaba Cloud lain.

Catatan

  • Sebelum mengonfigurasi kebijakan bucket, pastikan Anda memahami fitur ini. Untuk informasi lebih lanjut, lihat Kebijakan Bucket.

  • Kode contoh dalam topik ini menggunakan ID wilayah cn-hangzhou untuk Wilayah China (Hangzhou). Secara default, Titik akhir publik digunakan untuk mengakses sumber daya di bucket. Jika Anda ingin mengakses sumber daya di bucket dari produk Alibaba Cloud lainnya di wilayah yang sama, gunakan Titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan Titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik akhir OSS.

  • Dalam topik ini, kredensial akses dibaca dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses.

  • 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 lebih lanjut, lihat Berikan kebijakan kustom kepada Pengguna RAM.

Kode Contoh

Tetapkan kebijakan bucket

Gunakan kode berikut untuk menetapkan kebijakan bucket.

package main

import (
	"context"
	"flag"
	"log"
	"strings"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Tentukan variabel global.
var (
	region     string // Wilayah.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket kosong.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah wilayah kosong.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default dan atur penyedia kredensial serta wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Tentukan kebijakan bucket.
	policy := `{
		"Version": "1",
		"Statement": [
			{
				"Action": [
					"oss:PutObject",
					"oss:GetObject"
				],
				"Effect": "Deny",
				"Principal": ["1234567890"],
				"Resource": ["acs:oss:*:1234567890:*/*"]
			}
		]
	}`

	// Buat permintaan untuk menetapkan kebijakan bucket.
	request := &oss.PutBucketPolicyRequest{
		Bucket: oss.Ptr(bucketName),       // Nama bucket.
		Body:   strings.NewReader(policy), // Kebijakan bucket.
	}

	// Jalankan operasi untuk menetapkan kebijakan bucket.
	result, err := client.PutBucketPolicy(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menetapkan kebijakan bucket %v", err)
	}

	// Cetak hasil penyetelan kebijakan bucket.
	log.Printf("hasil penyetelan kebijakan bucket:%#v\n", result)
}

Dapatkan kebijakan bucket

Gunakan kode berikut untuk mengambil kebijakan bucket.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Tentukan variabel global.
var (
	region     string // Wilayah.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket kosong.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah wilayah kosong.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default dan atur penyedia kredensial serta wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk mendapatkan kebijakan bucket.
	request := &oss.GetBucketPolicyRequest{
		Bucket: oss.Ptr(bucketName),
	}

	// Jalankan operasi untuk mendapatkan kebijakan bucket.
	result, err := client.GetBucketPolicy(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal mendapatkan kebijakan bucket %v", err)
	}

	// Cetak hasil pengambilan kebijakan bucket.
	log.Printf("hasil pengambilan kebijakan bucket:%#v\n", result)
}

Hapus kebijakan bucket

Gunakan kode berikut untuk menghapus kebijakan bucket.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Tentukan variabel global.
var (
	region     string // Wilayah.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket kosong.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah wilayah kosong.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default dan atur penyedia kredensial serta wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk menghapus kebijakan bucket.
	request := &oss.DeleteBucketPolicyRequest{
		Bucket: oss.Ptr(bucketName),
	}

	// Jalankan operasi untuk menghapus kebijakan bucket.
	result, err := client.DeleteBucketPolicy(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menghapus kebijakan bucket %v", err)
	}

	// Cetak hasil penghapusan kebijakan bucket.
	log.Printf("hasil penghapusan kebijakan bucket:%#v\n", result)
}

Referensi

  • Untuk kode contoh lengkap untuk menetapkan kebijakan bucket, lihat Contoh GitHub.

  • Untuk Operasi API untuk menetapkan kebijakan bucket, lihat PutBucketPolicy.

  • Untuk kode contoh lengkap untuk mengambil kebijakan bucket, lihat Contoh GitHub.

  • Untuk Operasi API untuk mengambil kebijakan bucket, lihat GetBucketPolicy.

  • Untuk kode contoh lengkap untuk menghapus kebijakan bucket, lihat Contoh GitHub.

  • Untuk Operasi API untuk menghapus kebijakan bucket, lihat DeleteBucketPolicy.