すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:リソースグループを使用して複数のバケットに同じ権限を付与する

最終更新日:Dec 12, 2024

リソースグループは、リソースベースのアクセス制御方法です。 同じ権限を付与するバケットを同じリソースグループに追加してから、リソースグループに権限を付与することができます。 これにより、認証の効率が向上する。

背景情報

エンタープライズユーザーは、さまざまなプロジェクト、子会社、部門のリソースを分離するために、複数のAlibaba Cloudアカウントを作成できます。 ただし、これにより、エンタープライズユーザーがこれらのAlibaba Cloudアカウントに存在するリソースを一元的に管理、監視、および監査することが困難になります。

account

Object Storage Service (OSS) を使用すると、ユーザーはリソースグループを作成して、ビジネスシナリオに基づいてAlibaba Cloudアカウントのリソースを分類できます。 これにより、企業内のユーザーはリソースグループを使用して、プロジェクト内のリソースを効率的に管理できます。

rg

使用上の注意

  • リソースグループは、次のリージョンのバケットでサポートされています。中国 (杭州) 、中国 (上海) 、中国 (青島) 、中国 (北京) 、中国 (張家口) 、中国 (フフホト) 、中国 (ウランカブ) 、中国 (深セン) 、中国 (河源) 、中国 (広州) 、中国 (成都) 、中国 (香港) 、米国 (シリコンバレー) 、米国 (バージニア) 、日本 (東京) 、シンガポール、マレーシア (クアラルンプール) 、インドネシア (ジャカルタ) 、ドイツ (フランクフルト) 、英国 (ロンドン) 、アラブ首長国連邦 (ドバイ)

  • リソースグループには、異なるリージョンのバケットを含めることができます。 バケットは1つのリソースグループにのみ属することができます。

  • バケットは、同じ所有者によって作成されたリソースグループ間でのみ転送できます。

手順

OSSコンソールの使用

次の例では、社内のさまざまな部門のテストデータが20個のバケットに保存されます。 すべての従業員が10個のバケットに格納されているデータの書き込みと読み取りを許可し、他の10個のバケットに格納されているデータの読み取りのみを許可します。 リソースグループを使用しない場合は、バケットごとに必要な権限を個別に設定する必要があります。 リソースグループを使用する場合は、同じ権限を必要とするバケットをリソースグループに追加し、リソースグループに必要な権限を設定できます。

また、複数のRAMユーザー (従業員) に同じ権限を付与するユーザーグループを作成する必要があります。 ユーザグループは、リソースグループと同様に機能する。

  1. ユーザーグループを作成し、RAMユーザーをユーザーグループに追加します。

    ユーザーグループを作成し、RAMコンソールでグループにUserGroup1という名前を付けます。 詳細については、「RAMユーザーグループの作成」をご参照ください。 ユーザーグループを作成したら、バケット内のデータにアクセスする必要があるすべてのRAMユーザーをユーザーグループに追加します。 詳細については、「RAMユーザーグループへのRAMユーザーの追加」をご参照ください。

  2. リソースグループを作成します。

    1. リソース管理コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、[リソースグループ] > [リソースグループ] を選択します。

    3. [リソースグループ] ページで、[リソースグループの作成] をクリックします。

    4. [リソースグループの作成] パネルで、リソースグループ名とリソースグループ識別子パラメーターを設定します。 この例では、リソースグループ名ResourcegroupAに設定され、リソースグループ識別子Group1に設定されます。

    5. [OK] をクリックします。

      リソースグループのステータスが [作成中] になります。 約3秒待って、アイコンをクリックし资源组_刷新列表ます。 リソースグループのステータスがAvailableになると、ResourcegroupAが作成されます。

    6. 上記の手順を繰り返して、ResourcegroupBという名前のリソースグループを作成します。

  3. バケットのリソースグループを選択します。

    1. OSSコンソールにログインします。

    2. バケットリスト をクリックし、examplebucket1バケットをクリックします。

    3. バケットの設定 > リソースグループ を選択します。

    4. [リソースグループ] ページで、設定 をクリックします。

    5. リソースグループ のResourcegroupAを選択し、設定 をクリックします。

    6. 上記の手順を繰り返して、すべての従業員に読み取りのみを許可するバケットにResourcegroupAを選択し、すべての従業員に読み取りと書き込みを許可するバケットにResourcegroupBを選択します。

  4. リソースグループにアクセスするために必要な権限を設定します。

    1. リソース管理コンソールにログインします。 左側のナビゲーションウィンドウで、[リソースグループ] > [リソースグループ] を選択します。

    2. リストでリソースグループを検索し、[操作] 列の [権限の管理] をクリックします。

    3. [権限] タブで、[権限の付与] をクリックします。

    4. [権限付与] パネルで、パラメーターを設定します。 次の表にパラメーターを示します。

      パラメーター

      説明

      承認済みスコープ

      [特定のリソースグループ] を選択します。 次に、ドロップダウンリストからResourcegroupAを選択します。

      プリンシパル

      UserGroup1を入力します。

      ポリシーの選択

      [システムポリシー] を選択します。 [権限付与ポリシー名] 列で、[AliyunOSSReadOnlyAccess] をクリックして、UserGroup1のRAMユーザーにResourcegroupAのバケット内のオブジェクトの読み取りのみを許可します。

    5. [OK] をクリックします。

    6. [送信] をクリックします。

    7. 上記の手順を繰り返して、UserGroup1のRAMユーザーにAliyunOSSFullAccessポリシーをアタッチし、ResourcegroupBのバケット内のオブジェクトを読み書きする権限をRAMユーザーに付与します。

OSS SDKの使用

OSS SDKを使用してリソースグループを設定する場合、OSS SDK for JavaとOSS SDK for Pythonのみを使用できます。

com.aliyun.oss.*;
impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.mo del.SetBucketResourceGroupRequestをインポートします。public classデモ {
    public static void main(String[] args) Throwable {
        // この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットの名前を指定します。 例: examplebucket. 
        String bucketName = "examplebucket";
        // リソースグループのIDを指定します。 リソースグループIDを指定しない場合、バケットはデフォルトリソースグループに属します。 
        文字列rgId = "rg-aekz ****";

        // Create an OSSClient instance. 
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // setBucketResourceGroupRequestオブジェクトを作成します。 
            SetBucketResourceGroupRequest setBucketResourceGroupRequest=新しいSetBucketResourceGroupRequest(bucketName、rgId);
            // バケットが属するリソースグループを設定します。 
            ossClient.setBucketResourceGroup(setBucketResourceGroupRequest);
        } catch (Exception e) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "しかし、何らかの理由でエラー応答で拒否されました。");
            System.out.println("エラーメッセージ:" + oe.getErrorMessage());
            System.out.println("エラーコード:" + oe.getErrorCode());
            System.out.println("リクエストID:" + oe.getRequestId());
            System.out.println("ホストID:" + oe.getHostId());
        } catch (ClientException e) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + 「ネットワークにアクセスできないなど」;
            System.out.println("エラーメッセージ:" + ce.getMessage());
        } 最後に{
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 このサンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

※ リソースグループのIDを指定します。 リソースグループのIDを指定しない場合、バケットはデフォルトリソースグループに属します。 
resource_group_id = 'rg-aek27tc ****'

# バケットが属するリソースグループを設定します。 
result = bucket.put_bucket_resource_group(resource_group_id)
print (リソースグループの設定に成功しました。 返されたステータス: '+ str(result.status)) 

OSS APIの使用

ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。 詳細については、「PutBucketResourceGroup」をご参照ください。