全部產品
Search
文件中心

Identity as a Service:基於 AgentRun 的 Agent 身份安全最佳實務

更新時間:May 26, 2026

概述

本文檔介紹如何基於阿里雲 IDaaS Agent 身份安全能力,構建以 Agent 為中心的身份與訪問管理體系。通過本方案,您可以實現 Agent 數字身份的安全管理、訪問憑證(API Key、OAuth Token 等)的集中託管,以及 Agent 代表使用者或自身安全地訪問大模型、第三方服務及企業內部服務。

情境描述

隨著 AI Agent 技術的廣泛應用,Agent 需要安全地訪問多種外部服務:

  • 大模型服務:Agent 需要調用大模型完成 AI 推理,本樣本以百鍊大模型為例。

  • 第三方服務:Agent 需要訪問第三方服務,本樣本以高德 MCP Server 為例。

  • 企業內部服務:Agent 需要訪問企業內部服務,本樣本以部署在Function Compute上的服務為例。

傳統方式將憑證寫入程式碼在代碼中或儲存在設定檔裡,存在憑證泄露、難以輪換等安全風險。本方案通過 IDaaS 實現:

  • 憑證集中託管到 IDaaS,Agent 運行時動態擷取。

  • 基於 M2M(Machine to Machine)身份認證,確保只有授權的 Agent 可擷取憑證。

  • 支援 Access Token 動態簽發,實現細粒度存取控制。

方案架構

工作流程

工作流程說明

階段

說明

關鍵憑證

使用者身份認證

使用者通過 SSO 登入擷取訪問 Agent 的 Access Token (AT_u)

AT_u (aud:Agent 的受眾標識, scope:的許可權標識)

使用者身份校正

Agent 校正 AT_u 的有效性和許可權

IDaaS JWKS 公開金鑰

Agent 初始化

Agent 以自身 M2M 應用身份從 IDaaS 動態擷取各類憑據

大模型 API Key、第三方服務 API Key、企業服務 Access Token(AT_s,aud:企業服務應用的受眾標識,scope:企業服務應用的許可權標識)

AI 請求處理

Agent 調用 LLM 和各類 Tool 完成 AI 請求

各類憑據動態使用

前提條件

  • 已在百鍊平台建立具有百鍊模型調用許可權的 API 金鑰。

  • 已在百鍊平台的 MCP 廣場添加高德地圖。

  • 已開通阿里雲Function Compute服務。

  • 已在 IDaaS 中完成 Agent 身份安全配置,完成了 Agent 節點、客户端節點、大模型節點(使用百鍊 API key)、三方服务節點(使用百鍊 API key)和企业服务節點。詳細配置可參考Agent 身份安全配置指導

配置步驟

步驟一:擷取 Agent 範例程式碼

使用 git 複製或直接下載Agent 範例程式碼。在本地開啟終端,執行以下命令複製範例程式碼。

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

步驟二:配置 IDaaS SDK

  1. 產生 SDK 配置

    1. 進入 IDaaS EIAM 控制台

    2. 在左側導覽列,選擇 Agent 身份安全

    3. 進入 IDaaS 執行個體控制台,在左側導覽列中選擇 Agent 身份安全

    4. 定位目標 Agent,單擊操作列下的编辑

    5. 單擊 Agent 節點。

    6. 认证类型選擇Client Secret凭证 ,單擊生成SDK配置

    7. 複製配置內容。

    詳細的配置說明,可參見環境準備

  2. 配置 SDK 檔案

    將 SDK 配置內容粘貼到 Agent 範例程式碼目錄的兩個檔案中:

    • src/main/resources/cloud_idaas_config_for_computer.json(本地部署使用)

    • src/main/resources/cloud_idaas_config_for_agent_run.json(AgentRun 部署使用)

步驟三:部署企業服務(Function Compute)

3.1 部署Function Compute

  1. 登入Function Compute FC 控制台

  2. 在左側導覽列中選擇 函数管理 > 函數列表

  3. 選擇 Web 函数頁簽,單擊创建 Web 函數

  4. 運行環境選擇 自定义运行时 > Java > Java 17

  5. 代码上传方式選擇使用示例代码,其他配置保持預設。

  6. 完成函數建立。

