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

Platform For AI:DSW インスタンスの RAM ロールの設定

最終更新日:Sep 01, 2026

DSW インスタンスに RAM ロールを関連付けることで、インスタンスはそのロールの一時的な STS 認証情報を使用して他のクラウドリソースにアクセスできます。これにより、長期的な AccessKey の設定が不要になり、認証情報の漏洩のリスクを軽減します。

インスタンス RAM ロールとは

インスタンス RAM ロールは、DSW インスタンスに一時的なロールベースのアイデンティティを提供します。DSW インスタンスに RAM ロールが付与されると、次のことが可能になります。

  • インスタンス内のプロセスは、ローカルメタデータサービスまたは認証情報ファイルから短期 STS 認証情報を自動的に取得できます。

  • 認証情報には、アタッチされた許可ポリシーで定義された権限が付与され、OSS、MaxCompute、PAI-DLC などの承認済みクラウドサービスへの安全なアクセスが可能になります。

  • コードや設定ファイル内に AccessKey を平文で保存する必要が完全になくなり、セキュリティおよびコンプライアンスの要件を満たせます。

主な利点は次のとおりです。

  • セキュア:長期的な AccessKey の代わりに、自動更新される短期 STS 認証情報を使用するため、ハードコードされたキーや認証情報が漏洩するリスクを排除します。

  • 容易な管理:RAM ロールポリシーを通じて権限を一元管理できます。ポリシーの変更は、インスタンスの再起動やコードの更新をすることなく、すぐに有効になります。

  • ネイティブな信頼性:認証情報は Alibaba Cloud Security Token Service (STS) が発行するため、追加の認証ミドルウェアは不要で、デフォルトで信頼されます。

制限事項

DSW インスタンスに関連付けられる RAM ロールは、一度に 1 つのみです。

操作手順

ステップ 1:RAM ロールの設定

DSW インスタンスの設定ページで、次の 3 つのロールオプションから 1 つを選択できます。

PAI デフォルトロール

Platform for AI (PAI) はデフォルトロールを提供します。このロールをインスタンスに付与すると、AccessKey を設定することなく、次のリソースに自動的にアクセスできるようになります。

  • ODPS SDK を使用して、インスタンスの所有者が実行権限を持つ MaxCompute プロジェクトにジョブを送信できます。

  • OSS SDK を使用して、現在のワークスペース用に設定されたデフォルトのストレージパスバケット内のデータにアクセスできます。

  • WebIDE で通義霊碼サービスを使用できます。

  • PAI または PAI-DLC SDK を使用して、現在のワークスペースにトレーニングジョブを作成および送信できます。

カスタムロール

  1. RAM コンソールにログオンし、RAM ロールを作成します。詳細な手順については、「信頼できる Alibaba Cloud サービスの RAM ロールを作成する」をご参照ください。

    主要なパラメーターを次のように設定します。

    • 信頼されたエンティティタイプ:[Alibaba Cloud サービス]

    • 信頼されたエンティティ名:機械学習 PAI (pai.aliyun.cs.com)

  2. RAM ロールに権限を付与します。

    [Add Authorization] をクリックし、システムまたはカスタムの許可ポリシーを RAM ロールにアタッチします。これにより、ロールは必要なリソースにアクセスまたは操作するための権限を取得します。たとえば、AliyunOSSFullAccess ポリシーを追加します。詳細については、「ステップ 3:RAM ロールに権限を付与する」をご参照ください。

    説明

    RAM ユーザーを使用して DSW インスタンスを操作する場合は、お使いのルートアカウントの管理者に依頼し、次の許可ポリシーを作成して RAM ユーザーにアタッチしてもらってください。このポリシーにより、RAM ユーザーはインスタンス RAM ロールを使用できるようになります。

    次のコードは、必要な許可ポリシーを示しています。${RoleName} を DSW インスタンスの RAM ロール名に置き換えてください。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ram:PassRole",
          "Resource": "acs:ram::*:role/${RoleName}"
        }
      ]
    }

関連付けなし

インスタンスがワークスペース内で公開されている場合は、権限漏洩を防ぐため、RAM ロールを関連付けないことを推奨します。インスタンスの作成時または設定変更時に、詳細情報 セクションで RAM ロール を ロールを関連付けない に設定します。

