在百炼高代码中使用Agent Identity

更新时间:
复制为 MD 格式

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

架构

diagram_agentidentity_bailian1

准备工作

环境要求

本地测试环境需要安装Python(版本≥ 3.10)以及pip包管理器

RAM用户及权限要求

  1. RAM用户要求:

    您需要准备两个RAM用户,分别用于不同目的。

    1. 管理员:用于登录百炼、函数计算(FC)、Agent IdentityRAM控制台进行应用管理及权限配置。

    2. 脚本执行用户:用于执行准备脚本、本地应用测试以及将应用部署至百炼高代码平台。

  2. 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": "*"
        }
      ]
    }
  3. 百炼业务空间权限要求:

    脚本执行用户百炼账号管理页面添加特定业务空间的组件管理_智能体_操作权限。

    image

服务开通与授权

  1. 确保您的阿里云账号已开通以下服务:

    • 大模型服务平台百炼

    • 函数计算(FC)

  2. 在百炼控制台完成云服务授权。前往阿里云百炼-应用管理,点击高代码类型,并对相关云服务使用进行一键授权。

    image

    确保imageimageimage三个服务在“已授权”状态。

百炼API密钥

获取具有百炼模型调用权限的DashScope API密钥。如您还没有创建百炼API密钥,请参考获取API Key进行创建和配置。

步骤一:本地安装与测试应用

获取并准备示例代码

  1. 克隆代码仓库。在本地打开终端,执行以下命令克隆示例代码。

    git clone https://github.com/aliyun/agent-identity-dev-kit.git
    cd agent-identity-dev-kit/agent_identity_python_samples/end-to-end_sample
  2. 安装依赖。建议创建并激活一个 Python 虚拟环境,然后安装项目所需的依赖。

    pip install -r requirements.txt
  3. 配置环境变量

    export AGENT_IDENTITY_REGION_ID=cn-beijing # 当前Agent Identity仅开放北京地域
    export DASHSCOPE_API_KEY=<your-api-key> # DashScope API
    export MODELSTUDIO_WORKSPACE_ID=<your-workspace-id> # 可选,替换为百炼的业务空间ID,该空间将部署高代码应用,不设置将使用默认业务空间

准备RAM用户凭证

在本地使用RAM用户及权限要求提到的脚本执行用户配置凭证。

使用阿里云CLI

  1. 安装阿里云CLI(如已安装,可跳过)。具体请参考步骤一:安装阿里云CLI

  2. 登录阿里云CLI。具体请参考为阿里云CLI配置OAuth认证

  3. 检查凭证配置。执行命令aliyun configure list检查凭证配置是否存在且有效。输出类似如下:

    Profile        | Credential          | Valid   | Region           | Language
    ---------      | ------------------  | ------- | ---------------- | --------
    OAuthProfile * | OAuth:xQcliVOdYA@CN | Valid   | cn-hangzhou      | 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 deploy_starter.prepare

此脚本执行以下操作:

  1. 创建身份提供者

  2. 创建阿里云OAuth 2.1入站应用

  3. 创建阿里云MCP服务所需的OAuth 2.1 Native应用

  4. 创建工作负载身份和角色

  5. 配置凭证提供者

脚本会输出创建的资源信息到根目录下的.config.json文件中。其中包含mcp_app_name,需要在后续使用到。

如果执行过程中出现异常失败(如网络问题、资源超过quota等)需要清除创建的资源后再重新运行准备脚本,清除创建的资源请运行:

python -m deploy_starter.clear
说明

为避免对账号下的RAM资源造成影响,清理逻辑不会删除角色/自定义策略,需要手动删除。

配置OpenAPI MCP服务

  1. 导航到阿里云OpenAPI MCP服务,完成登录。

  2. 单击查看MCP服务页签。

  3. 在搜索框中输入"resourcecenter",单击搜索结果中的"resourcecenter"系统服务。

  4. OAuth配置区域,单击修改

  5. 在弹出的修改OAuth配置对话框中,选择自定义OAuth。单击下拉菜单,选择准备脚本所创建的MCP应用名称。具体应用名称应与项目根目录下的.config.json文件中的mcp_app_name字段值匹配。单击确认修改

  6. 配置信息区域,复制Streamable HTTP Endpoint地址,将其更新至项目deploy_starter/config.yml文件中的MCP_SERVER字段。

