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

Identity as a Service:IDaaS を使用したエージェント ID セキュリティ

最終更新日:May 10, 2026

概要

このドキュメントでは、Alibaba Cloud IDaaS エージェントの ID セキュリティ機能を使用して、エージェント中心の ID とアクセスの管理システムを構築する方法について説明します。このソリューションにより、エージェントのデジタル ID を安全に管理し、API キーや OAuth トークンなどのアクセス認証情報を一元管理し、エージェントがユーザーまたは自身を代表して大規模言語モデル、サードパーティサービス、および社内サービスに安全にアクセスできるようになります。

利用シーン

AI エージェントが普及するにつれ、さまざまな外部サービスに安全にアクセスする必要性が高まっています。

  • 大規模言語モデルサービス:エージェントが AI 推論を実行するために大規模言語モデルを呼び出す必要があります。この例では Model Studio を使用します。

  • サードパーティサービス:エージェントがサードパーティサービスにアクセスする必要があります。この例では Amap MCP Server を使用します。

  • 社内エンタープライズサービス:エージェントが社内エンタープライズサービスにアクセスする必要があります。この例では Function Compute にデプロイされたサービスを使用します。

コード内に認証情報をハードコードしたり、設定ファイルに保存したりする従来の方法には、認証情報の漏洩やローテーションの困難さなど、セキュリティリスクがあります。このソリューションでは、IDaaS を使用して以下を実現します。

  • IDaaS 内で認証情報を一元管理し、エージェントが実行時に動的に認証情報を取得できるようにします。

  • M2M(Machine-to-Machine)ID 認証を使用して、認証済みのエージェントのみが認証情報を取得できるようにします。

  • 動的にアクセストークンを発行して、きめ細かなアクセス制御を実現します。

ソリューションアーキテクチャ

ワークフロー

ワークフロー

フェーズ

説明

主要な認証情報

ユーザー認証

ユーザーが SSO 経由でサインインし、エージェントへのアクセス用のアクセストークン (AT_u) を取得します。

AT_u (aud:エージェントのオーディエンス識別子、scope:権限範囲)

ユーザー本人確認

エージェントが AT_u とその権限を検証します。

IDaaS JWKS 公開鍵

エージェント初期化

エージェントが M2M アプリケーション ID を使用して、IDaaS から各種認証情報を動的に取得します。

LLM API キー、サードパーティサービス API キー、およびエンタープライズサービスアクセストークン (AT_s、aud:エンタープライズサービスのオーディエンス識別子、scope:エンタープライズサービスの権限範囲)

AI リクエスト処理

エージェントが LLM および各種ツールを呼び出して AI リクエストを完了します。

認証情報をオンデマンドで使用します。

前提条件

  • Model Studio でモデルを呼び出す権限を持つ API キーを作成済みです。

  • Model Studio の MCP スクエアに Amap を追加済みです。

  • Function Compute を有効化済みです。

  • IDaaS でエージェント ID セキュリティを構成し、エージェントノード、Clientノード、Large Language Model (LLM)ノード(Model Studio API キーを使用)、External Serviceノード(Model Studio API キーを使用)、およびEnterprise Serviceノードを設定済みです。詳細については、「エージェント ID セキュリティ構成ガイド」をご参照ください。

操作手順

ステップ 1:エージェントサンプルコードの取得

エージェントサンプルコードを Git でクローンするか、直接ダウンロードします。ターミナルを開き、次のコマンドを実行します。

git clone https://github.com/cloud-idaas/idaas-java-agent-id-demo.git

ステップ 2:IDaaS SDK の構成

  1. SDK 構成の生成

    1. IDaaS EIAM コンソールに移動します。

    2. 左側のナビゲーションウィンドウで、エージェントセキュリティを選択します。

    3. 対象のエージェントを特定し、Edit列のOperationをクリックします。

    4. エージェントノードをクリックします。

    5. Authentication TypeClient Secret Credentialを選択し、Generate SDK Configurationをクリックします。

    6. 構成内容をコピーします。

    詳細な構成手順については、「環境準備」をご参照ください。

  2. SDK ファイルの構成

    コピーした SDK 構成を、エージェントサンプルコードディレクトリ内の次の 2 つのファイルに貼り付けます。

    • src/main/resources/cloud_idaas_config_for_computer.json(ローカルデプロイ用)

    • src/main/resources/cloud_idaas_config_for_agent_run.json(AgentRun デプロイ用)

