概述
本文檔介紹如何基於阿里雲 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
產生 SDK 配置
進入 IDaaS EIAM 控制台。
在左側導覽列,選擇 Agent 身份安全。
進入 IDaaS 執行個體控制台,在左側導覽列中選擇 Agent 身份安全。
定位目標 Agent,單擊操作列下的编辑。
單擊 Agent 節點。
认证类型選擇Client Secret凭证 ,單擊生成SDK配置。
複製配置內容。
詳細的配置說明,可參見環境準備。
配置 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
在左側導覽列中選擇 函数管理 > 函數列表。
選擇 Web 函数頁簽,單擊创建 Web 函數。
運行環境選擇 自定义运行时 > Java > Java 17。
代码上传方式選擇使用示例代码,其他配置保持預設。
完成函數建立。
3.2 配置 JWT 認證
為函數的 HTTP 觸發器配置 JWT 認證,確保只有持有 IDaaS 簽發的 Access Token 才能訪問企業服務。
進入 IDaaS 執行個體控制台,單擊Agent 身份安全配置指導中建立的企业服务節點。
複製通用配置下的OIDC发现端点,在瀏覽器中開啟,複製驗簽公開金鑰端點(即
jwks_uri欄位的值)。在瀏覽器中訪問驗簽公開金鑰端點,複製全部返回內容。
進入Function Compute控制台,在函數列表中找到上一步中建立的函數,單擊操作列下的配置。
在函数详情頁簽中單擊函数拓扑图中的触发器,认证方式選擇JWT 认证。
將驗簽公開金鑰端點返回的內容填入 JWKS 配置項中。
在 JWT Token 配置中將参数名称 設定為 Authorization。
完成配置。
步驟四:部署 Agent
Agent 部署在阿里雲Function Compute的 AgentRun 中。
AgentRun 部署
打包並壓縮 Agent 範例程式碼
在終端執行以下命令:
cd idaas-java-agent-id-demo mvn clean package cd ../ zip -r idaas-java-agent-id-demo.zip idaas-java-agent-id-demo/建立執行角色
單擊導覽列中的。
單擊創建角色,信任主體類型選擇 雲服務,信任主體名稱選擇Function Compute/FC 。
角色名稱設定為
sample-fc-role。
建立 Agent
在左側導覽列中選擇 函数智能 > 智能體 AgentRun。
在角色授權檢查中單擊 一鍵授權(首次建立時需要)。
單擊建立 Agent,選擇通過代碼建立。
代碼來源選擇 上傳程式碼封裝,運行時選擇 Java 17。
上傳壓縮好的
idaas-java-agent-id-demo.zip檔案。啟動命令填入:
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啟動連接埠填入
9002。配置環境變數。
環境變數名
說明
擷取方式
IDAAS_CLIENT_SECRETAgent 的 Client Secret 憑證(使用 Client Secret 認證時必填)
Agent 身份安全配置指導中建立的 Agent 節點的通用配置中查看。
ENV_PRIVATE_KEY
Agent 的私密金鑰(使用公私密金鑰認證時必填)
Agent 身份安全配置指導中,為 Agent 節點建立公私密金鑰憑證時所上傳公開金鑰對應的私密金鑰。
JWKS_ENDPOINTIDaaS 驗簽公開金鑰端點
格式為:https://xxx.aliyunidaas.com/api/v2/iauths_system/oauth2/jwks。
其中 xxx 取自步驟二:配置 IDaaS SDK的SDK 設定檔中 issuer 欄位的對應值。
AGENT_AUDIENCEAgent 的受眾標識
Agent 身份安全配置指導中建立的 Agent 節點的通用配置中查看。
AGENT_SCOPEAgent 的許可權標識
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 認證中在函数详情頁簽中單擊函数拓扑图中的触发器,可查看公网访问地址。
執行角色選擇之前建立的
sample-fc-role。單擊 開始部署。
部署完成後,在 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',
};欄位名 | 說明 | 擷取方式 |
| Agent 服務要求路徑。 | 本地部署: AgentRun 部署: |
| IDaaS 授權端點。 | 格式為: https://xxx.aliyunidaas.com/login/app/common/oauth2/authorize 其中 xxx 取自步驟二:配置 IDaaS SDK的SDK 設定檔中 issuer 欄位的對應值。 |
| IDaaS 的登出端點。 | 格式為: https://xxx.aliyunidaas.com/login/app/common/oauth2/logout 其中 xxx 取自步驟二:配置 IDaaS SDK的SDK 設定檔中 issuer 欄位的對應值。 |
| IDaaS 中建立的客户端的 Client ID。 | Agent 身份安全配置指導中建立的客户端節點中查看。 |
| 存取範圍,格式為: | Agent 身份安全配置指導中建立的 Agent 節點的通用配置中查看 |
5.2 啟動前端 UI
在終端執行以下命令(需安裝 Nodejs):
cd frontend
npx http-server -p 90015.3 配置用戶端應用
進入 IDaaS EIAM 控制台。
在左側導覽列中單擊应用管理> M2M应用管理。
定位Agent 身份安全配置指導中建立的客户端節點,單擊操作列下的管理。
單擊登录访问頁簽,在授权模式下勾選隐式模式。
隐式模式参数的返回类型 Response Types選擇 Token。
登录 Redirect URI填入前端 UI 啟動地址:
http://127.0.0.1:9001/。單擊顯示進階配置,登出回調地址填入前端 UI 啟動地址:
http://127.0.0.1:9001/。完成配置。
步驟六:驗證配置
本地開啟瀏覽器,訪問
http://127.0.0.1:9001。單擊 使用 IDaaS 賬戶登入,使用 IDaaS 賬戶登入。
登入成功後,在對話方塊中輸入測試請求,例如:
"杭州現在的天氣怎麼樣":Agent 將調用高德地圖 MCP Tool 查詢天氣。
"調用我的企業服務":Agent 將調用企業服務 Tool。
錯誤處理
錯誤現象 | 可能原因 | 解決方案 |
Access Token 校正失敗 | Token 到期或無效 | 重新登入擷取新的 Access Token |
無法擷取大模型 API Key | API Key 標識配置錯誤 | 檢查 |
企業服務調用失敗 | Access Token 許可權不足 | 檢查 |
JWT 認證失敗 | JWKS 配置錯誤 | 確認Function Compute觸發器的 JWKS 配置是否正確 |
SDK 配置載入失敗 | 設定檔路徑錯誤 | 檢查 |
附錄
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 配置並將配置執行角色,其餘流程均保持一致。