测试应用

  1. 启动Agent代理服务。在根目录下执行以下命令:

    python -m deploy_starter.main
  2. 启动前后端应用。在根目录下执行以下命令:

    python -m application.backend.app
  3. 访问应用并与代理交互

    1. 等待代理及前后端应用启动完毕后,在浏览器中输入应用访问地址http://localhost:8090

    2. 完成阿里云登录及用户授权。之后,您可在应用对话窗口中与模型进行对话,例如输入:“查询我阿里云账号下的VPC配置信息”。

    3. 单击返回结果中的OAuth授权地址并完成授权。

      image

    4. 完成授权后,如果一切正常,将返回查询结果。类似如下:

      image

    说明

    更多与Agent交互的示例,请参考代码仓库的README文档。

步骤二:打包并部署Agent至百炼高代码

打包本地代码

  1. 安装打包及部署代码所需依赖。在项目根目录执行以下命令:

    pip install rich
    pip install alibabacloud-bailian20231229
  2. 打包Agent。在项目根目录执行下面命令进行打包:

    python setup.py bdist_wheel

    打包成功后,将产生.whl文件并保存至项目下的dist目录中。

部署Agent至百炼

  1. 在项目根目录下执行以下命令,将打包出来的whl文件部署到百炼:

    runtime-fc-deploy --deploy-name agent-identity-sample  --whl-path <PATH_TO_YOUR_NEW_WHL_FILE> --telemetry enable

    执行结果类似如下:

    image

    说明

    如您在部署过程中遇到了权限相关报错,请检查RAM用户及权限要求中提到的RAM权限百炼空间权限是否有被授予脚本执行用户

  2. 部署成功后,稍等片刻,您可在阿里云百炼-应用管理中找到部署的Agent应用(状态为已发布)。

    image

步骤三:配置百炼高代码应用

在百炼中配置环境变量

  1. 阿里云百炼-应用管理中找到并单击部署的Agent应用,进入应用详情页。

  2. 在高代码应用详情页,单击环境变量区域右侧的编辑按钮。

    image

  3. 在末尾添加配置如下两个环境变量,完成后单击确定

    • AGENT_IDENTITY_WORKLOAD_IDENTITY_NAME:设置为项目根目录.config.json中的workload_identity_name字段值。

    • DASHSCOPE_API_KEY:设置为百炼当前业务空间中的API Key。

    image

  4. 在弹出的保存环境变量确认框中,单击确认

在函数计算中配置实例RAM角色

  1. 登录RAM控制台,创建一个用于关联到函数计算实例的RAM角色,云服务主体选择“函数计算”。具体步骤请参见创建可信实体为阿里云服务的RAM角色

  2. RAM控制台中为创建的RAM角色授予AliyunAgentIdentityDataFullAccess系统策略。

  3. 阿里云百炼-应用管理中找到并单击部署的Agent应用。在高代码应用详情页,单击基础配置区域右侧的查看详情,进入高代码应用所在函数计算实例详情页。

    20260102220918

  4. 在函数计算详情页,单击配置页签。在配置页签下,单击高级配置区域右侧的编辑按钮。

    image

  5. 在高级配置编辑页,单击权限。在函数角色输入框中搜索并选择刚创建的RAM角色。

  6. 单击部署

在本地代码中配置公网访问地址和鉴权Token

  1. 阿里云百炼-应用管理中找到并单击部署的Agent应用。在高代码应用详情页,复制触发器区域下的公网访问地址鉴权token

    image

  2. 将公网访问地址和鉴权Token更新至项目下的deploy_starter/config.yml文件中:

    AGENT_BEARER_TOKEN: "<鉴权Token>"
    AGENT_ENDPOINT: "<公网地址>/process"

步骤四:测试与验证

参考测试应用中的步骤进行应用启动与测试。

日志查询(可选)

您可在高代码应用所在的函数计算实例上查看请求日志,以了解调用历史及Agent的输出信息。

image

注意事项

  • 如您希望再次执行准备脚本prepare.py,请先在项目根目录下执行清理脚本以清理资源:

    python -m deploy_starter.clear
  • 项目准备脚本prepare.py下的常量配置信息不可更改,否则会导致应用无法正常工作。

  • 如果您希望将前后端应用部署至阿里云(如ECS示例),需要为后端应用所在的环境关联实例RAM角色(如ECS实例角色、函数计算实例角色),并授予AliyunAgentIdentityDataCompleteAuthAccess系统策略。否则Agent将无法获得OAuth Access Token。