Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Use resource groups to grant permissions to multiple buckets

Son Güncelleme:Oct 15, 2026

Kaynak grubu, erişim kontrolü için kaynak tabanlı bir yöntem sunar. Aynı izin gereksinimlerine sahip paketleri gruplayabilir ve ardından tüm gruba izinler verebilirsiniz. Bu yaklaşım yetkilendirme verimliliğini artırır.

Arka plan

Kuruluşlar, kaynakları yalıtmak amacıyla farklı projeler, bağlı kuruluşlar veya departmanlar için ayrı Alibaba Cloud hesapları oluşturur. Ancak hesap sayısının artması, cloud kaynaklarının merkezi olarak yönetilmesini, izlenmesini ve denetlenmesini zorlaştırır.

account

Bu sorunu çözmek için Object Storage Service (OSS), tek bir Alibaba Cloud hesabı kullanarak cloud kaynaklarınızı farklı senaryolara göre kaynak gruplarında düzenlemenize olanak tanır. Böylece kuruluşunuzdaki proje üyeleri kendi proje kaynaklarını yönetebilir.

rg

Kullanım notları

  • Bir kaynak grubu farklı bölgelerdeki paketleri içerebilir. Bir paket yalnızca bir kaynak grubuna ait olabilir.

  • Bir paket yalnızca aynı Alibaba Cloud hesabına ait kaynak grupları arasında aktarılabilir.

Yöntem

OSS konsolunu kullanma

Bu bölümde, farklı departmanların test verilerini depolamak için 20 paket kullanan bir şirket örneği ele alınmaktadır. Amaç, tüm çalışanlara 10 pakete (examplebucket1 ile examplebucket10 arasında) salt okunur erişim ve diğer 10 pakete (examplebucket11 ile examplebucket20 arasında) okuma-yazma erişimi vermektir. Kaynak grupları kullanılmazsa her paket için izinleri tek tek yapılandırmanız gerekir; bu zahmetli bir işlemdir. Kaynak gruplarını kullanarak aynı izin gereksinimine sahip paketleri gruplayabilir ve gruba izin verebilirsiniz; bu da verimliliği büyük ölçüde artırır.

Ayrıca, birden fazla çalışanın izinlerini etkin bir şekilde yönetmek için RAM kullanıcılarını sınıflandırmak ve yetkilendirmek üzere bir kullanıcı grubu oluşturabilirsiniz. Bu işlem kullanıcı ve izin yönetimini basitleştirir.

  1. UserGroup1 adlı bir kullanıcı grubu oluşturun ve üyeleri ekleyin.

    RAM konsolunda UserGroup1 adlı bir kullanıcı grubu oluşturun. Daha fazla bilgi için bkz. RAM kullanıcı grubu oluşturma. Kullanıcı grubu oluşturulduktan sonra gerekli kullanıcıları gruba ekleyin. Daha fazla bilgi için bkz. RAM kullanıcısını RAM kullanıcı grubuna ekleme.

  2. Kaynak grupları oluşturun.

    1. Kaynak Yönetimi konsoluna gidin.

    2. Sol gezinme bölmesinde Resource Group > Resource Group seçeneklerini seçin.

    3. Resource Group sayfasında Create Resource Group seçeneğine tıklayın.

    4. Create Resource Group panelinde Display Name alanını ResourcegroupA olarak ayarlayın ve Resource Group Identifier alanına Group1 gibi özel bir değer girin.

    5. OK seçeneğine tıklayın.

      Kaynak grubu artık Creating durumundadır. Yaklaşık üç saniye sonra 资源组_刷新列表 simgesine tıklayın. Durum Available olarak değişirse ResourcegroupA kaynak grubu başarıyla oluşturulmuştur.

    6. Önceki adımları tekrarlayarak ResourcegroupB adlı bir kaynak grubu oluşturun.

  3. Paketleri kaynak gruplarına atayın.

    1. OSS konsoluna giriş yapın.

    2. Buckets seçeneğine tıklayın ve ardından hedef paket olan examplebucket1 seçeneğine tıklayın.

    3. Bucket Settings > Resource Group menüsünü seçin.

    4. Resource Group sayfasında Settings seçeneğine tıklayın.

    5. Resource Group açılır listesinden ResourcegroupA seçeneğini belirleyin ve Save seçeneğine tıklayın.

    6. Bu adımları tekrarlayarak examplebucket2 ile examplebucket10 arasındaki paketleri ResourcegroupA'ya, examplebucket11 ile examplebucket20 arasındaki paketleri ise ResourcegroupB'ye atayın.

  4. Kaynak gruplarına izin verin.

    1. Kaynak Yönetimi konsolunun sol gezinme bölmesinde Resource Group > Resource Group seçeneklerini seçin.

    2. Hedef kaynak grubunu bulun ve Actions sütunundaki Manage Permission seçeneğine tıklayın.

    3. Permissions sekmesinde Grant Permission seçeneğine tıklayın.

    4. Grant Permission panelinde parametreleri aşağıdaki tabloda açıklandığı gibi yapılandırın.


      Parameter


      Description


      Authorized Scope


      Specific Resource Group seçeneğini belirleyin ve ardından açılır listeden ResourcegroupA seçeneğini seçin.


      Principal


      Oluşturduğunuz kullanıcı grubunu girin: UserGroup1.


      Select Policy


      System Policy seçeneğini belirleyin. Ardından, ResourcegroupA'daki Object Storage Service (OSS) kaynaklarına salt okunur erişim vermek için AliyunOSSReadOnlyAccess ilkesini atayın.

    5. OK seçeneğine tıklayın.

    6. Complete seçeneğine tıklayın.

    7. Bu adımları tekrarlayarak ResourcegroupB'ye AliyunOSSFullAccess iznini verin. Bu ilke, OSS için tam yönetim erişimi sağlar.

