全部产品
Search
文档中心

Object Storage Service:Mengelola daftar kontrol akses bucket (C++ SDK)

更新时间:Nov 30, 2025

Bucket merupakan wadah untuk objek yang disimpan di Object Storage Service (OSS). Semua objek disimpan dalam bucket. Topik ini menjelaskan cara mengatur dan mengambil access control list (ACL) bucket.

Catatan penggunaan

  • Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

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

  • Untuk mengatur ACL bucket, Anda harus memiliki izin oss:PutBucketAcl. Untuk mengambil ACL bucket, Anda harus memiliki izin oss:GetBucketAcl. Untuk informasi selengkapnya, lihat Lampirkan kebijakan kustom ke RAM user.

Atur ACL bucket

Bucket memiliki tiga jenis ACL berikut:

ACL

Deskripsi

Metode

Private

Hanya pemilik bucket yang dapat membaca dan menulis objek di dalam bucket tersebut. Pengguna lain tidak dapat mengakses objek di dalam bucket tersebut.

CannedAccessControlList::Private

Public-read

Hanya pemilik bucket yang dapat menulis objek di dalam bucket tersebut. Siapa pun, termasuk pengguna anonim, dapat membaca objek di dalam bucket tersebut.

Peringatan

Memberikan akses public-read ke bucket memungkinkan setiap pengguna di Internet mengakses objek di dalam bucket tersebut. Hal ini dapat menyebabkan kebocoran data dan biaya yang tidak terduga. Harap berhati-hati.

CannedAccessControlList::PublicRead

Public-read-write

Siapa pun, termasuk pengguna anonim, dapat membaca dan menulis objek di dalam bucket tersebut.

Peringatan

Memberikan akses public-read-write memungkinkan setiap pengguna di Internet mengakses dan menulis data ke bucket tersebut. Hal ini dapat menyebabkan kebocoran data dan biaya tinggi. Jika pengguna jahat menulis informasi ilegal ke bucket Anda, hak hukum Anda mungkin terganggu. Jangan memberikan izin public-read-write ke bucket kecuali benar-benar diperlukan.

CannedAccessControlList::PublicReadWrite

Kode berikut menunjukkan cara mengatur ACL bucket:

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Inisialisasi informasi akun OSS. */
            
    /* Atur Endpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Atur Region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket. Contoh: examplebucket. */
    std::string BucketName = "examplebucket";

    /* Inisialisasi sumber daya jaringan. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* Atur ACL bucket ke private. */
    SetBucketAclRequest request(BucketName, CannedAccessControlList::Private);
    auto outcome = client.SetBucketAcl(request);

    if (outcome.isSuccess()) {    
        std::cout << " setBucketAcl berhasil " << std::endl;
    }
    else {
        /* Tangani pengecualian. */
        std::cout << "SetBucketAcl gagal" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* Lepaskan sumber daya jaringan. */
    ShutdownSdk();
    return 0;
}

Ambil ACL bucket

Kode berikut memberikan contoh cara mengambil ACL bucket:

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Inisialisasi informasi akun OSS. */
            
    /* Atur Endpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Atur Region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket. Contoh: examplebucket. */
    std::string BucketName = "examplebucket";

    /* Inisialisasi sumber daya jaringan. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* Ambil ACL bucket. */
    GetBucketAclRequest request(BucketName);
    auto outcome = client.GetBucketAcl(request);

    if (outcome.isSuccess()) {    
        std::cout << "getBucketAcl berhasil, acl: " << outcome.result().Acl() << std::endl;
    }
    else {
        /* Tangani pengecualian. */
        std::cout << "getBucketAcl gagal" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* Lepaskan sumber daya jaringan. */
    ShutdownSdk();
    return 0;
}

Referensi

  • Untuk kode contoh lengkap tentang pengelolaan ACL bucket, lihat contoh GitHub.

  • Untuk informasi selengkapnya mengenai operasi API untuk mengatur ACL bucket, lihat PutBucketAcl.

  • Untuk informasi selengkapnya mengenai operasi API untuk mengambil ACL bucket, lihat GetBucketAcl.