全部产品
Search
文档中心

Object Storage Service:Kebijakan bucket (Python SDK V1)

更新时间:Nov 29, 2025

Kebijakan bucket memungkinkan Anda memberikan atau membatasi akses bagi pengguna anonim maupun pengguna lain—seperti akun Alibaba Cloud, RAM user, dan RAM role—terhadap sumber daya Object Storage Service (OSS) tertentu. Sebagai contoh, Anda dapat memberikan izin read-only pada sumber daya OSS tertentu kepada RAM user dari akun Alibaba Cloud lain.

Catatan penggunaan

  • Sebelum mengonfigurasi kebijakan bucket, pastikan Anda memahami fitur ini. Untuk informasi selengkapnya, lihat Bucket Policy.

  • Pada topik ini, digunakan titik akhir publik wilayah China (Hangzhou). Jika Anda 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.

  • Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Configure access credentials using OSS SDK for Python 1.0.

  • Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Initialization.

  • Untuk mengatur 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.

Atur kebijakan bucket

Kode berikut menunjukkan cara mengatur kebijakan bucket:

# -*- coding: utf-8 -*-

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import json

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Atur Endpoint ke URL wilayah tempat bucket Anda berada. Misalnya, untuk wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Atur wilayah yang sesuai dengan Endpoint Anda, seperti cn-hangzhou. Parameter ini wajib untuk tanda tangan v4.
region = "cn-hangzhou"

# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Pada contoh ini, pemilik resource (pemilik bucket dengan UID 174649585760xxxx) menggunakan kebijakan bucket untuk memberikan izin kepada Resource Access Management (RAM) user (UID 20214760404935xxxx) agar dapat melihat daftar semua file di examplebucket.
policy_text = '{"Statement": [{"Effect": "Allow", "Action": ["oss:GetObject", "oss:ListObjects"], "Principal": ["20214760404935xxxx"], "Resource": ["acs:oss:*:174649585760xxxx:examplebucket/*"]}], "Version": "1"}'

# Unggah kebijakan otorisasi.
bucket.put_bucket_policy(policy_text)

Ambil kebijakan bucket

Kode berikut menunjukkan cara mengambil kebijakan bucket:

# -*- coding: utf-8 -*-

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import json
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan Endpoint untuk wilayah bucket Anda. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Tentukan wilayah yang sesuai dengan Endpoint, seperti cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Ambil kebijakan bucket.
result = bucket.get_bucket_policy()
policy_json = json.loads(result.policy) 
print("Get policy text: ", policy_json)

Hapus kebijakan bucket

Kode berikut menunjukkan cara menghapus kebijakan bucket:

# -*- coding: utf-8 -*-

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Atur Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Atur wilayah yang sesuai dengan Endpoint, seperti cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Hapus kebijakan bucket.
result = bucket.delete_bucket_policy()
assert int(result.status)//100 == 2

Referensi

  • Untuk contoh kode lengkap mengenai kebijakan bucket, lihat contoh di GitHub.

  • Untuk referensi API mengenai pengaturan kebijakan bucket, lihat PutBucketPolicy.

  • Untuk referensi API mengenai pengambilan kebijakan bucket, lihat GetBucketPolicy.

  • Untuk referensi API mengenai penghapusan kebijakan bucket, lihat DeleteBucketPolicy.