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

Serverless App Engine:RAM ロールへの権限付与

最終更新日:Jul 18, 2026

Alibaba Cloud アカウントを信頼する RAM ロールを作成し、Serverless App Engine (SAE) リソースへのクロスアカウントアクセスを有効にします。

ユースケース

企業 A は SAE を有効化しており、一部のビジネス運用を企業 B に委任したいと考えています。

  • 企業 A は自社の業務システムに注力し、SAE リソースのオーナーとしてのみ機能し、アプリケーションのデプロイメント、管理、auto scaling、ワンクリックでの起動・停止、モニタリングなどの操作を企業 B に委任します。

  • 企業 A は、企業 B の従業員が入社または退職した際に、権限管理を行う必要がありません。企業 B は、自社の RAM ユーザーによる企業 A のリソースへのアクセス(従業員やアプリケーションに対する詳細な権限を含む)を自ら管理します。

  • 提携関係が終了した場合、企業 A はいつでも企業 B のアクセスを取り消すことができます。

ステップ 1:企業 A が RAM ロールを作成

企業 A および企業 B はそれぞれ Alibaba Cloud アカウント(アカウント A およびアカウント B)を保有しているものとします。

  • Alibaba Cloud アカウント A の ID は 1234************、アカウントエイリアスは company-a です。

  • Alibaba Cloud アカウント B の ID は 2345************、アカウントエイリアスは company-b です。

  1. RAM コンソール に Alibaba Cloud アカウント A でログインします。

  2. 左側のナビゲーションウィンドウで、アイデンティティ > ロール を選択します。

  3. ロール ページで、ロール作成 をクリックします。

  4. ロールの作成 ページで、ロールを設定します。

    1. Trusted Entity Typeクラウドアカウント に設定します。Select Trusted Alibaba Cloud Account では、他の Alibaba Cloud アカウント を選択し、Alibaba Cloud アカウント B の ID を入力してから、OK をクリックします。

    2. ロール名sae-admin を入力し、OK をクリックします。

      重要

      この RAM ロールを特定の RAM ユーザーのみが偽装できるようにするには、以下のいずれかの方法を使用します。

  5. ロールの Basic Information ページでは、RAM ロール名、作成時刻、ARN などの詳細を表示できます。

    • RAM ロール名:sae-admin

    • ARN:acs:ram::1234************:role/sae-admin

    • 信頼ポリシー:

      説明

      以下のポリシーにより、Alibaba Cloud アカウント B の RAM ユーザーがこの RAM ロールを偽装できるようになります。

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "RAM": [
                "acs:ram::2345************:root"
              ]
            }
          }
        ],
        "Version": "1"
      }

ステップ 2:企業 A が RAM ロールに権限を付与

Roles ページからの操作

  1. RAM コンソール に RAM 管理者としてログインします。

  2. 左側のナビゲーションウィンドウで、アイデンティティ > ロール を選択します。

  3. ロール ページで、対象の RAM ロールを見つけ、Actions 列の 権限の付与 をクリックします。

    複数の RAM ロールに同時に権限を付与する場合は、RAM ロールを選択し、リスト下部の 権限の付与 をクリックします。

  4. 権限の付与 パネルで、RAM ロールに権限を付与します。

    1. 権限付与のスコープを選択します。

      • Alibaba Cloud Account:現在の Alibaba Cloud アカウント内のすべてのリソースに対して権限が有効になります。

      • Resource Group:指定されたリソースグループ内のリソースに対してのみ権限が有効になります。

        説明

        リソースグループに対して付与された権限は、クラウドサービスおよびリソースタイプがリソースグループをサポートしている場合にのみ有効になります。詳細については、「リソースグループと連携するサービス」をご参照ください。

    2. プリンシパルを選択します。

      プリンシパルとは、権限を受ける RAM ロールです。システムにより、現在の RAM ロールが自動的に選択されます。

    3. 権限ポリシーを選択します。

      権限ポリシーは、一連の権限を定義します。複数のポリシーを選択できます。

      • システムポリシー:システムポリシーは Alibaba Cloud によって作成・管理されています。使用は可能ですが、変更はできません。詳細については、「RAM と連携するサービス」トピックの「クラウドサービスとシステムポリシー」セクションをご参照ください。

        説明

        AdministratorAccess や AliyunRAMFullAccess などの高リスクのシステムポリシーは、システムにより自動的に識別されます。必要な場合を除き、高リスクの権限を付与しないでください。

      • カスタムポリシー:カスタムポリシーはユーザー自身で作成・管理します。作成、更新、削除が可能です。カスタムポリシーの作成方法の詳細については、「カスタム権限ポリシーの作成」をご参照ください。

    4. 権限を付与 をクリックします。

  5. 閉じる をクリックします。

