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

Platform For AI:DSW インスタンスの RAM ロールを構成する

最終更新日:Feb 28, 2026

DSW インスタンスから他のクラウド リソースにアクセスするには、通常、AccessKey を構成して ID を検証します。ただし、RAM ロールを DSW インスタンスに関連付けることもできます。これにより、インスタンスはそのロールの Security Token Service (STS) 一時認証情報を使用して他のクラウド リソースにアクセスします。これにより、長期的な AccessKey の構成が不要になり、キー漏洩のリスクが軽減されます。

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

インスタンス RAM ロールは、DSW インスタンスに提供されるロールベースの一時 ID メカニズムです。DSW インスタンスに RAM ロールが付与されると、次のようになります。

  • インスタンス内のプロセスは、ローカルメタサービスまたは認証情報ファイルを介して、短期的な Security Token Service (STS) 認証情報を自動的に取得します。

  • 認証情報には、RAM ロールにバインドされたアクセス権限ポリシーがあります。これにより、Object Storage Service (OSS)、MaxCompute、DLC などの承認されたクラウド サービスへのセキュアなアクセスが可能になります。

  • コードまたは構成内に AccessKey をプレーンテキストで保存することを完全に回避します。これは、企業のセキュリティおよびコンプライアンス要件を満たします。

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

  • セキュリティと機密性:長期的な AccessKey の代わりに、自動更新される STS 一時認証情報を使用します。これにより、キーのハードコーディングと漏洩のリスクが排除されます。

  • 便利で制御可能:RAM ロールポリシーで権限管理を一元化します。ポリシーの変更はすぐに有効になります。インスタンスを再起動したり、コードを更新したりする必要はありません。

  • 本質的に信頼できる:認証情報は Alibaba Cloud STS に基づいて発行されます。認証情報のソースは信頼できます。追加の認証ミドルウェアは必要ありません。

制限事項

DSW インスタンスは現在、1 つの RAM ロールのみに関連付けることができます。

実装手順

ステップ 1: DSW インスタンスの RAM ロールを構成する

DSW インスタンスの構成ページで、次の 3 つのロールのいずれかを選択します。

image

シナリオ 1: PAI のデフォルトロール

Platform for AI (PAI) はデフォルトロールを提供します。このロールを付与すると、インスタンスには次のリソースにアクセスする権限が自動的に付与されます。追加の AccessKey 構成は必要ありません。

  • ODPS ソフトウェア開発キット (SDK) を使用して、インスタンス所有者が実行権限を持つ MaxCompute プロジェクトにタスクを送信します。

  • Object Storage Service (OSS) SDK を使用して、現在のワークスペース用に構成されたデフォルトのストレージパスバケット内のデータにアクセスします。

  • WebIDE で Tongyi Lingma サービスを使用します。

  • PAI/DLC SDK を使用して、現在のワークスペースにトレーニングタスクを作成および送信します。

シナリオ 2: カスタムロール

  1. Resource Access Management (RAM) コンソールにログインできます。RAM ロールを作成します。詳細については、「関連ドキュメント」をご参照ください。

    主なパラメーター設定は次のとおりです。

    • 信頼できるエンティティタイプAlibaba Cloud サービス

    • 信頼できるエンティティ名: Platform for AI (pai.aliyun.cs.com)

  2. 作成したインスタンス RAM ロールに権限を付与します。

    [権限付与の追加] をクリックできます。システムポリシーまたはカスタムポリシーを RAM ロールに付与します。これにより、関連するリソースアクセスまたは操作権限が付与されます。たとえば、AliyunOSSFullAccess ポリシーを追加できます。詳細については、「関連ドキュメント」をご参照ください。

    説明

    RAM ユーザーを使用して DSW インスタンスを操作する場合、ルートアカウントに連絡してください。次のアクセス権限ポリシーを作成し、RAM ユーザーに付与します。これにより、RAM ユーザーにインスタンス RAM ロールを使用する権限が付与されます。

    作成するアクセスポリシーは、以下のコードに示されています。${RoleName} を、DSW インスタンスの RAM ロールの名前に置き換えます。

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

シナリオ 3: RAM ロールを関連付けない

ワークスペースでインスタンスがパブリックに設定されている場合、権限の漏洩を防ぐため、そのインスタンスを RAM ロールに関連付けないことを推奨します。新しいインスタンスを作成するとき、またはその構成を変更するときに、Instance RAM RoleAdvanced Information セクションで Does Not Associate Role に設定できます。

既存のインスタンス RAM ロール構成を更新する

  1. Data Science Workshop (DSW) ページに移動できます。

    1. PAI コンソールにログインします。ターゲットリージョンとワークスペースを選択します。

    2. 左側のナビゲーションウィンドウで、Model Training > Data Science Workshop (DSW) を選択して、DSW ページに移動します。

  2. DSW インスタンスの右側にある Change Settings をクリックできます。

  3. RAM ロールは、Roles and Permissions セクションで設定できます。

    重要

    インスタンス RAM ロールが Default Roles of PAI または Custom Roles から Does Not Associate Role に切り替わる場合、または Does Not Associate Role から Default Roles of PAI または Custom Roles に切り替わり、インスタンスが実行中の場合、更新操作によってインスタンスがすぐに再起動されます。インスタンスを速やかに保存したことを確認してください。

  4. 構成が完了したら、OK をクリックできます。