RAM ロール設定の更新

  1. DSW ページに移動します。

    1. PAI コンソールにログオンし、対象のリージョンとワークスペースを選択します。

    2. 左側のナビゲーションペインで、モデル開発とトレーニング > Data Science Workshop (DSW) を選択して、DSW ページに移動します。

  2. DSW インスタンスの右側にある 設定の変更 をクリックします。

  3. ロールと権限 セクションで、インスタンスの RAM ロールを設定します。

    重要

    実行中のインスタンスの RAM ロールを PAI デフォルトロール または カスタムロール から ロールを関連付けない に切り替えるか、ロールを関連付けない から PAI デフォルトロール または カスタムロール に切り替えると、インスタンスはすぐに再起動されます。必ずインスタンスを保存してください。

  4. 設定が完了したら、OK をクリックします。

ステップ 2:一時的な認証情報の取得

インスタンスに RAM ロールを関連付けた後、いくつかの方法で一時的な認証情報を取得し、クラウドサービスにアクセスできます。

認証情報ツール

Alibaba Cloud SDK の認証情報ツールを使用することを推奨します。このツールは認証情報の取得と更新を自動的に処理するため、クラウドサービスにアクセスする際のベストプラクティスです。

  1. 依存関係をインストールします (Python の例):

    pip install alibabacloud_credentials
  2. 使用例:

    from alibabacloud_credentials.client import Client as CredClient
    from alibabacloud_credentials.models import Config as CredConfig
    credentialsConfig = CredConfig(
    	type='credentials_uri'   # オプション。デフォルトの認証情報チェーンで他のアクセス方法を設定していない場合、このタイプを明示的に指定する必要はありません。Credentials SDK は、デフォルトの認証情報チェーンの一環として URI メソッドを使用し、一時的な認証情報を取得します。
    )
    credentialsClient = CredClient(credentialsConfig)

他の言語の SDK サンプルについては、「認証情報を使用して Alibaba Cloud OpenAPI にアクセスするためのベストプラクティス」をご参照ください。

ローカルサービス

DSW インスタンスのターミナルで次のコマンドを実行すると、ローカルに注入されたサービスから認証情報を取得できます。

# インスタンス RAM ロールの一時的なアクセス認証情報を取得します
curl $ALIBABA_CLOUD_CREDENTIALS_URI

次はレスポンスのサンプルです。

  • SecurityToken:インスタンス RAM ロールの一時的なトークン。

  • Expiration:一時的なアクセス認証情報の有効期限。

{
    "Code": "Success",
    "AccessKeyId": "STS.N*********7",
    "AccessKeySecret": "3***************d",
    "SecurityToken": "DFE32G*******",
    "Expiration": "2024-05-21T10:39:29Z"
}

ローカルファイル

DSW インスタンスでは、PAI がインスタンス RAM ロールの一時的な認証情報を含むファイルを自動的に注入し、定期的に更新します。パス /mnt/.alibabacloud/credentials からこのファイルを読み取ることで、認証情報を取得できます。ファイルの内容は次のとおりです。

{
    "AccessKeyId": "STS.N*********7",
    "AccessKeySecret": "3***************d",
    "SecurityToken": "DFE32G*******",
    "Expiration": "2024-05-21T10:39:29Z"
}

ステップ 3:他のクラウドサービスへのアクセス

OSS へのアクセス

  1. 次のコマンドを実行して、認証情報ツールと OSS SDK をインストールします。

    # 認証情報ツールをインストールします
    pip install alibabacloud_credentials
    # OSS SDK をインストールします
    pip install oss2
  2. インスタンス RAM ロールの一時的な認証情報を使用して OSS にアクセスし、指定したバケット内のオブジェクトを 10 個一覧表示します。OSS リージョンエンドポイントについては、「リージョンとエンドポイント」をご参照ください。

    import oss2
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials import providers
    from itertools import islice
    auth = oss2.ProviderAuth(providers.DefaultCredentialsProvider())
    bucket = oss2.Bucket(auth, 
                         '<oss_endpoint>', #  を、お使いの OSS バケットのリージョンエンドポイントに置き換えます。
                         '<oss_bucket>' #  を、お使いの OSS バケット名に置き換えます。
                        )
    for b in islice(oss2.ObjectIterator(bucket), 10):
        print(b.key)

