Grup sumber daya adalah metode kontrol akses berbasis sumber daya. Anda dapat menambahkan bucket yang memerlukan izin serupa ke grup sumber daya yang sama, lalu memberikan izin kepada grup tersebut untuk meningkatkan efisiensi pemberian izin.
Informasi latar belakang
Pengguna perusahaan sering membuat beberapa akun Alibaba Cloud untuk mengisolasi sumber daya berdasarkan proyek, anak perusahaan, atau departemen. Namun, pendekatan ini dapat menyulitkan pengelolaan, pemantauan, dan audit terpusat atas sumber daya di akun-akun tersebut.

Object Storage Service (OSS) memungkinkan pengguna membuat grup sumber daya untuk mengklasifikasikan sumber daya dalam akun Alibaba Cloud sesuai dengan skenario bisnis. Dengan cara ini, pengguna perusahaan dapat mengelola sumber daya dalam proyek mereka secara lebih efisien melalui grup sumber daya.

Catatan
Sebuah grup sumber daya dapat mencakup bucket dari wilayah berbeda, namun satu bucket hanya dapat dimiliki oleh satu grup sumber daya.
Bucket hanya dapat dipindahkan antar grup sumber daya yang dibuat oleh pemilik yang sama.
Metode
Gunakan konsol OSS
Misalnya, data uji dari departemen berbeda di perusahaan Anda disimpan di 20 bucket. Anda ingin mengizinkan semua karyawan menulis dan membaca data di 10 bucket serta hanya membaca data di 10 bucket lainnya. Tanpa grup sumber daya, Anda harus mengonfigurasi izin secara terpisah untuk setiap bucket. Dengan grup sumber daya, Anda cukup menambahkan bucket yang memerlukan izin serupa ke grup yang sama dan mengonfigurasi izin untuk grup tersebut.
Selain itu, Anda perlu membuat grup pengguna untuk memberikan izin yang sama kepada beberapa pengguna RAM (karyawan Anda). Grup pengguna bekerja mirip dengan grup sumber daya.
Buat grup pengguna dan tambahkan pengguna RAM ke grup tersebut.
Buat grup pengguna bernama UserGroup1 di konsol RAM. Untuk informasi lebih lanjut, lihat Buat Grup Pengguna RAM. Setelah pembuatan grup pengguna, tambahkan semua pengguna RAM yang memerlukan akses ke bucket Anda ke grup tersebut. Untuk detail lebih lanjut, lihat Tambahkan Pengguna RAM ke Grup Pengguna RAM.
Buat grup sumber daya.
Masuk ke konsol Manajemen Sumber Daya.
Di panel navigasi sebelah kiri, pilih Resource Group > Resource Group.
Pada halaman Resource Group, klik Create Resource Group.
Di panel Create Resource Group, konfigurasikan parameter Nama Grup Sumber Daya dan Pengenal Grup Sumber Daya. Dalam contoh ini, Resource Group Name disetel ke ResourcegroupA dan Resource Group Identifier disetel ke Group1.
Klik OK.
Status grup sumber daya akan berubah menjadi Creating. Tunggu sekitar 3 detik, lalu klik ikon
. Jika status grup sumber daya menjadi Available, ResourcegroupA telah berhasil dibuat.Ulangi langkah-langkah sebelumnya untuk membuat grup sumber daya bernama ResourcegroupB.
Pilih grup sumber daya untuk bucket Anda.
Masuk ke konsol OSS.
Klik Buckets, lalu pilih bucket examplebucket1.
Pilih Bucket Settings > Resource Group.
Pada halaman Resource Group, klik Settings.
Pilih ResourcegroupA untuk Resource Group dan klik Save.
Ulangi langkah-langkah sebelumnya untuk memilih ResourcegroupA bagi bucket yang ingin Anda otorisasi agar semua karyawan hanya membaca, serta memilih ResourcegroupB bagi bucket yang ingin Anda otorisasi agar semua karyawan membaca dan menulis.
Konfigurasikan izin yang diperlukan untuk mengakses grup sumber daya.
Masuk ke konsol Manajemen Sumber Daya. Di panel navigasi sebelah kiri, pilih Resource Group > Grup Sumber Daya.
Temukan grup sumber daya dalam daftar dan klik Manage Permission di kolom Aksi.
Pada tab Permissions, klik Grant Permission.
Di panel Grant Permission, konfigurasikan parameter yang diperlukan. Tabel berikut menjelaskan parameter tersebut.
Parameter
Deskripsi
Cakupan Otorisasi
Pilih Specific Resource Group. Lalu, pilih ResourcegroupA dari daftar drop-down.
Principal
Masukkan UserGroup1.
Pilih Kebijakan
Pilih System Policy. Di kolom Nama Kebijakan Otorisasi, klik
AliyunOSSReadOnlyAccessuntuk mengotorisasi pengguna RAM di UserGroup1 hanya untuk membaca objek di bucket di ResourcegroupA.Klik OK.
Klik Complete.
Ulangi langkah-langkah sebelumnya untuk melampirkan kebijakan
AliyunOSSFullAccesske pengguna RAM di UserGroup1 guna mengotorisasi pengguna RAM membaca dan menulis objek di bucket di ResourcegroupB.
Gunakan SDK OSS
Hanya SDK OSS untuk Java, Python, dan Go yang mendukung konfigurasi grup sumber daya. Untuk informasi lebih lanjut, lihat Ikhtisar.
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 {
// Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan 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 grup sumber daya. Jika Anda tidak menentukan ID grup sumber daya, bucket termasuk dalam grup sumber daya default.
String rgId = "rg-aekz****";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya terkait saat 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 grup sumber daya tempat bucket termasuk.
ossClient.setBucketResourceGroup(setBucketResourceGroupRequest);
} catch (OSSException oe) {
System.out.println("Menangkap OSSException, yang berarti permintaan Anda sampai ke OSS, "
+ "tetapi ditolak dengan respons kesalahan karena alasan tertentu.");
System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
System.out.println("Kode Kesalahan:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Menangkap ClientException, yang berarti klien mengalami "
+ "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
+ "seperti tidak dapat mengakses jaringan.");
System.out.println("Pesan Kesalahan:" + 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(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Analisis parameter baris perintah.
flag.Parse()
// Tentukan ID grup sumber daya. Jika Anda tidak menentukan ID grup sumber daya, bucket termasuk dalam grup 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 diperlukan")
}
// Periksa apakah wilayah kosong.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat instance OSSClient.
client := oss.NewClient(cfg)
// Buat permintaan untuk mengonfigurasi grup sumber daya untuk bucket.
request := &oss.PutBucketResourceGroupRequest{
Bucket: oss.Ptr(bucketName), // Nama bucket.
BucketResourceGroupConfiguration: &oss.BucketResourceGroupConfiguration{
ResourceGroupId: oss.Ptr(groupId),
},
}
// Eksekusi permintaan untuk mengonfigurasi grup sumber daya untuk bucket.
result, err := client.PutBucketResourceGroup(context.TODO(), request)
if err != nil {
log.Fatalf("gagal menempatkan grup sumber daya bucket %v", err)
}
// Tampilkan hasil permintaan.
log.Printf("hasil grup sumber daya bucket:%#v\n", result)
}
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah dan jelaskan tujuan skrip: konfigurasikan grup sumber daya untuk bucket.
parser = argparse.ArgumentParser(description="tempatkan grup sumber daya bucket sampel")
# Definisikan argumen baris perintah, termasuk parameter yang diperlukan - wilayah dan nama bucket - serta parameter opsional - titik akhir dan ID grup 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 grup sumber daya tempat bucket termasuk. (Opsional, default adalah string kosong)',
default='')
def main():
# Analisis 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 diberikan di baris perintah.
cfg.region = args.region
# Jika titik akhir kustom diberikan, perbarui atribut titik akhir objek cfg dengan titik akhir yang diberikan.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Gunakan pengaturan di atas untuk menginisialisasi instance OSSClient.
client = oss.Client(cfg)
# Kirim permintaan untuk mengonfigurasi grup 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 grup 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 utama untuk memulai logika pemrosesan saat skrip dijalankan langsung.
if __name__ == "__main__":
main() # Titik masuk skrip. Alur kontrol dimulai di sini.Gunakan ossutil
Anda dapat menggunakan ossutil untuk mengonfigurasi grup sumber daya. Untuk informasi tentang instalasinya, lihat Instal ossutil.
Jalankan perintah berikut untuk mengonfigurasi grup sumber daya dengan ID rg-123 untuk 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.
Operasi API terkait
Metode yang dijelaskan di atas pada dasarnya diimplementasikan berdasarkan API RESTful, yang dapat Anda panggil langsung jika bisnis Anda memerlukan tingkat penyesuaian yang tinggi. Untuk memanggil API secara langsung, Anda harus menyertakan perhitungan tanda tangan dalam kode Anda. Untuk informasi lebih lanjut, lihat PutBucketResourceGroup.