3.2 配置 JWT 認證

為函數的 HTTP 觸發器配置 JWT 認證,確保只有持有 IDaaS 簽發的 Access Token 才能訪問企業服務。

  1. 進入 IDaaS 執行個體控制台,單擊Agent 身份安全配置指導中建立的企业服务節點。

  2. 複製通用配置下的OIDC发现端点,在瀏覽器中開啟,複製驗簽公開金鑰端點(即jwks_uri欄位的值)。

  3. 在瀏覽器中訪問驗簽公開金鑰端點,複製全部返回內容。

  4. 進入Function Compute控制台,在函數列表中找到上一步中建立的函數,單擊操作列下的配置

  5. 函数详情頁簽中單擊函数拓扑图中的触发器认证方式選擇JWT 认证

  6. 將驗簽公開金鑰端點返回的內容填入 JWKS 配置項中。

  7. JWT Token 配置中將参数名称 設定為 Authorization

  8. 完成配置。

步驟四:部署 Agent

Agent 部署在阿里雲Function Compute的 AgentRun 中。

AgentRun 部署

  1. 打包並壓縮 Agent 範例程式碼

    在終端執行以下命令:

    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. 登入存取控制 RAM 控制台

    2. 單擊導覽列中的身份管理 > 角色

    3. 單擊創建角色信任主體類型選擇 雲服務信任主體名稱選擇Function Compute/FC

    4. 角色名稱設定為 sample-fc-role

  3. 建立 Agent

    1. 登入Function Compute FC 控制台

    2. 在左側導覽列中選擇 函数智能 > 智能體 AgentRun

    3. 在角色授權檢查中單擊 一鍵授權(首次建立時需要)。

    4. 單擊建立 Agent,選擇通過代碼建立

    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

      Agent 的 Client Secret 憑證(使用 Client Secret 認證時必填)

      Agent 身份安全配置指導中建立的 Agent 節點的通用配置中查看。

      ENV_PRIVATE_KEY

      Agent 的私密金鑰(使用公私密金鑰認證時必填)

      Agent 身份安全配置指導中,為 Agent 節點建立公私密金鑰憑證時所上傳公開金鑰對應的私密金鑰。

      JWKS_ENDPOINT

      IDaaS 驗簽公開金鑰端點

      格式為:https://xxx.aliyunidaas.com/api/v2/iauths_system/oauth2/jwks。

      其中 xxx 取自步驟二:配置 IDaaS SDK的SDK 設定檔中 issuer 欄位的對應值。

      AGENT_AUDIENCE

      Agent 的受眾標識

      Agent 身份安全配置指導中建立的 Agent 節點的通用配置中查看。

      AGENT_SCOPE

      Agent 的許可權標識

      Agent 身份安全配置指導中建立的 Agent 節點的权限配置中查看。

      ACCESS_IDENTITY

      Agent 身份模式:Machine(機器身份)或 Human(使用者身份)

      本執行個體中使用 Machine(機器身份),適用於 Agent 以自身身份獨立操作的情境,下遊服務感知到的是 Agent 的機器身份

      LLM_API_KEY_IDENTIFIER

      大模型 API Key 標識

      Agent 身份安全配置指導中建立的大模型節點中查看。

      EXTERNAL_SERVER_API_KEY_IDENTIFIER

      第三方服務 API Key 標識

      Agent 身份安全配置指導中建立的三方服务節點中查看。

      ENTERPRISE_SERVICE_SCOPE

      企業服務存取範圍(受眾標識 | 許可權標識)

      格式為:受眾標識 | 許可權標識。

      Agent 身份安全配置指導中建立的企业服务節點中的通用配置下查看受眾標識,权限配置下查看权限标识

      EXTERNAL_SERVER_URL

      三方服務的 Endpoint

      高德 MCP Server HTTP Endpoint,從百鍊平台的高德地圖 MCP 中查看。

      ENTERPRISE_SERVICE_URL

      企業服務 Endpoint

      3.2 配置 JWT 認證中在函数详情頁簽中單擊函数拓扑图中的触发器,可查看公网访问地址

    10. 執行角色選擇之前建立的 sample-fc-role

    11. 單擊 開始部署

    12. 部署完成後,在 Agent 卡片右下角單擊詳情,在左側導覽列中選擇版本與灰階,單擊建立 Endpoint

