All Products
Search
Document Center

Object Storage Service:Bucket ACL

Last Updated:Jul 24, 2026

ACL (access control list) bucket mengontrol akses tingkat bucket di OSS dengan menetapkan bucket sebagai publik atau privat. Objek yang diunggah tanpa ACL eksplisit akan mewarisi ACL bucket tersebut.

Cara kerja

ACL bucket menggunakan nilai yang telah ditentukan untuk mengontrol akses ke bucket.

Value

Description

private (default)

Privat. Hanya pemilik bucket atau pengguna yang berwenang yang dapat membaca dan menulis objek di dalam bucket.

public-read

Baca publik. Hanya pemilik bucket atau pengguna yang berwenang yang dapat menulis objek, tetapi siapa pun, termasuk pengguna anonim, dapat membacanya.

public-read-write

Baca-tulis publik. Siapa pun, termasuk pengguna anonim, dapat membaca dan menulis objek di dalam bucket.

Penting
  • public-read-write: Mengizinkan siapa pun di internet untuk membaca dan menulis objek dalam bucket. Ini merupakan pengaturan ACL dengan risiko tertinggi. Hindari kecuali benar-benar diperlukan.

  • public-read: Mengizinkan siapa pun di internet untuk membaca objek dalam bucket, yang berpotensi menyebabkan kebocoran data dan biaya tak terduga. Gunakan dengan hati-hati.

Mengatur ACL bucket

Saat membuat bucket, fitur Block Public Access diaktifkan secara default dan ACL diatur ke private. Untuk menggunakan public-read atau public-read-write, nonaktifkan terlebih dahulu Block Public Access.

Konsol

  1. Buka daftar Buckets dan klik bucket target.

  2. Pada panel navigasi kiri, pilih Permission Control > ACL.

  3. Klik Settings dan ubah ACL bucket sesuai kebutuhan.

  4. Klik Save.

CLI ossutil

Jalankan perintah put-bucket-acl di ossutil 2.0 untuk mengatur ACL bucket.

ossutil api put-bucket-acl --bucket example-bucket --acl private

SDK

Contoh berikut menunjukkan cara mengatur ACL bucket menggunakan SDK umum. Contoh SDK tambahan tersedia dalam referensi SDK.

// Kode contoh ini menunjukkan cara mengatur daftar kontrol akses (ACL) untuk bucket.
// Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.

import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.StaticCredentialsProvider;
import com.aliyun.sdk.service.oss2.models.*;

public class SetBucketAcl {

    public static void main(String[] args) {
        String bucketName = "example-bucket";

        String accessKeyId = System.getenv("OSS_ACCESS_KEY_ID");
        String accessKeySecret = System.getenv("OSS_ACCESS_KEY_SECRET");
        CredentialsProvider provider = new StaticCredentialsProvider(accessKeyId, accessKeySecret);

        try (OSSClient client = OSSClient.newBuilder()
                .credentialsProvider(provider)
                .region("<region-id>")
                .build()) {

            // Atur ACL bucket ke private.
            // Nilai yang valid: "private", "public-read", dan "public-read-write".
            PutBucketAclRequest putRequest = PutBucketAclRequest.newBuilder()
                    .bucket(bucketName)
                    .acl("private")
                    .build();
            PutBucketAclResult putResult = client.putBucketAcl(putRequest);
            System.out.println("ACL bucket berhasil diatur. RequestId: " + putResult.requestId());

            // Dapatkan ACL bucket.
            GetBucketAclRequest getRequest = GetBucketAclRequest.newBuilder()
                    .bucket(bucketName)
                    .build();
            GetBucketAclResult getResult = client.getBucketAcl(getRequest);
            System.out.println("ACL bucket saat ini: " + getResult.accessControlPolicy().accessControlList().grant());

        } catch (Exception e) {
            System.err.println("Operasi gagal: " + e.getMessage());
        }
    }
}
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Kode contoh ini menunjukkan cara mengatur daftar kontrol akses (ACL) untuk bucket.
# Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.

import alibabacloud_oss_v2 as oss


def main() -> None:
    bucket_name = "example-bucket"

    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = "<region-id>"

    client = oss.Client(cfg)

    # Atur ACL bucket ke private.
    # Nilai yang valid: "private", "public-read", dan "public-read-write".
    put_result = client.put_bucket_acl(oss.PutBucketAclRequest(
        bucket=bucket_name,
        acl="private"
    ))
    print(f"ACL bucket berhasil diatur. RequestId: {put_result.request_id}")

    # Dapatkan ACL bucket.
    get_result = client.get_bucket_acl(oss.GetBucketAclRequest(
        bucket=bucket_name
    ))
    print(f"ACL bucket saat ini: {get_result.acl}")


if __name__ == "__main__":
    main()
// Kode contoh ini menunjukkan cara mengatur daftar kontrol akses (ACL) untuk bucket.
// Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.

package main