[付与] ページから

  1. RAM コンソール に RAM 管理者としてログインします。

  2. 左側のナビゲーションウィンドウで、権限管理 > 許可 を選択します。

  3. 許可 ページで、権限の付与 をクリックします。

    image

  4. 権限の付与 パネルで、RAM ロールに権限を付与します。

    1. 権限付与のスコープを選択します。

      • Account:現在の Alibaba Cloud アカウント内のすべてのリソースに対して権限が有効になります。

      • ResourceGroup:指定されたリソースグループ内のリソースに対してのみ権限が有効になります。

        説明

        リソースグループに対して付与された権限は、クラウドサービスおよびリソースタイプがリソースグループをサポートしている場合にのみ有効になります。詳細については、「リソースグループと連携するサービス」をご参照ください。

    2. プリンシパルを選択します。

      プリンシパルとは、権限を受ける RAM ロールです。複数の RAM ロールを選択できます。

    3. 権限ポリシーを選択します。

      権限ポリシーは、一連の権限を定義します。複数のポリシーを選択できます。

      • システムポリシー:システムポリシーは Alibaba Cloud によって作成・管理されています。使用は可能ですが、変更はできません。詳細については、「RAM と連携するサービス」トピックの「クラウドサービスとシステムポリシー」セクションをご参照ください。

        説明

        AdministratorAccess や AliyunRAMFullAccess などの高リスクのシステムポリシーは、システムにより自動的に識別されます。必要な場合を除き、高リスクの権限を付与しないでください。

      • カスタムポリシー:カスタムポリシーはユーザー自身で作成・管理します。作成、更新、削除が可能です。カスタムポリシーの作成方法の詳細については、「カスタム権限ポリシーの作成」をご参照ください。

    4. 権限を付与 をクリックします。

  5. 閉じる をクリックします。

ステップ 3:企業 B が RAM ユーザーを作成

  1. RAM コンソール に Alibaba Cloud アカウント B でログインします。

  2. RAM ユーザーを作成します。詳細については、「RAM ユーザーを作成する」をご参照ください。

ステップ 4:企業 B が RAM ユーザーに権限を付与

  1. RAM コンソール に Alibaba Cloud アカウント B でログインします。

  2. 左側のナビゲーションウィンドウで、Identities > Users を選択します。

  3. Users ページで、対象の RAM ユーザーを見つけ、Actions 列の Add Permissions をクリックします。

    複数の RAM ユーザーに同時に権限を付与する場合は、RAM ユーザーを選択し、リスト下部の Add Permissions をクリックします。

  4. ポリシー セクションで、検索ボックスに AliyunSTSAssumeRoleAccess と入力し、ポリシーを選択して右側の Selected リストに追加してから、OK をクリックします。

  5. Complete をクリックします。

ステップ 5:クロスアカウントリソースへのアクセス

セキュリティトークンサービス (STS) は、カスタムの有効期間と特定の権限を持つ一時的なアクセストークンを提供します。RAM ユーザーやロールなどの認可されたプリンシパルは、トークンを取得し、以下のいずれかの方法で Alibaba Cloud リソースにアクセスできます。

方法 1:コンソールの使用

企業 B の RAM ユーザーは、コンソールにログインして企業 A の SAE リソースにアクセスできます。

  1. 企業 B の RAM ユーザーとして RAM コンソール にログインします。

    詳細については、「RAM ユーザーとして Alibaba Cloud 管理コンソールにログインする」をご参照ください。

  2. コンソールの右上隅で、プロフィール画像にポインターを合わせて、Switch Role をクリックします。

  3. Switch Role ページで、企業 A の Account Alias および Role Name を入力してから、Submit をクリックします。

    ロールの切り替え後、企業 B の RAM ユーザーは企業 A の Serverless App Engine リソースを管理できます。