ステップ 3:エンタープライズサービスのデプロイ

3.1 関数のデプロイ

  1. Function Compute (FC) コンソールにログインします。

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

  3. Web 関数タブを選択し、 Web 函数 の作成をクリックします。

  4. 実行環境で、カスタム実行時 > Java > Java 17を選択します。

  5. コードのアップロード方法で、サンプルコードの使用を選択します。他の設定はデフォルトのままにしておきます。

  6. 関数の作成を完了します。

3.2 JWT 認証の構成

関数の HTTP トリガーに対して JWT 認証を構成します。これにより、IDaaS が発行したアクセストークンを持つ呼び出し元のみがエンタープライズサービスにアクセスできるようになります。

  1. IDaaS インスタンスコンソールで、「エージェント ID セキュリティ構成ガイド」に従って作成したEnterprise Serviceノードをクリックします。

  2. Generalの下にあるOIDC Discovery Endpointをコピーします。ブラウザで開き、jwks_uriフィールドの値である JWKS エンドポイントをコピーします。

  3. ブラウザで JWKS エンドポイントを開き、レスポンス全体をコピーします。

  4. Function Compute (FC) コンソールで、関数リストから関数を特定し、操作列の設定をクリックします。

  5. 関数の詳細タブで、関数トポロジー図内のトリガーをクリックします。認証方法JWT 認証を選択します。

  6. JWKSフィールドに、JWKS エンドポイントからのレスポンスを貼り付けます。

  7. JWT トークンの設定セクションで、パラメーター名Authorizationに設定します。

  8. 構成を完了します。

ステップ 4:エージェントのデプロイ

エージェントはローカルまたは Function Compute 上の AgentRun にデプロイできます。ニーズに合ったデプロイ方法を選択してください。

ローカル

  1. 開発環境のセットアップ

    • JDK 17 以降をインストールします。

    • Maven をインストールします。

  2. プロジェクトのパッケージ化

    ターミナルで次のコマンドを実行します。

    cd idaas-java-agent-id-demo
    mvn clean package
  3. 環境変数の設定

    次の例は Linux オペレーティングシステム用です。

    export IDAAS_CLIENT_SECRET={client_secret}
    export ENV_PRIVATE_KEY={private_key}
    export JWKS_ENDPOINT=https://xxx.aliyunidaas.com/api/v2/iauths_system/oauth2/jwks
    export AGENT_AUDIENCE=https://agentserver.example.com
    export AGENT_SCOPE=agent.access
    export ACCESS_IDENTITY=Machine
    export LLM_API_KEY_IDENTIFIER=llm_api_key
    export EXTERNAL_SERVER_API_KEY_IDENTIFIER=mcp_server_api_key
    export ENTERPRISE_SERVICE_SCOPE="https://mcpserver.com|mcp.access"
    export EXTERNAL_SERVER_URL=https://dashscope.aliyuncs.com/api/v1/mcps/amap-maps/mcp
    export ENTERPRISE_SERVICE_URL=https://xxx.{region_id}.fcapp.run

    パラメーター

    説明

    ソース

    IDAAS_CLIENT_SECRET

    エージェントのクライアントシークレット認証情報。クライアントシークレット認証に必須です。

    エージェント ID セキュリティ構成ガイド」で作成したエージェントノードのGeneralセクションにあります。

    ENV_PRIVATE_KEY

    エージェントの秘密鍵。公開鍵/秘密鍵認証に必須です。

    これは、「エージェント ID セキュリティ構成ガイド」でエージェントノードの公開鍵/秘密鍵認証情報を作成する際にアップロードした公開鍵に対応する秘密鍵です。

    JWKS_ENDPOINT

    IDaaS JWKS エンドポイント。

    形式はhttps://xxx.aliyunidaas.com/api/v2/iauths_system/oauth2/jwksです。

    xxxは、「ステップ 2:IDaaS SDK の構成」の SDK 構成ファイルのissuerフィールドの対応する値に置き換えます。

    AGENT_AUDIENCE

    エージェントのオーディエンス。

    エージェント ID セキュリティ構成ガイド」で作成したエージェントノードのGeneralセクションにあります。

    AGENT_SCOPE

    エージェントのスコープ。

    エージェント ID セキュリティ構成ガイド」で作成したエージェントノードのPermission Configurationセクションにあります。

    ACCESS_IDENTITY

    エージェント ID モード:Machine(マシン ID)またはHuman(ユーザー ID)。

    この例ではMachine(マシン ID)を使用します。これは、エージェントが独立して動作するシナリオに適しています。ダウンストリームサービスはエージェントのマシン ID を認識します。

    LLM_API_KEY_IDENTIFIER

    大規模言語モデル API キー識別子。

    エージェント ID セキュリティ構成ガイド」で作成したLarge Language Model (LLM)ノードにあります。

    EXTERNAL_SERVER_API_KEY_IDENTIFIER

    サードパーティサービス API キー識別子。

    エージェント ID セキュリティ構成ガイド」で作成したExternal Serviceノードにあります。

    ENTERPRISE_SERVICE_SCOPE

    エンタープライズサービスアクセススコープ(オーディエンス|スコープ)。

    "オーディエンス|スコープ" 形式を使用します。二重引用符を必ず含めてください。

    エージェント ID セキュリティ構成ガイド」で作成したEnterprise ServiceノードのGeneralのオーディエンスと、Permission ConfigurationPermission Identifierを参照してください。

    EXTERNAL_SERVER_URL

    サードパーティサービスエンドポイント。

    Amap MCP Server HTTP エンドポイントです。Model Studio プラットフォーム内のAmap MCP で確認できます。

    ENTERPRISE_SERVICE_URL

    エンタープライズサービスエンドポイント。

    これは、Function Compute にデプロイされたエンタープライズサービスのパブリックエンドポイントです。「3.2 JWT 認証の構成」で説明されているように、関数の詳細タブで、関数トポロジー図内のトリガーをクリックしてインターネットエンドポイントを確認します。

  4. JAR ファイルの実行

    ターミナルで次のコマンドを実行します。

    java -Dcloud_idaas_config_path=cloud_idaas_config_for_computer.json -jar target/idaas-java-agent-id-demo-1.0.jar

