在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密钥。输入您从模型提供商处获得的API密钥(如百炼API Key)。

单击创建模型,完成模型创建。复制模型服务名称并保存,以备后用。

创建AgentRun入站访问凭证
入站凭证用于验证调用方身份。AgentRun支持多种认证方式,本教程使用JWT认证。
在AgentRun控制台顶部导航栏选择。
保持默认选择的访问AgentRun凭证页签,单击创建访问凭证。

在创建访问凭证页面,完成如下配置:
凭证名称:用于标识凭证的名称,例如输入aliyun。
认证类型:选择认证类型为JWT(JSON Web Token)。
JWKS配置方式:选择JWKS URL获取方式:
JWKS端点URL:输入阿里云的JWKS端点地址
https://oauth.aliyun.com/v1/keys。

其余设置均保持默认。单击创建凭证,完成访问凭证创建。

步骤二:创建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包上传。

环境变量配置:配置以下环境变量:
环境变量
说明
示例值
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系统策略。
访问凭证:单击入站:访问凭证按钮,切换为使用已有凭证选项,选择在创建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授权地址并使用钉钉文档持有者账户完成登录和授权。
完成授权后,如果一切正常,Agent将提示文档已经写入成功。类似如下:

此时检查钉钉文档,会发现文档已成功写入内容。

