方法 2:SDK の使用

  1. アクセス認証情報を取得します。この例では Java SDK を使用します。

    1. 実行環境で以下の環境変数を設定します。

      パラメーター

      ALIBABA_CLOUD_ACCESS_KEY_ID

      企業 B の RAM ユーザーの AccessKey ID

      ALIBABA_CLOUD_ACCESS_KEY_SECRET

      企業 B の RAM ユーザーの AccessKey Secret

    2. 以下のコードを実行します。詳細については、「Java SDK の例」および「AssumeRole」をご参照ください。

      package com.aliyun.sample;
      
      import com.aliyun.sts20150401.models.AssumeRoleResponse;
      import com.aliyun.tea.TeaException;
      import com.google.gson.Gson;
      
      public class Sample {
      
          /**
           * 説明 :
           * <p>
           * 認証情報を使用してクライアントを初期化します。
           * </p>
           * 
           * @return Client
           * 
           * @throws Exception
           */
          public static com.aliyun.sts20150401.Client createClient() throws Exception {
              com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
              com.aliyun.teaopenapi.models.Config config =
                      new com.aliyun.teaopenapi.models.Config().setCredential(credential);
              // エンドポイントの詳細については、https://api.aliyun.com/product/Sts をご参照ください。
              config.endpoint = "sts.cn-hangzhou.aliyuncs.com";
              return new com.aliyun.sts20150401.Client(config);
          }
      
          public static void main(String[] args_) throws Exception {
      
              com.aliyun.sts20150401.Client client = Sample.createClient();
              com.aliyun.sts20150401.models.AssumeRoleRequest assumeRoleRequest =
                      new com.aliyun.sts20150401.models.AssumeRoleRequest();
              com.aliyun.teautil.models.RuntimeOptions runtime =
                      new com.aliyun.teautil.models.RuntimeOptions();
      
              // RoleArn の値を自分のロールの ARN に置き換え、カスタムの RoleSessionName を指定します。
              assumeRoleRequest.setRoleArn("acs:ram::1234************:role/sae-admin");
              assumeRoleRequest.setRoleSessionName("Alice");
      
              try {
                  // コードをコピーして実行する場合は、API 応答を出力します。
                  AssumeRoleResponse response = client.assumeRoleWithOptions(assumeRoleRequest, runtime);
                  System.out.println(new Gson().toJson(response.body));
              } catch (TeaException error) {
                  // これはデモ用です。本番プロジェクトでは、例外を慎重に処理し、無視しないでください。
                  // エラーメッセージ
                  System.out.println(error.getMessage());
                  // トラブルシューティング URL
                  System.out.println(error.getData().get("Recommend"));
                  com.aliyun.teautil.Common.assertAsString(error.message);
              } catch (Exception _error) {
                  TeaException error = new TeaException(_error.getMessage(), _error);
                  // これはデモ用です。本番プロジェクトでは、例外を慎重に処理し、無視しないでください。
                  // エラーメッセージ
                  System.out.println(error.getMessage());
                  // トラブルシューティング URL
                  System.out.println(error.getData().get("Recommend"));
                  com.aliyun.teautil.Common.assertAsString(error.message);
              }
          }
      }
      
      説明

      SAE API オペレーションは、HTTP リクエスト、SDK、OpenAPI Explorer を使用して呼び出すことができます。詳細については、「API 概要」をご参照ください。

      期待される出力:

      {
        "requestId": "964E0EC5-575B-4FF5-8FD0-D4BD8025****",
        "assumedRoleUser": {
          "arn": "acs:ram::*************",
          "assumedRoleId": "*************"
        },
        "credentials": {
          "securityToken": "*************",
          "accessKeyId": "STS.*************",
          "accessKeySecret": "*************",
          "expiration": "2021-05-28T11:23:19Z"
        }
      }
  2. 返されたアクセスキーとセキュリティトークンを使用して新しいクライアントを作成します。これにより、企業 B の RAM ユーザーは Alibaba Cloud アカウント A の SAE リソースを管理する権限を取得します。以下の例では、SAE中国 (杭州) リージョンにある名前空間を照会します。

    1. コードの実行環境で以下の環境変数を設定します。

      パラメーター

      ALIBABA_CLOUD_ACCESS_KEY_ID

      前のステップの応答における credentials.accessKeyId

      ALIBABA_CLOUD_ACCESS_KEY_SECRET

      前のステップの応答における credentials.accessKeySecret

      ALIBABA_CLOUD_SECURITY_TOKEN

      前のステップの応答における credentials.securityToken

    2. 以下のコードを実行します。

      package com.aliyun.sample;
      
      import com.aliyun.sae20190506.models.DescribeNamespacesResponse;
      import com.aliyun.tea.*;
      import com.google.gson.Gson;
      
      public class Sample {
      
          /**
           * description :
           * <p>
           * 認証情報を使用してクライアントを初期化します。
           * </p>
           * 
           * @return Client
           * 
           * @throws Exception
           */
          public static com.aliyun.sae20190506.Client createClient() throws Exception {
              com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
              com.aliyun.teaopenapi.models.Config config =
                      new com.aliyun.teaopenapi.models.Config().setCredential(credential);
              // エンドポイントの詳細については、https://api.aliyun.com/product/sae をご参照ください。
              config.endpoint = "sae.cn-hangzhou.aliyuncs.com";
              return new com.aliyun.sae20190506.Client(config);
          }
      
          public static void main(String[] args_) throws Exception {
      
              com.aliyun.sae20190506.Client client = Sample.createClient();
              com.aliyun.sae20190506.models.DescribeNamespacesRequest describeNamespacesRequest =
                      new com.aliyun.sae20190506.models.DescribeNamespacesRequest();
              com.aliyun.teautil.models.RuntimeOptions runtime =
                      new com.aliyun.teautil.models.RuntimeOptions();
              java.util.Map<String, String> headers = new java.util.HashMap<>();
      
              // 次のパラメーターを要件に基づいて置き換えてください。
              describeNamespacesRequest.setCurrentPage(1);
              describeNamespacesRequest.setPageSize(10);
      
      
              try {
                  DescribeNamespacesResponse response = client
                          .describeNamespacesWithOptions(describeNamespacesRequest, headers, runtime);
                  System.out.println(new Gson().toJson(response.body));
              } catch (TeaException error) {
                  // これはデモ用です。本番プロジェクトでは、例外を慎重に処理し、無視しないでください。
                  // エラーメッセージ
                  System.out.println(error.getMessage());
                  // トラブルシューティング URL
                  System.out.println(error.getData().get("Recommend"));
                  com.aliyun.teautil.Common.assertAsString(error.message);
              } catch (Exception _error) {
                  TeaException error = new TeaException(_error.getMessage(), _error);
                  // これはデモ用です。本番プロジェクトでは、例外を慎重に処理し、無視しないでください。
                  // エラーメッセージ
                  System.out.println(error.getMessage());
                  // トラブルシューティング URL
                  System.out.println(error.getData().get("Recommend"));
                  com.aliyun.teautil.Common.assertAsString(error.message);
              }
          }
      }
      