AgentRun

  1. エージェントサンプルコードのパッケージ化と圧縮

    ターミナルで次のコマンドを実行します。

    cd idaas-java-agent-id-demo
    mvn clean package
    cd ../
    zip -r idaas-java-agent-id-demo.zip idaas-java-agent-id-demo/
  2. 実行ロールの作成

    1. Resource Access Management (RAM) コンソールにログインします。

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

    3. ロール作成]をクリックします。[Principal Type]で[クラウドサービス]を選択します。[Principal Name]でFunction Compute (FC)を選択します。

    4. ロール名をsample-fc-roleに設定します。

  3. エージェントの作成

    1. Function Compute (FC) コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、関数インテリジェンス > AgentRunを選択します。

    3. ロール承認のプロンプトが表示されたら、承認をクリックします。これは初回のみ必要です。

    4. エージェントの作成をクリックし、コードから作成を選択します。

    5. コードソースコードパッケージのアップロードを選択します。ランタイムJava 17を選択します。

    6. 圧縮されたidaas-java-agent-id-demo.zipファイルをアップロードします。

    7. 次の起動コマンドを入力します。

      java -Dcloud_idaas_config_path=classpath:cloud_idaas_config_for_agent_run.json -jar idaas-java-agent-id-demo/target/idaas-java-agent-id-demo-1.0.jar
    8. 起動ポートに9002を入力します。

    9. 環境変数を構成します。

      パラメーター

      説明

      ソース

      IDAAS_CLIENT_SECRET

      エージェントのクライアントシークレット認証情報。クライアントシークレット認証に必須です。

      エージェント ID セキュリティ構成ガイド」で作成したエージェントノードのGeneralセクションにあります。

      ENV_PRIVATE_KEY

      エージェントの秘密鍵。公開鍵/秘密鍵認証に必須です。

      これは、「エージェント ID セキュリティ構成ガイド」でエージェントノードの公開鍵/秘密鍵認証情報を作成する際にアップロードした公開鍵に対応する秘密鍵です。

      JWKS_ENDPOINT

      IDaaS JWKS エンドポイント。

      形式はhttps://xxx.aliyunidaas.com/api/v2/iauths_system/oauth2/jwksです。

      xxxは、「ステップ 2:IDaaS SDK の構成」の SDK 構成ファイルのissuerフィールドの対応する値に置き換えます。

      AGENT_AUDIENCE

      エージェントのオーディエンス。

      エージェント ID セキュリティ構成ガイド」で作成したエージェントノードのGeneralセクションにあります。

      AGENT_SCOPE

      エージェントのスコープ。

      エージェント ID セキュリティ構成ガイド」で作成したエージェントノードのPermission Configurationセクションにあります。

      ACCESS_IDENTITY

      エージェント ID モード:Machine(マシン ID)またはHuman(ユーザー ID)。

      この例ではMachine(マシン ID)を使用します。これは、エージェントが独立して動作するシナリオに適しています。ダウンストリームサービスはエージェントのマシン ID を認識します。

      LLM_API_KEY_IDENTIFIER

      大規模言語モデル API キー識別子。

      エージェント ID セキュリティ構成ガイド」で作成したLarge Language Model (LLM)ノードにあります。

      EXTERNAL_SERVER_API_KEY_IDENTIFIER

      サードパーティサービス API キー識別子。

      エージェント ID セキュリティ構成ガイド」で作成したExternal Serviceノードにあります。

      ENTERPRISE_SERVICE_SCOPE

      エンタープライズサービスアクセススコープ(オーディエンス|スコープ)。

      "オーディエンス|スコープ" 形式を使用します。二重引用符を必ず含めてください。

      エージェント ID セキュリティ構成ガイド」で作成したEnterprise ServiceノードのGeneralのオーディエンスと、Permission ConfigurationPermission Identifierを参照してください。

      EXTERNAL_SERVER_URL

      サードパーティサービスエンドポイント。

      Amap MCP Server HTTP エンドポイントです。Model Studio プラットフォーム内のAmap MCP で確認できます。

      ENTERPRISE_SERVICE_URL

      エンタープライズサービスエンドポイント。

      3.2 JWT 認証の構成」で説明されているように、関数の詳細タブで、関数トポロジー図内のトリガーをクリックしてインターネットエンドポイントを確認します。

    10. 実行ロールとして、前に作成したsample-fc-roleを選択します。

    11. デプロイの開始をクリックします。

    12. デプロイが完了したら、エージェントカードの[詳細]をクリックします。左側のナビゲーションウィンドウでバージョンとグレースケールを選択し、エンドポイントの作成をクリックします。