MaxCompute へのアクセス

  1. 次のコマンドを実行して、認証情報ツールと ODPS SDK をインストールします。

    # 認証情報ツールをインストールします
    pip install alibabacloud_credentials
    # ODPS SDK をインストールします
    pip install odps
  2. インスタンス RAM ロールの一時的な認証情報を使用して MaxCompute にアクセスし、指定したプロジェクト内のテーブル一覧を取得します。MaxCompute リージョンエンドポイントについては、「エンドポイント」をご参照ください。

    from alibabacloud_credentials import providers
    from odps.accounts import CredentialProviderAccount
    from odps import ODPS
    if __name__ == '__main__':
        account = CredentialProviderAccount(providers.DefaultCredentialsProvider())
        o = ODPS(
                 account=account,
                 project="<odps_project>", #  を、お使いのプロジェクト名に置き換えます。
                 endpoint="<odps_endpoint>" #  を、プロジェクトのリージョンエンドポイントに置き換えます。
                )
        for t in o.list_tables():
            print(t)

PAI-DLC へのアクセス

  1. 次のコマンドを実行して、認証情報ツール、OpenAPI SDK、PAI-DLC SDK をインストールします。

    # 認証情報ツールをインストールします
    pip install alibabacloud_credentials
    # Alibaba Cloud OpenAPI SDK をインストールします
    pip install alibabacloud-tea-util alibabacloud_tea_openapi
    # PAI-DLC SDK をインストールします
    pip install alibabacloud_pai_dlc20201203
  2. インスタンス RAM ロールの一時的な認証情報を使用して PAI-DLC にアクセスし、指定したワークスペース内の PAI-DLC ジョブを一覧表示します。

    from alibabacloud_credentials.client import Client as CredClient
    from alibabacloud_tea_openapi.models import Config
    from alibabacloud_pai_dlc20201203.client import Client as pai_dlc20201203Client
    from alibabacloud_pai_dlc20201203 import models as pai_dlc_20201203_models
    from alibabacloud_tea_util.models import RuntimeOptions
    # 認証情報ツールを使用して PAI-DLC クライアントを初期化します。
    credentialsClient = CredClient()
    config = Config(credential=credentialsClient)
    config.endpoint = '<dlc_endpoint>' #  を、お使いのリージョンのエンドポイントに置き換えます。
    client = pai_dlc20201203Client(config)
    # リクエストを初期化し、ListJobs API を呼び出します。
    list_jobs_request = pai_dlc_20201203_models.ListJobsRequest()
    list_jobs_request.workspace_id = '<workspace_id>' #  を、お使いのワークスペース ID に置き換えます。
    runtime_options = RuntimeOptions()
    headers = {}
    resp = client.list_jobs_with_options(list_jobs_request, headers, runtime_options)
    jobs = resp.to_map()['body']['Jobs']
    print(jobs[0])

FAQ

Resolve PassRoleFailedError

Log on to the RAM console to verify that the role exists.

  • If the role does not exist, change the instance RAM role to an existing role.

  • If the role exists, ask your root account administrator to grant your RAM user permission to use this role. The required permission policy is as follows (replace ${RoleName} with the name of the RAM role):

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ram:PassRole",
          "Resource": "acs:ram::*:role/${RoleName}"
        }
      ]
    }

Resolve AssumeRoleFailedError

This error usually occurs because your role's trust policy is configured incorrectly. Follow these steps to resolve the issue:

  1. Log on to the RAM console as a RAM administrator.

  2. In the navigation pane on the left, choose Identity Management > Roles.

  3. On the Roles page, click the name of the target RAM role.

  4. On the Trust Policy tab, click Edit Trust Policy.

  5. Modify the trust policy to add pai.aliyuncs.com to the Service principal, and then click OK.

    For example, if the original trust policy is:

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "RAM": [
              "acs:ram::aaa:root"
            ],
            "Service": [
              "xxx.aliyuncs.com"
            ]
          }
        }
      ],
      "Version": "1"
    }

    Update the policy to include pai.aliyuncs.com:

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "RAM": [
              "acs:ram::aaa:root"
            ],
            "Service": [
              "xxx.aliyuncs.com",
              "pai.aliyuncs.com" 
            ]
          }
        }
      ],
      "Version": "1"
    }