AgentSphere细粒度权限管理最佳实践
在沙箱实验与仿真运行环境中,不同团队或不受信任的自动化脚本对计算资源的访问需求各不相同。由于沙箱内部运行的代码具有不可控性,如果鉴权范围过于宽泛,极易导致实验环境交叉污染、漏洞逃逸、高危误操作或底层资源恶意抢占。为了解决这些隐患,实现基于运行时上下文的细粒度权限控制尤为重要。
本沙箱权限管理指南是在华为云统一身份认证服务(IAM)的动态鉴权能力基础上打造的。系统支持基于IAM Token临时认证与纯Action级的动态条件控制,能够精准限制用户及临时进程对特定敏感接口(如网络变更、高危删除)的访问,从而有效地将风险锁死在沙箱边界内,确保多沙箱环境的绝对隔离与宿主机安全。
AgentSphere权限管理是在统一身份认证服务(IAM)的能力基础上,打造的细粒度权限管理功能。AgentSphere权限管理支持基于IAM的细粒度权限控制和IAM APIKEY认证,支持template级别的权限控制,从而有效地限制用户对特定资源的访问,确保资源使用的隔离性和安全性。
本示例主要介绍如何配置子用户的细粒度权限来创建沙箱。了解AgentSphere权限管理的更多内容,请参见权限管理。
AgentSphere依赖的云服务
AgentSphere是面向Agent应用打造的一站式基础设施产品组合,为Agent强化学习(RL)训练和Agent在线服务(如智能助手)两大场景提供高性能沙箱运行、多层次安全防护、持久化数据底座等关键能力。
在使用AgentSphere的过程中,可能依赖的云服务如下:
| 云服务名称 | 服务简介 |
|---|---|
| Agent Gateway(智能体网关) | Agent出入站安全代理网关,支持公私网接入、访问控制(黑白名单)、URL管控、MCP/API代理。 |
| Agent Identity(智能体身份) | Agent身份与访问控制,支持入站/出站身份认证、安全策略管控、凭证管理、资源授权。 |
| IAM(统一身份认证服务) | APIKEY生命周期管理及细粒度权限管理。 |
| SWR (容器镜像服务) | 容器镜像的生命周期管理,沙箱镜像需要托管到SWR仓库。 |
| VPC(虚拟私有云) | 沙箱的出入站网络控制。 |
| OBS(对象存储服务) | 可挂载用户已有的对象存储,用于加载已有skill等数据。 |
| SFSTurbo(高性能文件弹性服务) | 多个沙箱之间可以共享存储。 |
| AOM(应用运维服务) | 沙箱的监控指标上报和展示。 |
| LTS(云日志服务) | 沙箱的标准输出日志采集和上报。 |
| NAT(NAT网关) | 当前OBS/SFSTurbo等存储在沙箱模式下不支持公网访问,需要通过NAT代理至公网。 |
| KMS(密钥管理服务) | identity服务被动依赖,用于凭证的加解密。 |
| CSMS(云凭据管理服务) | identity服务被动依赖,用于凭证轮转。 |
AgentSphere在IAM中预置了以下系统身份策略,均遵循最小权限原则(仅授予完成对应操作所需的最小权限),可直接授予子用户使用:
| 系统身份策略名称 | 描述 | 策略类别 |
|---|---|---|
| AgentSphereReadOnlyPolicy | 访问AgentSphere只读权限。 | 系统身份策略 |
| AgentSphereFullAccessPolicy | 访问AgentSphere所有权限。 | 系统身份策略 |
| AgentSphereRuntimeDeploymentAgencyPolicy | 访问AgentSphere运行时需要的获取SWR镜像的相关权限。 | 系统身份策略 |
IAM细粒度授权步骤
步骤一:创建用户与用户组
- 登录统一身份认证服务新版控制台。
- 在左侧导航栏中选择“用户组”,在页面右上角单击“创建用户组”。在弹出页面,输入“用户组名称”,单击“确定”。
本示例需要创建2个用户组,分别为,例如group1(用于开发与测试)和group2(用于运维)。
图1 新建的用户组
- 在左侧导航栏中选择“用户”,在右上角单击“创建用户”。根据需求配置“用户基本信息”,单击“下一步”。 图2 创建用户
- 根据需求选择加入的用户组,单击“创建用户”。
本示例共创建3个用户,分别代表开发、测试和运维,其中开发与测试加入group1,运维加入group2。
在用户列表中可以看到新建的3个用户,如图所示。
图3 新建的用户
步骤二:对用户组进行IAM授权
管理员分别对用户组group1和group2进行IAM授权,基于云服务管理用户组的相关权限。
- 在左侧导航栏中选择“用户组”,找到需要授权的用户组,单击“授权”。
- 在弹出页面中,在右上角输入“AgentSphere”,过滤出AgentSphere对应的系统身份策略。
根据需要选择策略,智能体沙箱(AgentSphere)具有2种策略,了解AgentSphereFullAccessPolicy和AgentSphereReadOnlyPolicy策略的更多内容,请参考权限管理。
本示例中,group1选择AgentSphereFullAccessPolicy策略,group2选择AgentSphereReadOnlyPolicy策略。
图4 IAM授权
- 单击“确定”后,在弹出的页面单击"完成"授权,返回到统一身份认证管理页面。