ステップ 5:クライアントのデプロイ

5.1 フロントエンド UI の構成

エージェントサンプルコードのfrontend/config.jsファイルを修正します。

window.APP_CONFIG = {
  API_URL: 'http://localhost:9002/openai/v1/chat/completions',
  IDAAS_AUTHORIZE_ENDPOINT: 'https://xxx.aliyunidaas.com/login/app/common/oauth2/authorize',
  IDAAS_LOGOUT_ENDPOINT: 'https://xxx.aliyunidaas.com/login/app/common/oauth2/logout',
  CLIENT_ID: '{client_id}',
  SCOPE: 'https://agentserver.example.com|agent.access',
};

パラメーター

説明

ソース

API_URL

エージェントサービスのリクエストパス。

ローカルデプロイ:http://localhost:9002/openai/v1/chat/completions

AgentRun デプロイ:{endpoint}/openai/v1/chat/completionsAgentRun でエージェントをデプロイ後、ナビゲーションウィンドウの[バージョンとグレースケール]ページに移動し、{endpoint} を作成したエンドポイントのアクセス URL に置き換えます。

IDAAS_AUTHORIZE_ENDPOINT

IDaaS 権限付与エンドポイント。

形式は以下のとおりです。

https://xxx.aliyunidaas.com/login/app/common/oauth2/authorize

xxxは、「ステップ 2:IDaaS SDK の構成」の SDK 構成ファイルのissuerフィールドの対応する値に置き換えます。

IDAAS_LOGOUT_ENDPOINT

IDaaS ログアウトエンドポイント。

形式は以下のとおりです。

https://xxx.aliyunidaas.com/login/app/common/oauth2/logout

xxxは、「ステップ 2:IDaaS SDK の構成」の SDK 構成ファイルのissuerフィールドの対応する値に置き換えます。

CLIENT_ID

IDaaS で作成したClientのクライアント ID。

エージェント ID セキュリティ構成ガイド」で作成したClientノードにあります。

SCOPE

アクセススコープ。形式:オーディエンス|スコープ

エージェントIDセキュリティ設定ガイド」で作成したエージェントノードで、Generalの下にあるaudienceと、Permission Configurationの下にあるscopeを検索します。

5.2 フロントエンド UI の起動

ターミナルで次のコマンドを実行します(Node.js が必要です)。

cd frontend
npx http-server -p 9001

