All Products
Search
Document Center

Object Storage Service:Gunakan kelompok sumber daya untuk memberikan izin ke beberapa bucket

Last Updated:May 10, 2026

Kelompok sumber daya menyediakan metode berbasis sumber daya untuk kontrol akses. Anda dapat mengelompokkan bucket yang memiliki kebutuhan izin yang sama, lalu memberikan izin ke seluruh kelompok tersebut. Pendekatan ini meningkatkan efisiensi otorisasi.

Latar Belakang

Perusahaan sering membuat akun Alibaba Cloud terpisah untuk proyek, anak perusahaan, atau departemen yang berbeda guna mengisolasi sumber daya. Namun, banyaknya akun tersebut menyulitkan pengelolaan, pemantauan, dan audit terpusat terhadap sumber daya cloud.

account

Untuk mengatasi tantangan ini, Object Storage Service (OSS) memungkinkan Anda menggunakan satu akun Alibaba Cloud untuk mengorganisasi sumber daya cloud ke dalam kelompok sumber daya berdasarkan skenario yang berbeda. Hal ini memberdayakan anggota proyek di dalam perusahaan Anda untuk mengelola sumber daya proyek mereka sendiri.

rg

Catatan Penggunaan

  • Satu kelompok sumber daya dapat berisi bucket dari wilayah yang berbeda. Satu bucket hanya dapat dimiliki oleh satu kelompok sumber daya.

  • Bucket hanya dapat dipindahkan antar kelompok sumber daya yang berada dalam satu akun Alibaba Cloud yang sama.

Prosedur

Gunakan Konsol OSS

Bagian ini memberikan contoh perusahaan yang menggunakan 20 bucket untuk menyimpan data uji dari berbagai departemen. Tujuannya adalah memberikan akses read-only ke 10 bucket (examplebucket1 hingga examplebucket10) dan akses baca-tulis ke 10 bucket lainnya (examplebucket11 hingga examplebucket20) untuk seluruh karyawan. Tanpa kelompok sumber daya, Anda harus mengonfigurasi izin untuk setiap bucket secara individual—proses yang membosankan. Dengan menggunakan kelompok sumber daya, Anda dapat mengelompokkan bucket yang memiliki kebutuhan izin yang sama dan memberikan izin ke kelompok tersebut, sehingga efisiensi meningkat secara signifikan.

Selain itu, untuk mengelola izin bagi banyak karyawan secara efisien, Anda dapat membuat grup pengguna untuk mengklasifikasikan dan memberi otorisasi kepada RAM user. Hal ini menyederhanakan pengelolaan pengguna dan izin.

  1. Buat grup pengguna bernama UserGroup1 dan tambahkan anggotanya.

    Di Konsol RAM, buat grup pengguna bernama UserGroup1. Untuk informasi lebih lanjut, lihat Buat grup pengguna RAM. Setelah grup pengguna dibuat, tambahkan pengguna yang diperlukan ke dalam grup tersebut. Untuk informasi lebih lanjut, lihat Tambahkan RAM user ke grup pengguna RAM.

  2. Buat kelompok sumber daya.

    1. Buka Konsol Resource Management.

    2. Di panel navigasi kiri, pilih Resource Group > Resource Group.

    3. Pada halaman Resource Group, klik Create Resource Group.

    4. Di panel Create Resource Group, atur Display Name menjadi ResourcegroupA dan masukkan Resource Group Identifier kustom, misalnya Group1.

    5. Klik OK.

      Kelompok sumber daya kini berada dalam status Creating. Setelah sekitar tiga detik, klik 资源组_刷新列表. Jika status berubah menjadi Available, berarti kelompok sumber daya ResourcegroupA berhasil dibuat.

    6. Ulangi langkah-langkah sebelumnya untuk membuat kelompok sumber daya bernama ResourcegroupB.

  3. Tetapkan bucket ke kelompok sumber daya.

    1. Masuk ke Konsol OSS.

    2. Klik Buckets, lalu klik bucket target, yaitu examplebucket1.

    3. Pilih Bucket Settings > Resource Group.

    4. Pada halaman Resource Group, klik Settings.

    5. Pilih ResourcegroupA dari daftar drop-down Resource Group dan klik Save.

    6. Ulangi langkah-langkah ini untuk menetapkan bucket examplebucket2 hingga examplebucket10 ke ResourcegroupA, serta bucket examplebucket11 hingga examplebucket20 ke ResourcegroupB.

  4. Berikan izin ke kelompok sumber daya.

    1. Di panel navigasi kiri Konsol Resource Management, pilih Resource Group > Resource Group.

    2. Temukan kelompok sumber daya target dan klik Manage Permission di kolom Actions.

    3. Pada tab Permissions, klik Grant Permission.

    4. Di panel Grant Permission, konfigurasikan parameter seperti yang dijelaskan dalam tabel berikut.

      Parameter

      Deskripsi

      Authorized Scope

      Pilih Specific Resource Group, lalu pilih ResourcegroupA dari daftar drop-down.

      Principal

      Masukkan grup pengguna yang telah Anda buat: UserGroup1.

      Select Policy

      Pilih System Policy. Kemudian, tetapkan kebijakan AliyunOSSReadOnlyAccess untuk memberikan akses read-only ke sumber daya Object Storage Service (OSS) dalam ResourcegroupA.

    5. Klik OK.

    6. Klik Complete.

    7. Ulangi langkah-langkah ini untuk memberikan izin AliyunOSSFullAccess ke ResourcegroupB. Kebijakan ini memberikan akses pengelolaan penuh ke OSS.