ステップ 2: インスタンス RAM ロールに基づいて一時アクセス認証情報を取得する

インスタンスが RAM ロールに正常に関連付けられた後、インスタンス内で一時認証情報を取得して使用し、複数の方法でクラウド サービスにアクセスできます。

方法 1: 認証情報ツールを使用して認証情報を取得する (推奨)

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'   # If you have not configured other "default credential chain" access methods, you do not need to explicitly specify it. The Credentials SDK will obtain temporary credentials through the URI method.
    )
    credentialsClient = CredClient(credentialsConfig)

他の言語での SDK の例については、「関連ドキュメント」をご参照ください。

方法 2: DSW インスタンスのローカルサービスに直接アクセスする

DSW インスタンスでは、ターミナルで次のコマンドを実行できます。これにより、ローカルに注入されたサーバーに直接アクセスして認証情報を取得します。

# Get temporary authorization access credentials for the instance RAM role
curl $ALIBABA_CLOUD_CREDENTIALS_URI

返されるコンテンツの例は次のとおりです。

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

  • Expiration:インスタンス RAM ロールの一時アクセス認証情報の有効期間。

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

方法 3: インスタンス内のローカルファイルに直接アクセスする

DSW インスタンスでは、指定されたパスにあるファイルにアクセスして、インスタンス RAM ロールの一時的なアクセス認証情報を取得できます(このファイルは PAI によって自動的に挿入され、定期的にリフレッシュされます)。ファイルパスは /mnt/.alibabacloud/credentials です。ファイルの内容は次のとおりです。

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

ステップ 3: インスタンス RAM ロールに基づいて他のクラウド製品にアクセスする

例 1: インスタンス RAM ロールを使用して Object Storage Service (OSS) にアクセスする

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

    # Install the Credentials tool
    pip install alibabacloud_credentials
    # Install the 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>',# Replace with the endpoint of the region where your OSS bucket resides
                         '<oss_bucket>'# Replace with your OSS bucket name
                        )
    
    for b in islice(oss2.ObjectIterator(bucket), 10):
        print(b.key)

例 2: インスタンス RAM ロールを使用して MaxCompute にアクセスする

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

    # Install the Credentials tool
    pip install alibabacloud_credentials
    # Install the 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>", # Replace with your project name
                 endpoint="<odps_endpoint>"# Replace with the endpoint of the region where your project resides
                )
    
        for t in o.list_tables():
            print(t)

例 3: インスタンス RAM ロールを使用して PAI-DLC にアクセスする

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

    # Install the Credentials tool
    pip install alibabacloud_credentials
    # Install the Alibaba Cloud OpenAPI SDK
    pip install alibabacloud_tea_util alibabacloud_tea_openapi
    # Install the PAI-DLC SDK
    pip install alibabacloud_pai_dlc20201203
  2. インスタンス RAM ロールから一時認証情報を使用して PAI-DLC にアクセスできます。指定されたワークスペース内の 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
    
    # Initialize the DLC client using the Credentials tool
    credentialsClient = CredClient()
    config = Config(credential=credentialsClient)
    config.endpoint = '<dlc_endpoint>' # Replace with the endpoint of your region
    client = pai_dlc20201203Client(config)
    
    # Initialize the request and call the ListJobs API
    list_jobs_request = pai_dlc_20201203_models.ListJobsRequest()
    list_jobs_request.workspace_id = '<workspace_id>' # Replace with your workspace 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])

よくある質問

Q: カスタムロールでインスタンスを作成する際に PassRoleFailedError を解決するにはどうすればよいですか?

Resource Access Management (RAM) コンソールにログインし、ロールが存在することを確認します。

  • ロールが存在しない場合は、インスタンスの RAM ロールを既存のロールに変更します。

  • ロールが存在する場合は、ルートアカウントに連絡して、RAM ユーザーに必要な権限を付与してもらいます。アクセスポリシーは次のとおりです。${RoleName} を RAM ロールの名前に置き換えてください。

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

Q: カスタムロールでインスタンスを作成する際に AssumeRoleFailedError を解決するにはどうすればよいですか?

このエラーは通常、ロールに信頼ポリシーが設定されていないために発生します。この問題を解決するには、次の手順に従ってください。

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

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

  3. [ロール] ページで、対象の RAM ロールの名前をクリックします。

  4. [信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックします。

  5. 信頼ポリシーを変更し、[OK] をクリックします。

    たとえば、ロールの元の信頼ポリシーは次のとおりです。

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

    ポリシーを次のように更新します。

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