5.3 クライアントアプリケーションの構成

  1. IDaaS EIAM コンソールに移動します。

  2. 左側のナビゲーションウィンドウで、Application Management > M2M Applicationをクリックします。

  3. エージェント ID セキュリティ構成ガイド」で作成したClientノードを特定し、Actions列のManageをクリックします。

  4. Sign-Inタブをクリックします。Grant Typesセクションで、Implicit Modeチェックボックスをオンにします。

  5. Implicit Mode Parametersで、Return Typetokenに設定します。

  6. Redirect URIsに、フロントエンド UI の起動 URL:http://127.0.0.1:9001/を入力します。

  7. 詳細設定を表示をクリックし、ログアウトコールバック URL にフロントエンド UI 起動 URL:http://127.0.0.1:9001/を入力します。

  8. 構成を完了します。

ステップ 6:構成の検証

  1. ローカルマシンのブラウザでhttp://127.0.0.1:9001にアクセスします。

  2. IDaaS アカウントでログインをクリックし、IDaaS アカウントでサインインします。

  3. サインイン後、チャットボックスにテストプロンプトを入力します。例:

    • 「現在の杭州の天気はどうですか?」:エージェントが Amap MCP ツールを呼び出して天気を照会します。

    • 「私のエンタープライズサービスを呼び出してください」:エージェントがエンタープライズサービスツールを呼び出します。

エラー処理

症状

考えられる原因

解決策

アクセストークンの検証に失敗しました。

トークンの有効期限が切れているか、無効です。

再度ログインして、新しいアクセストークンを取得してください。

大規模言語モデル API キーの取得に失敗しました。

API キー識別子の構成が正しくありません。

LLM_API_KEY_IDENTIFIER環境変数が正しく設定されていることを確認してください。

エンタープライズサービスの呼び出しに失敗しました。

アクセストークンに必要なスコープが含まれていません。

ENTERPRISE_SERVICE_SCOPEに正しいオーディエンス識別子とスコープが含まれていることを確認してください。

JWT 認証に失敗しました。

JWKS 構成が正しくありません。

Function Compute トリガーの JWKS 構成が正しいことを確認してください。

SDK 構成の読み込みに失敗しました。

構成ファイルパスが正しくありません。

-Dcloud_idaas_config_pathパラメーターが正しく設定されていることを確認してください。

付録

AgentRun の OpenAPI 認証

AgentRun デプロイの場合、IDaaS はOpenAPI 認証方式をサポートしています。この方式を使用すると、クライアントシークレットや秘密鍵を構成せずに、実行ロールの STS トークンを使用して IDaaS OpenAPI を呼び出し、エージェントのアクセストークンを取得できます。

IDaaS SDK 構成の修正

src/main/resources/cloud_idaas_config_for_agent_run.jsonを修正し、openApiEndpointを追加し、authnConfigurationを変更します。他のフィールドは変更しません。

{
    "idaasInstanceId": "idaas_xxx",      
    "clientId": "app_xxx",               
    "issuer":"https://xxx/api/v2/iauths_system/oauth2",               
    "tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
    "scope": "api.example.com|read:file",
    "openApiEndpoint":"eiam.[region_id].aliyuncs.com",
    "developerApiEndpoint":"eiam-developerapi.[region_id].aliyuncs.com",
    "authnConfiguration": {
      "identityType": "CLIENT",
      "authnMethod": "PLUGIN",
      "pluginName": "alibabacloudPluginCredentialProvider"
  }
}

詳細な手順については、「環境準備」をご参照ください。

実行ロールの構成

AgentRun 実行ロールには、IDaaS GenerateOauthToken OpenAPI を呼び出す権限が必要です。権限ポリシーの例は以下のとおりです。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "eiam:GenerateOauthToken",
      "Resource": [
        "acs:eiam:{regionId}:{accountId}:instance/{InstanceId}/application/{ApplicationId}"
      ]
    }
  ]
}

{regionId}{accountId}{InstanceId}、および{ApplicationId}を、ご利用のリージョン ID、Alibaba Cloud アカウント ID、IDaaS インスタンス ID、およびエージェント ID に置き換えます。

権限ポリシーの作成および実行ロールへの付与方法については、「Alibaba Cloud OpenAPI 認証」をご参照ください。

AgentRun でサービスをデプロイする際は、上記のように SDK 構成を修正し、実行ロールを構成する必要があります。デプロイプロセスの他の手順はすべて同じです。