import (
	"context"
	"log"

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

func main() {
	bucketName := "example-bucket"

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion("<region-id>")

	client := oss.NewClient(cfg)

	// Atur ACL bucket ke private.
	// Nilai yang valid: oss.BucketACLPrivate, oss.BucketACLPublicRead, dan oss.BucketACLPublicReadWrite.
	putResult, err := client.PutBucketAcl(context.TODO(), &oss.PutBucketAclRequest{
		Bucket: oss.Ptr(bucketName),
		Acl:    oss.BucketACLPrivate,
	})
	if err != nil {
		log.Fatalf("Gagal mengatur ACL bucket: %v", err)
	}
	log.Printf("ACL bucket berhasil diatur. RequestId: %s", putResult.Headers.Get("X-Oss-Request-Id"))

	// Dapatkan ACL bucket.
	getResult, err := client.GetBucketAcl(context.TODO(), &oss.GetBucketAclRequest{
		Bucket: oss.Ptr(bucketName),
	})
	if err != nil {
		log.Fatalf("Gagal mendapatkan ACL bucket: %v", err)
	}
	log.Printf("ACL bucket saat ini: %s", *getResult.ACL)
}
<?php
// Kode contoh ini menunjukkan cara mengatur daftar kontrol akses (ACL) untuk bucket.
// Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.

require_once __DIR__ . '/vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$bucketName = 'example-bucket';

$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion('<region-id>');

$client = new Oss\Client($cfg);

try {
    // Atur ACL bucket ke private.
    // Nilai yang valid: BucketACLType::PRIVATE, BucketACLType::PUBLIC_READ, dan BucketACLType::PUBLIC_READ_WRITE.
    $putResult = $client->putBucketAcl(new Oss\Models\PutBucketAclRequest(
        bucket: $bucketName,
        acl: Oss\Models\BucketACLType::PRIVATE
    ));
    printf("ACL bucket berhasil diatur. RequestId: %s\n", $putResult->requestId);

    // Dapatkan ACL bucket.
    $getResult = $client->getBucketAcl(new Oss\Models\GetBucketAclRequest(
        bucket: $bucketName
    ));
    printf("ACL bucket saat ini: %s\n", $getResult->accessControlList->grant);
} catch (Exception $e) {
    printf("Operasi gagal: %s\n", $e->getMessage());
}
// Kode contoh ini menunjukkan cara mengatur daftar kontrol akses (ACL) untuk bucket.
// Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.

using OSS = AlibabaCloud.OSS.V2;

var bucketName = "example-bucket";
var region = "<region-id>";

var cfg = OSS.Configuration.LoadDefault();
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
cfg.Region = region;

using var client = new OSS.Client(cfg);

try
{
    // Atur ACL bucket ke private.
    // Nilai yang valid: "private", "public-read", dan "public-read-write".
    var putResult = await client.PutBucketAclAsync(new OSS.Models.PutBucketAclRequest()
    {
        Bucket = bucketName,
        Acl = "private"
    });
    Console.WriteLine($"ACL bucket berhasil diatur. RequestId: {putResult.RequestId}");

    // Dapatkan ACL bucket.
    var getResult = await client.GetBucketAclAsync(new OSS.Models.GetBucketAclRequest()
    {
        Bucket = bucketName
    });
    Console.WriteLine($"ACL bucket saat ini: {getResult.AccessControlPolicy?.AccessControlList?.Grant}");
}
catch (Exception ex)
{
    Console.WriteLine($"Operasi gagal: {ex.Message}");
}
// Kode contoh ini menunjukkan cara mengatur daftar kontrol akses (ACL) untuk bucket.
// Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.

const OSS = require('ali-oss');

async function main() {
    const bucketName = 'example-bucket';

    const client = new OSS({
        region: 'oss-<region-id>',
        accessKeyId: process.env.OSS_ACCESS_KEY_ID,
        accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
        authorizationV4: true,
    });

    try {
        // Atur ACL bucket ke private.
        // Nilai yang valid: 'private', 'public-read', dan 'public-read-write'.
        await client.putBucketACL(bucketName, 'private');
        console.log('ACL bucket berhasil diatur.');

        // Dapatkan ACL bucket.
        const result = await client.getBucketACL(bucketName);
        console.log(`ACL bucket saat ini: ${result.acl}`);
    } catch (err) {
        console.error('Operasi gagal:', err.message);
    }
}

main();

Memantau perubahan ACL bucket

Gunakan ActionTrail untuk melacak perubahan ACL bucket, termasuk identitas pelaku dan waktu perubahan. Fitur ini membantu dalam investigasi akses tidak biasa, kebocoran data, peringatan keamanan, atau audit rutin.

  1. Buka Konsol ActionTrail. Pada panel navigasi kiri, pilih Event > Event Query.

  2. Pilih wilayah bucket tersebut. Atur Service Name ke Object Storage Service (OSS) dan Event Name ke PutBucketAcl. ActionTrail akan secara otomatis mencari catatan yang sesuai.

  3. Nonaktifkan opsi Summary List. Pada kolom Actions dari catatan perubahan, klik View Details, lalu klik Configure Timeline untuk melihat nilai sebelum dan sesudah perubahan.

FAQ

Origin CDN: Apakah ACL publik diperlukan?

Tidak. Dengan ACL privat, Anda tetap dapat mengonfigurasi CDN untuk mengakses bucket tersebut. Atur akses ke bucket origin privat.

Dokumen terkait