# AgentSphere细粒度权限管理最佳实践
在沙箱实验与仿真运行环境中，不同团队或不受信任的自动化脚本对计算资源的访问需求各不相同。由于沙箱内部运行的代码具有不可控性，如果鉴权范围过于宽泛，极易导致实验环境交叉污染、漏洞逃逸、高危误操作或底层资源恶意抢占。为了解决这些隐患，实现基于运行时上下文的细粒度权限控制尤为重要。
本沙箱权限管理指南是在华为云统一身份认证服务（IAM）的动态鉴权能力基础上打造的。系统支持基于IAM Token临时认证与纯Action级的动态条件控制，能够精准限制用户及临时进程对特定敏感接口（如网络变更、高危删除）的访问，从而有效地将风险锁死在沙箱边界内，确保多沙箱环境的绝对隔离与宿主机安全。
AgentSphere权限管理是在统一身份认证服务（IAM）的能力基础上，打造的细粒度权限管理功能。AgentSphere权限管理支持基于IAM的细粒度权限控制和IAM APIKEY认证，支持template级别的权限控制，从而有效地限制用户对特定资源的访问，确保资源使用的隔离性和安全性。
本示例主要介绍如何配置子用户的细粒度权限来创建沙箱。了解AgentSphere权限管理的更多内容，请参见[权限管理](https://support.huaweicloud.com/productdesc-agentsphere/agentsphere_01_0006.html)。
#### 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细粒度授权步骤
#### 步骤一：创建用户与用户组
1. 登录[统一身份认证服务新版控制台](https://console.huaweicloud.com/iam5)。
2. 在左侧导航栏中选择"用户组"，在页面右上角单击"创建用户组"。在弹出页面，输入"用户组名称"，单击"确定"。 
   本示例需要创建2个用户组，分别为，例如group1（用于开发与测试）和group2（用于运维）。
   图1新建的用户组   
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002766450300.png "点击放大")
   
   
3. 在左侧导航栏中选择"用户"，在右上角单击"创建用户"。根据需求配置"用户基本信息"，单击"下一步"。 
   图2创建用户   
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002796182251.png "点击放大")
   
   
4. 根据需求选择加入的用户组，单击"创建用户"。 
   本示例共创建3个用户，分别代表开发、测试和运维，其中开发与测试加入group1，运维加入group2。
   在用户列表中可以看到新建的3个用户，如图所示。
   图3新建的用户   
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002766450620.png "点击放大")
   
   
 
#### 步骤二：对用户组进行IAM授权
管理员分别对用户组group1和group2进行IAM授权，基于云服务管理用户组的相关权限。
1. 在左侧导航栏中选择"用户组"，找到需要授权的用户组，单击"授权"。
2. 在弹出页面中，在右上角输入"AgentSphere"，过滤出AgentSphere对应的系统身份策略。 
   根据需要选择策略，智能体沙箱（AgentSphere）具有2种策略，了解AgentSphereFullAccessPolicy和AgentSphereReadOnlyPolicy策略的更多内容，请参考[权限管理](https://support.huaweicloud.com/productdesc-agentsphere/agentsphere_01_0006.html)。
   本示例中，group1选择AgentSphereFullAccessPolicy策略，group2选择AgentSphereReadOnlyPolicy策略。
   图4IAM授权   
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002796130811.png "点击放大")
   
   
3. 单击"确定"后，在弹出的页面单击"完成"授权，返回到统一身份认证管理页面。 
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002796050879.png "点击放大")
   
   
 
#### 步骤三：自定义身份策略，按需添加额外所需权限
1. 在左侧导航栏中选择"身份策略"，单击右上角的"创建自定义身份策略"按钮。
2. 在弹出页面中，选择所需要添加的云服务及对应的细粒度权限，单击"确认"完成自定义的身份策略创建。 
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002766811154.png "点击放大")
   
   
3. 在身份策略页面单击刚才创建的自定义身份策略查看策略详情，单击"授权记录"下的"附加"按钮，将自定义身份策略授权给需要的用户组。 
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002766811284.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002766451274.png "点击放大")
   
   
4. 选择需要授权的用户组，完成授权。 
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002796131259.png "点击放大")
   
   
 
#### 场景示例
#### 场景一：不授予子用户te_admin的权限，但是想让子用户能完全操控AgentSphere依赖的全部资源，进行业务快速验证
假设已新建用户组group1和子用户user1，且user1加入了group1。
1. 为group1授予除IAM外所有依赖服务的FullAccess系统策略包含： 
   - AgentSphereFullAccessPolicy
   
   - SWRFullAccessPolicy
   
   - VPCFullAccessPolicy
   
   - VPCEPFullAccessPolicy
   
   - AOMFullAccessPolicy
   
   - LTSFullAccessPolicy
   
   
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/public_sys-resources/note_3.0-zh-cn.png)
   每个用户组最多授予10个策略。
   
   
2. 自定义身份策略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"
         ]
       }
     ]
   }
   ```
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002766814884.png "点击放大")
   
   
3. 将自定义身份策略授权给用户组group1。 
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002796055365.png "点击放大")
   
   
4. 如果沙箱需要挂载OBS存储，则需要创建一个信任委托，将OBS权限委托给"安全沙箱元数据"服务。您在创建沙箱模板时将其中"运行时信任委托"参数设置为该委托即可挂载OBS存储。本场景为了快速验证，授予OBSFullAccess权限。 
   1. 选择左侧导航栏中的"委托"，单击右上角的"创建信任委托"按钮。 ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002796163603.png "点击放大")
      
   
   2. 设置委托名称为agentsphere-delegation-test，信任主体类型选择云服务，云服务选择"安全沙箱元数据"，单击"完成"。 ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002766883508.png "点击放大")
      
   
   3. 找到agentsphere-delegation-test委托，单击"授权"，选择OBSFullAccess权限，单击"确定"。
   
   
   
   
5. 登录AgentSphere的页面进行后续的功能验证即可。
 
#### 场景二：授予子用户可以操作AgentSphere资源的权限，依赖的云服务资源仅有查看权限
假设已新建用户组group1和子用户user1，且user1加入了group1。
1. 为group1授予AgentSphereFullAccessPolicy系统策略，该系统策略仅包含AgentSphere运行所需要的最小权限。
2. 如果需要为沙箱挂载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"
         ]
       }
     ]
   }
   ```
   
   
3. 使用OBS和SFSTurbo挂载的时候，需要新建信任委托，委托名称为agentsphere-delegation-test，信任主体类型选择云服务，云服务选择"安全沙箱元数据"，单击"确认"即可。 
   ![](https://support.huaweicloud.com/bestpractice-agentsphere/zh-cn_image_0000002796061065.png "点击放大")
   
   
4. 新建自定义信任策略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:*"
         ]
       }
     ]
   }
   ```
   
   
 