Gunakan SDK Alibaba Cloud

Anda dapat mengonfigurasi kelompok sumber daya untuk bucket menggunakan SDK untuk Java, Python, atau Go. Untuk informasi lebih lanjut, lihat Ikhtisar SDK.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.SetBucketResourceGroupRequest;

public class Demo {
    public static void main(String[] args) throws Throwable {
        // Pada contoh ini, digunakan endpoint wilayah China (Hangzhou). Tentukan endpoint aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan ID kelompok sumber daya. Jika Anda tidak menentukan ID kelompok sumber daya, bucket akan termasuk dalam kelompok sumber daya default.
        String rgId = "rg-aekz****";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";
        
        // Buat instance OSSClient.
        // Panggil metode shutdown untuk melepaskan sumber daya terkait ketika OSSClient tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Buat objek setBucketResourceGroupRequest.
            SetBucketResourceGroupRequest setBucketResourceGroupRequest = new SetBucketResourceGroupRequest(bucketName,rgId);
            // Konfigurasikan kelompok sumber daya tempat bucket berada.
            ossClient.setBucketResourceGroup(setBucketResourceGroupRequest);
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, artinya permintaan Anda sampai ke OSS, "
                    + "tetapi ditolak dengan tanggapan error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, artinya klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
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 tempat bucket berada.
	bucketName string // Nama bucket.
)

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

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

	// Tentukan ID kelompok sumber daya. Jika Anda tidak menentukan ID kelompok sumber daya, bucket akan termasuk dalam kelompok sumber daya default.
	var groupId string = "rg-aekz****"

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

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

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

	// Buat instance OSSClient.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk mengonfigurasi kelompok sumber daya untuk bucket.
	request := &oss.PutBucketResourceGroupRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
		BucketResourceGroupConfiguration: &oss.BucketResourceGroupConfiguration{
			ResourceGroupId: oss.Ptr(groupId),
		},
	}

	// Jalankan permintaan untuk mengonfigurasi kelompok sumber daya untuk bucket.
	result, err := client.PutBucketResourceGroup(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal mengatur kelompok sumber daya bucket %v", err)
	}

	// Tampilkan hasil permintaan.
	log.Printf("hasil pengaturan kelompok sumber daya bucket:%#v\n", result)
}
import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah dan jelaskan tujuan skrip: mengonfigurasi kelompok sumber daya untuk bucket.
parser = argparse.ArgumentParser(description="contoh put bucket resource group")

# Definisikan argumen baris perintah, termasuk parameter yang diperlukan - wilayah dan nama bucket - serta parameter opsional - endpoint dan ID kelompok sumber daya.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
parser.add_argument('--resource_group_id',
                    help='ID kelompok sumber daya tempat bucket berada. (Opsional, default adalah string kosong)',
                    default='')

def main():
    # Uraikan argumen baris perintah untuk mendapatkan nilai yang dimasukkan.
    args = parser.parse_args()

    # Muat kredensial akses dari variabel lingkungan untuk otentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default untuk membuat objek cfg dan tentukan penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Atur atribut wilayah objek cfg ke wilayah yang disediakan dalam baris perintah.
    cfg.region = args.region

    # Jika endpoint kustom disediakan, perbarui atribut endpoint objek cfg dengan endpoint yang disediakan.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan pengaturan sebelumnya untuk menginisialisasi instance OSSClient.
    client = oss.Client(cfg)

    # Kirim permintaan untuk mengonfigurasi kelompok sumber daya untuk bucket yang ditentukan.
    result = client.put_bucket_resource_group(oss.PutBucketResourceGroupRequest(
            bucket=args.bucket,  # Nama bucket.
            bucket_resource_group_configuration=oss.BucketResourceGroupConfiguration(
                resource_group_id=args.resource_group_id,  # ID kelompok sumber daya.
            ),
    ))

    # Tampilkan kode status HTTP operasi dan ID permintaan untuk memeriksa status permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          )

# Panggil fungsi main untuk memulai logika pemrosesan saat skrip dijalankan secara langsung.
if __name__ == "__main__":
    main()  # Titik masuk skrip. Alur kontrol dimulai di sini.

Gunakan ossutil

Anda dapat menggunakan ossutil untuk mengonfigurasi kelompok sumber daya. Untuk informasi cara menginstal ossutil, lihat Instal ossutil.

Perintah berikut menetapkan ID kelompok sumber daya menjadi rg-123 untuk bucket examplebucket.

ossutil api put-bucket-resource-group --bucket examplebucket --resource-group-configuration "{\"ResourceGroupId\":\"rg-123\"}"

Untuk informasi lebih lanjut tentang perintah ini, lihat put-bucket-resource-group.

Referensi API

Operasi dalam topik ini menggunakan REST API dasar. Untuk kustomisasi lanjutan, Anda dapat memanggil REST API secara langsung, yang mengharuskan Anda menghitung signature permintaan secara manual. Untuk informasi lebih lanjut, lihat PutBucketResourceGroup.