アクセスの取り消し

企業 A と企業 B の提携関係が終了した場合、企業 A は RAM ロールから権限を削除してからロールを削除することで、アクセスを取り消すことができます。これにより、Alibaba Cloud アカウント B の RAM ユーザーがロールを偽装して Alibaba Cloud アカウント A のリソースにアクセスできなくなります。

説明

RAM ロールを削除する前に、そのロールに付与された権限を取り消す必要があります。詳細については、「RAM ロールからの権限取り消し」をご参照ください。

  1. RAM コンソール に Alibaba Cloud アカウント A でログインします。

  2. 左側のナビゲーションウィンドウで、アイデンティティ > ロール に移動します。

  3. ロール ページで、削除する RAM ロールを見つけ、操作 列の ロールの削除 をクリックします。

  4. ロールの削除 ダイアログボックスで、RAM ロール名を入力し、ロールの削除 をクリックします。

    ロール名は大文字と小文字を区別します。入力する名前は、ロールリストに表示されている名前と完全に一致する必要があります。一致しない場合、Delete Role ボタンは無効のままです。サービスリンクロールは、AliyunServiceRoleForSmartService のように camelCase 形式の名前を使用することがよくあります。エラーを回避するため、ロールリストからロール名をコピーして確認用テキストボックスに貼り付けてください。

    RAM ロールにポリシーがアタッチされている場合、ロールを削除すると自動的にデタッチされます。

    対応するクラウドサービスで利用中のサービスリンクロールを削除しようとすると失敗します。まずクラウドサービスコンソールにアクセスしてロールへの依存関係を削除した後、再度削除を試行してください。サービスリンクロールの詳細については、「サービスリンクロール」をご参照ください。

    削除リクエストを送信すると、ロールのステータスは「Deleting」に変化します。非同期の削除が完了すると、ロールはロールリストから削除されます。

    削除タスクが失敗した場合は、ロールリストの右上隅にある ロール削除タスク をクリックして詳細を確認してください。