在AgentRun中使用Agent Identity
本教程演示如何在 AgentRun 中集成 Agent Identity,实现智能体安全访问钉钉等第三方服务。
概述
AgentRun是阿里云函数计算推出的一站式Agentic AI基础设施平台,提供Serverless化的智能体托管能力。通过将Agent Identity与AgentRun集成,可以实现:
-
入站身份验证:调用方通过兼容 OAuth2.0/OIDC 的身份提供商(如阿里云、Okta、Microsoft Entra ID)完成认证,获取 JWT Token 并在调用 Agent 时传入;AgentRun 与 Agent Identity 校验该 Token 以控制访问。本教程以阿里云 RAM 为入站 IdP,RAM 用户为入站身份。
-
出站凭据管理:Agent 通过 Agent Identity SDK 调用服务接口,获取阿里云 STS Token 或第三方 API Key/OAuth2 Access Token,用于安全访问下游资源。本教程以钉钉开放平台作为 OAuth 出站凭证提供商。
-
执行角色(阿里云资源访问):AgentRun 支持绑定函数计算 RAM 角色(执行角色),运行时自动换取 STS Token 并调用阿里云 API;代码以该角色身份获得权限,无需在代码或配置中硬编码访问密钥。
架构

准备工作
环境要求
-
Python:版本 ≥ 3.10
-
pip:包管理器
RAM用户及权限要求
您需要准备一个RAM用户用于执行Agent Identity CLI命令,以创建工作负载身份和关联的RAM角色,并为RAM角色自动配置所需权限。执行CLI命令的RAM用户至少需要具备以下权限:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "agentidentity:CreateWorkloadIdentity",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ram:CreateRole",
"ram:AttachPolicyToRole",
"ram:CreatePolicy"
],
"Resource": "*"
}
]
}
OAuth2身份提供商
您需要准备一个支持OIDC/OAuth2协议的身份提供商(IdP)用于验证终端用户身份,并颁发JWT令牌(又称ID Token)。在调用Agent时,JWT令牌将被一同传入用以完成AgentRun以及Agent Identity的入站认证。本教程以阿里云身份提供商为例。
步骤一:配置AgentRun模型与凭证
创建大语言模型服务
AgentRun通过统一模型代理网关管理模型调用,需要创建大模型服务供Agent调用。
-
登录函数计算FC控制台。
-
在左侧导航栏选择,进入AgentRun控制台。
-
在顶部导航栏选择模型管理,单击添加模型。
-
保持默认选择的API模型选项,然后选择模型服务提供商(如阿里云),配置具体模型。
在弹窗中,名称会自动生成,API端点默认填写为
https://dashscope.aliyuncs.com/compatible-mode/v1(留空则使用默认端点)。 -
在凭证配置部分,选择API密钥。输入您从模型提供商处获得的API密钥(如百炼API Key)。
在访问密钥字段旁,可单击获取百炼API KEY链接跳转获取密钥。页面提示:API 密钥仅用于当前模型,不会保存到凭证管理中。
-
单击创建模型,完成模型创建。复制模型服务名称并保存,以备后用。
模型服务名称(例如
model-BTAtkv)显示在模型卡片上方,可单击旁边的复制图标进行复制。
创建AgentRun入站访问凭证
入站凭证用于验证调用方身份。AgentRun支持多种认证方式,本教程使用JWT认证。
-
在AgentRun控制台顶部导航栏选择。
-
保持默认选择的访问AgentRun凭证页签,单击创建访问凭证。
-
在创建访问凭证页面,完成如下配置:
-
凭证名称:用于标识凭证的名称,例如输入aliyun。
-
认证类型:选择认证类型为JWT(JSON Web Token)。
-
JWKS配置方式:选择JWKS URL获取方式:
-
JWKS端点URL:输入阿里云的JWKS端点地址
https://oauth.aliyun.com/v1/keys。
超时时间(秒):输入
30(取值范围 1-30 秒)。缓存时间(秒):输入3600(取值范围 300-7200 秒)。勾选创建后立即启用,然后单击创建凭证。 -
-
其余设置均保持默认。单击创建凭证,完成访问凭证创建。
凭证管理列表中显示名为 aliyun 的 JWT 类型凭证,状态为启用,绑定资源数量为 1。
步骤二:创建Agent Identity工作负载身份
工作负载身份(Workload Identity)是Agent在阿里云Agent Identity中的身份标识,用于安全获取访问其他服务或资源所需的凭据。
安装Agent Identity CLI
在本地环境中安装Agent Identity CLI(全局安装)。
pip install agent-identity-cli
准备RAM用户凭证
在本地使用RAM用户及权限要求中提到的RAM用户配置凭证。
使用阿里云CLI
-
安装阿里云CLI(如已安装,可跳过)。具体请参考快速使用 CLI。
-
登录阿里云CLI。具体请参考为阿里云CLI配置OAuth认证。
-
检查凭证配置。执行命令
aliyun configure list检查凭证配置是否存在且有效。输出类似如下:Profile | Credential | Valid | Region | Language --------- | ------------------ | ------- | ---------------- | -------- OAuthProfile * | OAuth:xQcliVOdYA@CN | Valid | cn-hangzhou | zh
使用Access Key(不推荐)
为CLI执行用户创建访问密钥(Access Key)并配置到本地环境变量中。
export ALIBABA_CLOUD_ACCESS_KEY_ID=<your-access-key-id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<your-access-key-secret>
创建工作负载身份
执行以下命令创建工作负载身份及关联的RAM角色:
agent-identity-cli create-workload-identity --workload-identity-name <your-workload-identity-name>
CLI将自动创建以下资源:
|
资源类型 |
说明 |
|
工作负载身份 |
Agent的云端身份标识。 |
|
RAM角色 |
默认格式为 |
|
角色信任策略 |
允许该工作负载身份扮演关联的RAM角色。 |
|
角色权限策略 |
允许访问出站资源的令牌或API Key。 |
配置阿里云为Agent Identity入站身份提供商
创建的工作负载身份,需要关联到身份提供商,才可以完成Agent Identity处的入站身份认证。
-
参考教程配置阿里云为Agent Identity的身份提供商创建入站身份提供商,将回调地址设置为
http://localhost:8090。完成后,复制应用ID保存以备后用。 -
在左侧导航栏选择工作负载身份,找到上一步中创建的工作负载身份。
-
单击关联身份提供商,选择创建的入站身份提供商。
-
单击确定,完成入站身份提供商配置。
步骤三:部署Agent应用至AgentRun
获取示例代码
示例代码基于LangChain框架,集成了Agent Identity SDK实现安全的第三方服务访问。在本地打开终端,执行以下命令克隆示例代码。
git clone https://github.com/aliyun/agent-identity-dev-kit
cd agent_identity_python_samples/agentrun-langchain_sample
打包示例代码
执行以下命令,打包示例代码为zip文件用于AgentRun部署:
zip -r agentrun-langchain_sample.zip .
创建并配置Agent
-
在AgentRun控制台顶部导航栏选择运行时与沙箱。
-
点击创建Agent。
-
选择通过代码创建。
-
在通过代码创建Agent页面,完成以下配置:
-
Agent名称:用于标识Agent的名称。可保持默认。
-
选择代码来源:保持默认的上传代码包选项。
-
运行时类型:从下拉菜单中选择Python 3.12。
-
点击上传文件区域,将打包示例代码步骤生成的zip包上传。
上传区域支持 ZIP、TAR.GZ 格式。请确保将所有依赖项(如
requirements.txt、package.json等声明的依赖)一起打包上传。如果使用 AgentRun SDK 的代码包,请确保下方的执行角色包含 AliyunAgentRunFullAccess 权限。 -
环境变量配置:配置以下环境变量:
环境变量
说明
示例值
MODEL_SERVICE_NAME创建大语言模型服务步骤中保存的模型服务名称
model-xxxxxxMODEL_NAME具体模型名称
qwen-maxAGENT_IDENTITY_WORKLOAD_IDENTITY_NAME创建工作负载身份步骤中指定的工作负载身份名称
workload-id-for-agentrun -
执行角色配置:选择或创建一个RAM角色,确保:
-
该角色的信任策略中,授权主体(
Principal)需要包含函数计算服务(fc.aliyuncs.com)。信任策略示例如下:{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "fc.aliyuncs.com" ] } } ], "Version": "1" } -
该角色的权限策略包含
AliyunAgentIdentityDataFullAccess及AliyunAgentRunReadOnlyAccess系统策略。在执行角色配置页面,执行角色下拉框中选择 agent-identity-sample-fc。
-
-
访问凭证:单击入站:访问凭证按钮,切换为使用已有凭证选项,选择在创建AgentRun入站访问凭证步骤中创建的JWT凭证。
-
单击开始部署。部署完成后,AgentRun会自动生成一个公网访问端点。请复制访问端点,以备后用。
访问端点位于页面右侧快速访问配置面板的访问端点区域。
-
在Web IDE中安装项目依赖
为了保证项目所需依赖的版本及平台架构与Agent的运行时一致,避免出现由于本地和云端平台架构及依赖版本导致的兼容性问题,建议直接在AgentRun提供的Web IDE中安装示例项目所需依赖。
-
在创建好的Agent详情页左侧导航栏选择代码与调试,等待Web IDE加载完成。
-
在Web IDE顶部菜单中单击Terminal > New Terminal,打开终端。执行以下命令将依赖安装到当前项目下的
python目录中。pip install -r requirements.txt -t ./python -
等待所有依赖安装完成后,单击更新按钮,将更新内容部署到运行时中。
步骤四:测试与验证
本教程将结合使用Web前后端应用示例(类似在百炼高代码中使用Agent Identity教程中使用的示例),完成用户登录并调用部署在AgentRun中的Agent,最终实现让您的Agent调用钉钉开放平台并将数据安全地写入钉钉文档。
如您希望更深入地研究整个工作流,可以采用本教程代码仓库README中的方式(采用curl命令)来调用Agent。
创建并配置钉钉应用
如您还没有创建并配置钉钉应用,请参照在Agent中安全访问钉钉教程中的步骤一完成创建和配置,并将钉钉配置为Agent Identity的OAuth2凭证提供商。
注意:钉钉凭证提供商的名称必须设置为test-provider-for-dingtalk,以与Agent示例项目中的配置(位于agentrun-langchain_sample/ding_talk_tool.py中)匹配。
配置工作负载身份的应用回调地址
为了让Agent Identity为您的Agent从钉钉处获取OAuth访问令牌,需要为创建的工作负载身份配置应用回调地址。
-
进入工作负载身份详情页的认证流程区域,单击设置应用回调地址。
-
在设置应用回调地址弹窗中,输入地址
http://localhost:8090/callback。 -
单击确定。
配置Web前后端应用示例
-
在项目根目录下(
agent-identity-dev-kit),执行以下命令切换到端到端示例目录:cd agent_identity_python_samples/end-to-end_sample -
安装端到端示例所需的依赖(建议在Python虚拟环境中操作):
pip install -r requirements.txt -
将配置阿里云为Agent Identity入站身份提供商步骤中保存应用ID,以及创建并配置Agent步骤中保存的Agent公网访问端点更新至项目下的
application/app.yml文件中:INBOUND_APP_ID: "<replace-with-your-oauth-app-id>" AGENT_ENDPOINT: "https://<replace-with-your-agent-access-endpoint>/openai/v1/chat/completions"
启动前后端应用
在目录end-to-end_sample下执行以下命令:
python -m application.backend.app
访问应用并与代理交互
-
等待代理及前后端应用启动完毕后,在浏览器中输入应用访问地址
http://localhost:8090。 -
完成阿里云登录及用户授权。之后,您可在应用对话窗口中与模型进行对话,例如输入:“将以下内容写入我的钉钉文档:{钉钉文档链接或文档ID} {需要写入的内容}”。
输入上述内容后,对话界面将返回一条包含 OAuth 授权链接的提示,提示文本为 Please click the link to authorize Write to DingTalk document,用户需点击该授权链接完成钉钉文档写入授权后,Agent 方可执行写入操作。
说明您需要提前获取钉钉文档的链接,本示例应用无法新建钉钉文档并写入。
-
单击返回结果中的OAuth授权地址并使用钉钉文档持有者账户完成登录和授权。
-
完成授权后,如果一切正常,Agent将提示文档已经写入成功。类似如下:
在 Agent 对话界面中,用户提供钉钉文档链接并下达写入指令,Agent 通过 Agent Identity 服务生成 OAuth 授权链接并提示用户点击完成授权,授权通过后 Agent 确认内容已成功写入目标文档。
-
此时检查钉钉文档,会发现文档已成功写入内容。