步骤三:自定义身份策略,按需添加额外所需权限
- 在左侧导航栏中选择“身份策略”,单击右上角的“创建自定义身份策略”按钮。
- 在弹出页面中,选择所需要添加的云服务及对应的细粒度权限,单击“确认”完成自定义的身份策略创建。

- 在身份策略页面单击刚才创建的自定义身份策略查看策略详情,单击“授权记录”下的“附加”按钮,将自定义身份策略授权给需要的用户组。


- 选择需要授权的用户组,完成授权。

场景示例
场景一:不授予子用户te_admin的权限,但是想让子用户能完全操控AgentSphere依赖的全部资源,进行业务快速验证
假设已新建用户组group1和子用户user1,且user1加入了group1。
- 为group1授予除IAM外所有依赖服务的FullAccess系统策略包含:
- AgentSphereFullAccessPolicy
- SWRFullAccessPolicy
- VPCFullAccessPolicy
- VPCEPFullAccessPolicy
- AOMFullAccessPolicy
- LTSFullAccessPolicy
每个用户组最多授予10个策略。
- 自定义身份策略agentsphere-test,授予如下细粒度权限,用于APIKEY的增删改查及系统策略查询。
{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "iam:serviceSpecificCredentials:createV5", "iam:serviceSpecificCredentials:deleteV5", "iam:serviceSpecificCredentials:listV5", "iam:serviceSpecificCredentials:updateV5" ] }, { "Effect": "Allow", "Action": [ "iam::getAccessKey", "iam::getAsymmetricSignatureSwitchV5", "iam:agencies:checkRole", "iam:agencies:checkRoleOnDomain", "iam:agencies:checkRoleOnProject", "iam:agencies:get", "iam:agencies:getServiceLinkedAgencyDeletionStatusV5", "iam:agencies:getV5", "iam:agencies:listV5", "iam:agencies:createV5", "iam:agencies:attachPolicyV5", "iam:credentials:showAccessKeyLastUsedV5", "iam:groups:checkRole", "iam:groups:checkRoleOnDomain", "iam:groups:checkRoleOnProject", "iam:groups:checkUser", "iam:groups:get", "iam:groups:getGroupV5", "iam:identityProviders:get", "iam:identityProviders:getMapping", "iam:identityProviders:getOIDCConfig", "iam:identityProviders:getProtocol", "iam:identityProviders:getSAMLMetadata", "iam:oidcProviders:getV5", "iam:policies:getV5", "iam:policies:listV5", "iam:policies:getVersionV5", "iam:roles:get", "iam:samlProviders:getV5", "iam:securityPolicies:getApiAclPolicy", "iam:securityPolicies:getConsoleAclPolicy", "iam:securityPolicies:getLoginPolicy", "iam:securitypolicies:getLoginPolicyV5", "iam:securityPolicies:getPasswordPolicy", "iam:securitypolicies:getPasswordPolicyV5", "iam:securityPolicies:getPrivacyTransferPolicy", "iam:securityPolicies:getProtectPolicy", "iam:securitypolicies:getTokenPolicyV5", "iam:users:get", "iam:users:getLoginProtectSetting", "iam:users:getUserV5", "iam:users:getVirtualMFADevice", "iam:users:showLoginProfileV5", "iam:users:showUserLastLoginV5", "agentnetwork:target:list", "lts:topics:*", "lts:groups:*", "sfsturbo:shares:*", "obs:*:*" ] }, { "Effect": "Allow", "Action": [ "csms:secret:create" ] }, { "Effect": "Allow", "Action": [ "kms:cmk:createDataKey" ] } ] }
- 将自定义身份策略授权给用户组group1。

- 如果沙箱需要挂载OBS存储,则需要创建一个信任委托,将OBS权限委托给“安全沙箱元数据”服务。您在创建沙箱模板时将其中“运行时信任委托”参数设置为该委托即可挂载OBS存储。本场景为了快速验证,授予OBSFullAccess权限。
- 登录AgentSphere的页面进行后续的功能验证即可。
场景二:授予子用户可以操作AgentSphere资源的权限,依赖的云服务资源仅有查看权限
假设已新建用户组group1和子用户user1,且user1加入了group1。
- 为group1授予AgentSphereFullAccessPolicy系统策略,该系统策略仅包含AgentSphere运行所需要的最小权限。
- 如果需要为沙箱挂载OBS/SFSTurbo存储的话,则需要新建自定义策略agentsphere-extend添加相关权限后,授予group1,具体的策略内容如下:
{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "iam:agencies:getV5", "iam:agencies:listV5" ] }, { "Effect": "Allow", "Action": [ "sfsturbo:shares:getAllShares", "sfsturbo:shares:getShare" ] }, { "Effect": "Allow", "Action": [ "obs:bucket:listAllMyBuckets", "obs:bucket:listBucket", "obs:bucket:headBucket" ] } ] } - 使用OBS和SFSTurbo挂载的时候,需要新建信任委托,委托名称为agentsphere-delegation-test,信任主体类型选择云服务,云服务选择“安全沙箱元数据”,单击“确认”即可。

- 新建自定义信任策略agentsphere-delegation-policy,添加好OBS/SFSTurbo权限后,将自定义策略权限授予给agentsphere-delegation-test委托,自定义策略权限如下:
{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "sfsturbo:shares:getAllShares", "sfsturbo:shares:getShare" ] }, { "Effect": "Allow", "Action": [ "obs:bucket:listAllMyBuckets", "obs:bucket:listBucket", "obs:bucket:headBucket", "obs:object:*" ] } ] }

