全部产品
Search
文档中心

Object Storage Service:Kelola ACL Objek (C# SDK V2)

更新时间:Nov 09, 2025

Topik ini menjelaskan cara menggunakan C# SDK V2 untuk menetapkan dan mendapatkan daftar kontrol akses (ACL) dari objek.

Catatan

  • Kode contoh dalam topik ini menggunakan Wilayah China (Hangzhou) (cn-hangzhou) sebagai contoh. Secara default, Titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari layanan 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.

  • Untuk menetapkan ACL suatu objek, Anda harus memiliki izin oss:PutObjectAcl. Untuk mendapatkan ACL suatu objek, Anda harus memiliki izin oss:GetObjectAcl. Untuk informasi lebih lanjut, lihat Berikan izin kustom kepada Pengguna RAM.

Jenis-jenis ACL

Objek memiliki empat jenis ACL berikut:

Izin akses

Deskripsi

Nilai ACL

Mewarisi dari bucket

File mewarisi izin akses dari bucket.

default

Pribadi

Hanya pemilik objek dan pengguna yang diberi otorisasi yang memiliki izin baca dan tulis pada objek. Pengguna lain tidak memiliki izin untuk mengakses objek.

private

Public-read

Hanya pemilik objek dan pengguna yang diberi otorisasi yang memiliki izin baca dan tulis pada objek. Pengguna lain hanya memiliki izin baca pada objek. Gunakan izin ini dengan hati-hati.

public-read

Baca-tulis publik

Semua pengguna memiliki izin baca dan tulis pada objek. Gunakan izin ini dengan hati-hati.

public-read-write

ACL objek memiliki prioritas lebih tinggi daripada ACL bucket yang berisi objek tersebut. Sebagai contoh, jika ACL bucket adalah pribadi dan ACL objek di dalam bucket adalah baca-tulis publik, semua pengguna memiliki izin baca dan tulis pada objek tersebut. Jika Anda tidak mengonfigurasi ACL untuk objek, objek tersebut akan mewarisi ACL dari bucketnya.

Kode contoh

Anda dapat menggunakan kode berikut untuk menetapkan dan mendapatkan ACL suatu objek.

using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk Alibaba Cloud OSS SDK untuk menyederhanakan penggunaan selanjutnya.

var region = "cn-hangzhou";  // Diperlukan. Tetapkan wilayah tempat bucket berada. Dalam contoh ini, wilayah ditetapkan ke China (Hangzhou), dan ID wilayah ditetapkan ke cn-hangzhou.
var endpoint = null as string;  // Opsional. Tentukan titik akhir yang digunakan untuk mengakses OSS. Dalam contoh ini, titik akhir ditetapkan ke https://oss-cn-hangzhou.aliyuncs.com.
var bucket = "nama bucket Anda";  // Diperlukan. Nama bucket tujuan.
var key = "nama objek Anda";  // Diperlukan. Nama objek tujuan.
var acl = "ACL objek Anda";  // Diperlukan. ACL objek tujuan. Nilai valid: default, private, public-read, dan public-read-write.

// Muat konfigurasi default dari OSS SDK. Konfigurasi secara otomatis membaca informasi kredensial seperti AccessKeys dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit tetapkan penggunaan variabel lingkungan untuk mendapatkan kredensial untuk verifikasi identitas. Format: OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Tetapkan wilayah bucket dalam konfigurasi.
cfg.Region = region;   
// Jika titik akhir ditentukan, itu akan menimpa titik akhir default. 
if(endpoint != null) 
{
    cfg.Endpoint = endpoint;
} 

// Buat instance klien OSS menggunakan informasi konfigurasi.
using var client = new OSS.Client(cfg); 

// Panggil metode PutObjectAclAsync untuk menetapkan ACL objek tujuan.
var result1 = await client.PutObjectAclAsync(new OSS.Models.PutObjectAclRequest()
{
    Bucket = bucket,
    Key = key,
    Acl = acl,
});

// Panggil metode GetObjectAclAsync untuk mendapatkan informasi ACL objek tujuan.
var result2 = await client.GetObjectAclAsync(new OSS.Models.GetObjectAclRequest()
{
    Bucket = bucket,
    Key = key,
});

// Cetak informasi hasil.
Console.WriteLine("GetObjectAcl selesai");  // Pesan yang menunjukkan bahwa operasi telah selesai.
Console.WriteLine($"Kode Status: {result2.StatusCode}");  // Kode status HTTP.
Console.WriteLine($"ID Permintaan: {result2.RequestId}");  // ID permintaan, yang digunakan untuk pemecahan masalah di Alibaba Cloud.
Console.WriteLine("Header Respons:");  // Informasi header respons.
result2.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value));  // Telusuri dan cetak semua header respons.
Console.WriteLine($"ACL: {result2.Acl}");   // Informasi ACL objek tujuan.

Referensi

  • Untuk kode contoh lengkap untuk menetapkan ACL suatu objek, lihat PutObjectAcl.cs.

  • Untuk kode contoh lengkap untuk mendapatkan ACL suatu objek, lihat GetObjectAcl.cs.