在百炼高代码中使用Agent Identity
通过百炼高代码平台,可以快速地开发、部署高度自定义的 AI Agent。通过将Agent Identity与百炼高代码平台集成,可以使用户安全可控地访问Agent,同时令Agent安全可控地访问资源。本教程演示如何在百炼高代码应用中集成Agent Identity,实现智能体(Agent)在执行敏感操作(如访问云资源)前,必须先获得用户即时授权,从而安全、可控地访问云服务。
架构

准备工作
环境要求
本地测试环境需要安装Python(版本≥ 3.10)以及pip包管理器。
RAM用户及权限要求
RAM用户要求:
您需要准备两个RAM用户,分别用于不同目的。
管理员:用于登录百炼、函数计算(FC)、Agent Identity及RAM控制台进行应用管理及权限配置。
脚本执行用户:用于执行准备脚本、本地应用测试以及将应用部署至百炼高代码平台。
RAM权限要求:
管理员用户至少需要具备以下权限:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "fc:*", "Resource": "*" }, { "Effect": "Allow", "Action": "ram:PassRole", "Resource": "*", "Condition": { "StringEquals": { "acs:Service": [ "fc.aliyuncs.com" ] } } }, { "Effect": "Allow", "Action": "bailiancontrol:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ram:ListUserBasicInfos", "ram:*Application*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ram:CreateRole", "ram:GetRole", "ram:ListRoles", "ram:AttachPolicyToRole", "ram:ListPolicyAttachments", "ram:ListPolicies", "ram:GetPolicy", "ram:ListUsers" ], "Resource": "*" }, { "Effect": "Allow", "Action": "openapiexplorer:*Mcp*", "Resource": "*" }, { "Effect": "Allow", "Action": "agentidentity:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "log:Get*", "log:List*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "log:Query*", "log:CallAiTools" ], "Resource": "*" } ] }脚本执行用户需要具备以下权限:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "bailiandata:*", "sfm:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "agentidentity:*", "Resource": "*" }, { "Effect": "Allow", "Action": "agentidentitydata:*", "Resource": "*" }, { "Effect": "Allow", "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "ram:ServiceName": ["agentidentity.aliyuncs.com"] } } }, { "Effect": "Allow", "Action": [ "ram:CreateApplication", "ram:CreateRole", "ram:CreatePolicy", "ram:AttachPolicyToRole", "ram:CreateAppSecret", "ram:DeleteApplication", "ram:ListUserBasicInfos", "ram:ListRoles" ], "Resource": "*" } ] }上述权限需要通过自定义权限策略授予对应的RAM用户,操作步骤如下:
创建自定义权限策略。登录RAM控制台,在左侧导航栏选择权限管理 > 权限策略,单击创建权限策略,在脚本编辑页签中将上述JSON内容填入策略文档,然后单击确定并输入策略名称完成创建。管理员和脚本执行用户所需权限不同,需要分别创建两个自定义权限策略。具体操作请参见创建自定义权限策略。
创建RAM用户。在RAM控制台的左侧导航栏选择身份管理 > 用户,分别创建管理员和脚本执行用户。在访问方式区域,管理员选中控制台访问,用于登录各控制台完成配置;脚本执行用户选中使用永久AccessKey访问,用于配置阿里云CLI及部署应用。具体操作请参见创建RAM用户。
说明AccessKey Secret仅在创建时显示,请及时保存脚本执行用户的AccessKey ID和AccessKey Secret。
为RAM用户授权。在用户页面找到目标RAM用户,单击操作列的新增授权。在新增授权面板中,将资源范围设置为账号级别,选择自定义策略并勾选上一步创建的权限策略,然后单击确认新增授权。具体操作请参见管理RAM用户的权限。
百炼业务空间权限要求:
脚本执行用户需要先被添加为百炼用户,再为其授予部署所需权限。操作步骤如下:
使用管理员用户登录百炼账号管理页面。
单击新增用户,选择前文创建的脚本执行用户,完成添加。
在用户列表中找到该用户,单击编辑权限。本文示例使用默认业务空间。
在编辑权限弹窗中,进入页面权限步骤,至少勾选以下权限,然后保存配置。
API-KEY:用于获取和管理业务空间的API Key。
智能体-操作:用于部署和管理高代码应用。
服务开通与授权
确保您的阿里云账号已开通以下服务:
大模型服务平台百炼
函数计算(FC)
在百炼控制台完成云服务授权。前往阿里云百炼-应用管理,点击高代码类型,并对相关云服务使用进行一键授权。
确保函数计算FC、对象存储OSS、API网关三个服务在“已授权”状态。
百炼API密钥
获取具有百炼模型调用权限的DashScope API密钥。如您还没有创建百炼API密钥,请参考获取与配置 API Key进行创建和配置。
步骤一:本地安装与测试应用
获取并准备示例代码
克隆代码仓库。在本地打开终端,执行以下命令克隆示例代码。
git clone https://github.com/aliyun/agent-identity-dev-kit.git cd agent-identity-dev-kit/agent_identity_python_samples/end-to-end_sample安装依赖。建议创建并激活一个 Python 虚拟环境,然后安装项目所需的依赖。
pip install -r requirements.txt配置环境变量。
export AGENT_IDENTITY_REGION_ID=cn-beijing # 本教程以华北2(北京)为示例 export DASHSCOPE_API_KEY=<YOUR-API-KEY> # DashScope API export MODELSTUDIO_WORKSPACE_ID=<YOUR-WORKSPACE-ID> # 可选,替换为百炼的业务空间ID,该空间将部署高代码应用,不设置将使用默认业务空间
准备RAM用户凭证
在本地使用RAM用户及权限要求提到的脚本执行用户配置凭证。
使用阿里云CLI
安装阿里云CLI(如已安装,可跳过)。具体请参考快速使用 CLI。
配置脚本执行用户的凭证。执行以下命令,使用脚本执行用户的AccessKey创建名为
agentidentity的配置项(Profile)。aliyun configure set \ --profile agentidentity \ --mode AK \ --region cn-beijing \ --language zh \ --access-key-id '<YOUR-ACCESS-KEY-ID>' \ --access-key-secret '<YOUR-ACCESS-KEY-SECRET>'说明Agent Identity支持的地域可在Agent Identity控制台左上角的地域下拉列表中查看。本教程以华北2(北京)为示例,请确保
--region与AGENT_IDENTITY_REGION_ID环境变量的取值保持一致。更多登录方式(如OAuth、RAM角色)请参见为阿里云CLI配置OAuth认证。
验证凭证配置。执行以下命令,确认返回的身份信息为脚本执行用户。
aliyun sts get-caller-identity --profile agentidentity --region cn-beijing输出类似如下,其中
Arn中的用户名应为脚本执行用户:{ "AccountId": "xxxxxxxxxxxxxxxx", "Arn": "acs:ram::xxxxxxxxxxxxxxxx:user/<脚本执行用户名>", "IdentityType": "RAMUser", "PrincipalId": "xxxxxxxxxxxxxxxxxxx", "RequestId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }您也可以执行
aliyun configure list查看已配置的Profile列表,输出类似如下:Profile | Credential | Valid | Region | Language --------- | ------------------ | ------- | ---------------- | -------- agentidentity * | AK:****** | Valid | cn-beijing | zh
使用Access Key(不推荐)
为脚本执行用户创建访问密钥(Access Key)并配置到本地环境变量中。
export ALIBABA_CLOUD_ACCESS_KEY_ID=<YOUR-ACCESS-KEY-ID>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<YOUR-ACCESS-KEY-SECRET>执行准备脚本
在本地项目根目录下运行准备脚本prepare.py来自动创建所需的云资源:
python -m prepare此脚本执行以下操作:
创建身份提供者
创建阿里云OAuth 2.1入站应用
创建阿里云MCP服务所需的OAuth 2.1 Native应用
创建工作负载身份和角色
配置凭证提供者
脚本会输出创建的资源信息到根目录下的.config.json文件中。其中包含mcp_app_name,需要在后续使用到。
如果执行过程中出现异常失败(如网络问题、资源超过quota等)需要清除创建的资源后再重新运行准备脚本,清除创建的资源请运行:
python -m clear为避免对账号下的RAM资源造成影响,清理逻辑不会删除角色/自定义策略,需要手动删除。
配置OpenAPI MCP服务
导航到阿里云OpenAPI 自定义MCP服务页面,完成登录。
在搜索框中输入"resourcecenter",单击搜索结果中的"resourcecenter"系统服务。
在OAuth配置区域,单击修改。
在弹出的修改OAuth配置对话框中,选择自定义OAuth。单击下拉菜单,选择准备脚本所创建的MCP应用名称。具体应用名称应与项目根目录下的
.config.json文件中的mcp_app_name字段值匹配。单击确认修改。在配置信息区域,复制
Streamable HTTP Endpoint地址,将其更新至项目deploy_starter/config.yml文件中的MCP_SERVER字段。
测试应用
启动Agent代理服务。在根目录下执行以下命令:
python -m deploy_starter.main启动前后端应用。在根目录下执行以下命令:
python -m application.backend.app访问应用并与代理交互:
等待代理及前后端应用启动完毕后,在浏览器中输入应用访问地址
http://localhost:8090。完成阿里云登录及用户授权。之后,您可在应用对话窗口中与模型进行对话,例如输入:“查询我阿里云账号下的VPC配置信息”。
单击返回结果中的OAuth授权地址并完成授权。
系统返回提示信息,说明首次对话需要授权获取MCP工具列表,并显示阿里云MCP服务的OAuth授权链接。
完成授权后,如果一切正常,将返回查询结果。查询结果显示共有6个VPC实例分布在三个地域。以杭州地域(cn-hangzhou)为例,每个VPC条目包含VPC名称、资源ID、资源组ID、创建时间等字段,部分条目还包含标签信息。
说明更多与Agent交互的示例,请参考代码仓库的README文档。
步骤二:打包并部署Agent至百炼高代码
打包本地代码
安装打包及部署代码所需依赖。在项目根目录执行以下命令:
pip install rich pip install alibabacloud-bailian20231229配置脚本执行用户的AccessKey。打包与部署命令通过AccessKey调用百炼及函数计算的API,请在执行打包和部署命令的终端中配置以下环境变量:
export ALIBABA_CLOUD_ACCESS_KEY_ID=<YOUR-ACCESS-KEY-ID> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<YOUR-ACCESS-KEY-SECRET>说明请使用RAM用户及权限要求中创建的脚本执行用户的AccessKey。
打包Agent。在项目根目录执行下面命令进行打包:
python setup.py bdist_wheel打包成功后,将产生
.whl文件并保存至项目下的dist目录中。
部署Agent至百炼
在项目根目录下执行以下命令,将打包出来的whl文件部署到百炼:
runtime-fc-deploy --deploy-name agent-identity-sample --whl-path <PATH_TO_YOUR_NEW_WHL_FILE> --telemetry enable执行结果类似如下:
(.venv) xxx agentscope-sample % runtime-fc-deploy --deploy-name agent-identity-sample --whl-path ./dist/agentdev_starter_5ca90297-0.1.0-py3-none-any.whl --telemetry enable Built wheel at /Users/xxx agentscope-sample/dist/agentdev_starter_5ca90297-0.1.0-py3-none-any.whl Resource Name agent-identity-sample Deploy Result Console URL: https://bailian.console.aliyun.com/?tab=app#/app-center Deploy ID: bf96fd32xxxxxxxxxxxxxxxxxxxxxxxx说明如您在部署过程中遇到了权限相关报错,请检查RAM用户及权限要求中提到的RAM权限及百炼空间权限是否有被授予脚本执行用户。
部署成功后,稍等片刻,您可在阿里云百炼-应用管理中找到部署的Agent应用(状态为已发布)。
在应用管理页面选择高代码分类标签,即可看到名为
agent-identity-sample的应用,状态显示为绿点已发布。
步骤三:配置百炼高代码应用
在函数计算中修改函数启动命令
高代码应用部署到函数计算后,需要将函数的启动命令修改为示例代码的入口模块,否则函数无法正常启动。
在阿里云百炼-应用管理中找到并单击部署的Agent应用,进入应用详情页。
在高代码应用详情页,单击基础配置区域右侧的查看详情,进入高代码应用所在的函数计算函数详情页。
在函数详情页,单击配置页签,然后单击基础配置区域右侧的编辑。
将启动命令修改为
'python3 -m deploy_starter.main',然后单击部署。
在函数计算中配置实例RAM角色
登录RAM控制台,创建一个用于关联到函数计算实例的RAM角色,云服务主体选择“函数计算”。具体步骤请参见创建可信实体为阿里云服务的RAM角色。
在RAM控制台中为创建的RAM角色授予
AliyunAgentIdentityDataFullAccess系统策略。在阿里云百炼-应用管理中找到并单击部署的Agent应用。在高代码应用详情页,单击基础配置区域右侧的查看详情,进入高代码应用所在函数计算实例详情页。
在函数计算详情页,单击配置页签。在配置页签下,单击高级配置区域右侧的编辑按钮。
在高级配置编辑页,单击权限。在函数角色输入框中搜索并选择刚创建的RAM角色。
单击部署。
在百炼中配置环境变量
在阿里云百炼-应用管理中找到并单击部署的Agent应用,进入应用详情页。
在高代码应用详情页,单击环境变量区域右侧的编辑按钮。
在末尾添加配置如下两个环境变量,完成后单击确定。
AGENT_IDENTITY_WORKLOAD_IDENTITY_NAME:设置为项目根目录.config.json中的workload_identity_name字段值。DASHSCOPE_API_KEY:设置为百炼当前业务空间中的API Key。
在弹出的保存环境变量确认框中,单击确认。
验证部署情况
完成上述配置后,在高代码应用详情页的调试区域,可以通过以下两种方式验证应用是否部署成功。
API测试:选择API测试页签,将Path设置为
/health,然后单击运行。返回成功响应说明应用已正常启动。文本对话体验:选择文本对话体验页签,单击立即体验,与Agent进行对话,验证应用能否正常响应。
在本地代码中配置公网访问地址和鉴权Token
在阿里云百炼-应用管理中找到并单击部署的Agent应用。在高代码应用详情页,复制触发器区域下的公网访问地址和鉴权token。
将公网访问地址和鉴权Token更新至项目下的
application/app.yml文件中(在代码仓库中的完整路径为agent_identity_python_samples/end-to-end_sample/application/app.yml):AGENT_BEARER_TOKEN: "<鉴权Token>" AGENT_ENDPOINT: "<公网地址>/process"
步骤四:测试与验证
Agent已部署至百炼高代码平台,因此本地无需再启动Agent代理服务,仅启动前后端应用即可完成测试。
启动前后端应用。在项目根目录下执行以下命令:
python -m application.backend.app访问应用并与Agent交互。等待前后端应用启动完毕后,在浏览器中访问
http://localhost:8090,完成阿里云登录及用户授权,然后在对话窗口中与模型进行对话。详细的交互与授权步骤请参见测试应用。
日志查询(可选)
您可在高代码应用所在的函数计算实例上查看请求日志,以了解调用历史及Agent的输出信息。
在函数详情页选择日志页签,通过调用请求列表可查看每次调用的请求 ID、调用状态(如调用成功 200)、内存用量及执行时间。日志正文中包含 MCP 工具注册记录(如 Registered 5 tool functions from ResourceCenter-20221201-SearchResources)以及 Agent 的 tool_use 调用详情,展示 Agent 通过 ResourceCenter API 搜索 OSS Bucket 资源的完整过程。
注意事项
如您希望再次执行准备脚本prepare.py,请先在项目根目录下执行清理脚本以清理资源:
python -m clear项目准备脚本
prepare.py下的常量配置信息不可更改,否则会导致应用无法正常工作。如果您希望将前后端应用部署至阿里云(如ECS示例),需要为后端应用所在的环境关联实例RAM角色(如ECS实例角色、函数计算实例角色),并授予
AliyunAgentIdentityDataCompleteAuthAccess系统策略。否则Agent将无法获得OAuth Access Token。