Alibaba Cloud SDK'larını kullanma

Java, Python veya Go için SDK'ları kullanarak bir paketin kaynak grubunu yapılandırabilirsiniz. Daha fazla bilgi için bkz. SDK'ya genel bakış.

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 {
        // In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the name of the bucket. Example: examplebucket. 
        String bucketName = "examplebucket";
        // Specify the ID of the resource group. If you do not specify a resource group ID, the bucket belongs to the default resource group. 
        String rgId = "rg-aekz****";
        // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        String region = "cn-hangzhou";
        
        // Create an OSSClient instance. 
        // Call the shutdown method to release associated resources when the OSSClient is no longer in use.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Create a setBucketResourceGroupRequest object. 
            SetBucketResourceGroupRequest setBucketResourceGroupRequest = new SetBucketResourceGroupRequest(bucketName,rgId);
            // Configure the resource group to which the bucket belongs. 
            ossClient.setBucketResourceGroup(setBucketResourceGroupRequest);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + 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"
)

// Specify the global variables.
var (
	region     string // The region in which the bucket is located.
	bucketName string // The name of the bucket.
)

// Specify the init function used to initialize command line parameters.
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	// Parse command line parameters.
	flag.Parse()

	// Specify the ID of the resource group. If you do not specify a resource group ID, the bucket belongs to the default resource group.
	var groupId string = "rg-aekz****"

	// Check whether the bucket name is empty.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Check whether the region is empty.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Load the default configurations and specify the credential provider and region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

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

	// Create a request to configure the resource group for the bucket.
	request := &oss.PutBucketResourceGroupRequest{
		Bucket: oss.Ptr(bucketName), // The name of the bucket.
		BucketResourceGroupConfiguration: &oss.BucketResourceGroupConfiguration{
			ResourceGroupId: oss.Ptr(groupId),
		},
	}

	// Execute the request to configure the resource group for the bucket.
	result, err := client.PutBucketResourceGroup(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to put bucket resource group %v", err)
	}

	// Display the result of the request.
	log.Printf("put bucket resource group result:%#v\n", result)
}
import argparse
import alibabacloud_oss_v2 as oss

# Create a command line argument parser and describe the purpose of the script: configure the resource group for a bucket.
parser = argparse.ArgumentParser(description="put bucket resource group sample")

# Define the command-line arguments, including the required parameters - region and bucket name - as well as the optional parameters - endpoint and resource group ID.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
parser.add_argument('--resource_group_id',
                    help='The ID of the resource group to which the bucket belongs. (Optional, default is an empty string)',
                    default='')

def main():
    # Parse command line arguments to obtain the values entered.
    args = parser.parse_args()

    # Load access credentials from environment variables for authentication.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Use the default configuration to create a cfg object and specify the credential provider.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Set the region attribute of the cfg object to the region provided in the command line.
    cfg.region = args.region

    # If a custom endpoint is provided, update the endpoint attribute of the cfg object with the provided endpoint.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Use the preceding settings to initialize the OSSClient instance.
    client = oss.Client(cfg)

    # Send a request to configure the resource group for the specified bucket.
    result = client.put_bucket_resource_group(oss.PutBucketResourceGroupRequest(
            bucket=args.bucket,  # Name of the bucket.
            bucket_resource_group_configuration=oss.BucketResourceGroupConfiguration(
                resource_group_id=args.resource_group_id,  # Resource group ID.
            ),
    ))

    # Display the HTTP status code of the operation and request ID to check the request status.
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          )

# Call the main function to start the processing logic when the script is directly run.
if __name__ == "__main__":
    main()  # Entry point of the script. The control flow starts here.

ossutil kullanma

Bir kaynak grubunu yapılandırmak için ossutil aracını kullanabilirsiniz. ossutil'i nasıl yükleyeceğiniz hakkında bilgi için bkz. ossutil yükleme.

Aşağıdaki komut, examplebucket paketi için kaynak grubu kimliğini rg-123 olarak ayarlar.

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

Bu komutla ilgili daha fazla bilgi için bkz. put-bucket-resource-group.

API başvurusu

Bu konudaki işlemler temel REST API'yi kullanır. Gelişmiş özelleştirme için REST API'yi doğrudan çağırabilirsiniz; bu durumda istek imzasını manuel olarak hesaplamanız gerekir. Daha fazla bilgi için bkz. PutBucketResourceGroup.