步驟五:部署用戶端

5.1 前端 UI 配置

修改 Agent 範例程式碼中的 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

Agent 服務要求路徑。

本地部署:http://localhost:9002/openai/v1/chat/completions

AgentRun 部署:{endpoint}/openai/v1/chat/completionsAgentRun 部署完成後,在左側導覽列選擇版本與灰階,將已建立的 endpoint 的訪問地址填入 {endpoint}。

IDAAS_AUTHORIZE_ENDPOINT

IDaaS 授權端點。

格式為:

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

其中 xxx 取自步驟二:配置 IDaaS SDK的SDK 設定檔中 issuer 欄位的對應值。

IDAAS_LOGOUT_ENDPOINT

IDaaS 的登出端點。

格式為:

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

其中 xxx 取自步驟二:配置 IDaaS SDK的SDK 設定檔中 issuer 欄位的對應值。

CLIENT_ID

IDaaS 中建立的客户端的 Client ID。

Agent 身份安全配置指導中建立的客户端節點中查看。

SCOPE

存取範圍,格式為:受眾標識|許可權標識

Agent 身份安全配置指導中建立的 Agent 節點的通用配置中查看受眾標識权限配置中查看許可權標識

5.2 啟動前端 UI

在終端執行以下命令(需安裝 Nodejs):

cd frontend
npx http-server -p 9001

5.3 配置用戶端應用

  1. 進入 IDaaS EIAM 控制台

  2. 在左側導覽列中單擊应用管理> M2M应用管理

  3. 定位Agent 身份安全配置指導中建立的客户端節點,單擊操作列下的管理

  4. 單擊登录访问頁簽,在授权模式下勾選隐式模式

  5. 隐式模式参数返回类型 Response Types選擇 Token。

  6. 登录 Redirect URI填入前端 UI 啟動地址:http://127.0.0.1:9001/

  7. 單擊顯示進階配置,登出回調地址填入前端 UI 啟動地址:http://127.0.0.1:9001/

  8. 完成配置。

步驟六:驗證配置

  1. 本地開啟瀏覽器,訪問 http://127.0.0.1:9001

  2. 單擊 使用 IDaaS 賬戶登入,使用 IDaaS 賬戶登入。

  3. 登入成功後,在對話方塊中輸入測試請求,例如:

    • "杭州現在的天氣怎麼樣":Agent 將調用高德地圖 MCP Tool 查詢天氣。

    • "調用我的企業服務":Agent 將調用企業服務 Tool。

錯誤處理

錯誤現象

可能原因

解決方案

Access Token 校正失敗

Token 到期或無效

重新登入擷取新的 Access Token

無法擷取大模型 API Key

API Key 標識配置錯誤

檢查 LLM_API_KEY_IDENTIFIER 環境變數是否正確

企業服務調用失敗

Access Token 許可權不足

檢查 ENTERPRISE_SERVICE_SCOPE 是否包含正確的受眾標識和許可權標識

JWT 認證失敗

JWKS 配置錯誤

確認Function Compute觸發器的 JWKS 配置是否正確

SDK 配置載入失敗

設定檔路徑錯誤

檢查 -Dcloud_idaas_config_path 參數是否正確

附錄

AgentRun 部署使用 OpenAPI 方式認證

在 AgentRun 情境下,IDaaS 支援 OpenAPI 認證方式:無需配置 Client Secret 或私密金鑰,直接使用執行角色的 STS Token 訪問 IDaaS OpenAPI,擷取 Agent 的 Access Token。

修改 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、阿里雲主帳號 ID、IDaaS 執行個體 ID 和 Agent ID。

建立權限原則與授權執行角色,詳細配置可參見阿里雲 OpenAPI 認證

AgentRun 部署服務時,需按上述說明修改 SDK 配置並將配置執行角色,其餘流程均保持一致。