企业通常由一个阿里云账号统一持有云资源,再通过 RAM 用户、RAM 用户组或 RAM Role 分配管理权限。本文根据常见使用场景,介绍如何将Agent Sandbox极速版权限限制到指定资源组、Team 或资源类型。用户习惯所说的“主账号”和“子账号”,在本文中分别称为“阿里云账号”和“RAM 用户”。
选择鉴权方式
使用控制台或 OpenAPI
登录控制台管理 Team、API Key 等资源时,使用阿里云账号或 RAM 用户;调用 Agent Sandbox极速版 OpenAPI 时,使用阿里云 AK 或 STS 临时凭证。这两种方式都通过 RAM 权限策略控制可执行的操作和可访问的资源。
使用 E2B SDK、CLI 或兼容 API
通过 E2B SDK、E2B CLI 或兼容 HTTP API 创建和访问 Sandbox 时,使用Agent Sandbox极速版 API Key,不需要配置 Agent Sandbox极速版 RAM 权限。每个 API Key 绑定一个 Team,建议不同项目和环境使用不同 Team 与 API Key,不要让测试和生产应用共用一个 API Key。创建方法参见创建 API Key。
规划资源和权限
多个部门共用一个阿里云账号时,建议按部门划分资源组,按“项目 × 环境”划分 Team。例如:
阿里云账号
├── 资源组:部门 A
│ ├── Team:数据分析项目-测试环境
│ ├── Team:数据分析项目-生产环境
│ ├── Team:机器学习项目-测试环境
│ └── Team:机器学习项目-生产环境
└── 资源组:部门 B
推荐按以下方式分配权限:
|
身份 |
推荐权限范围 |
|
Agent Sandbox极速版平台管理员 |
Agent Sandbox极速版资源 |
|
部门管理员 |
本部门的资源组 |
|
项目开发人员 |
指定项目的测试 Team |
|
生产运维人员 |
指定项目的生产 Team |
|
业务应用 |
仅持有对应 Team 的Agent Sandbox极速版 API Key |
资源组适合作为部门的权限边界,Team 适合作为项目和环境的权限边界。测试和生产环境应使用不同 Team,并通过 Team 级 RAM 权限避免开发人员误操作生产资源。Team 及其资源关系参见创建 Team。
配置 RAM 权限
-
使用阿里云账号或具备 RAM 管理权限的 RAM 用户登录 RAM 控制台。
-
创建自定义权限策略,并选择脚本编辑。具体操作参见创建 RAM 自定义权限策略。
-
根据下面的场景修改策略中的资源组 ID 和 Team ID;策略中使用 Resource ARN 时,同时替换地域和账号 ID。
-
将策略授权给目标 RAM 用户、RAM 用户组或 RAM Role。具体操作参见管理权限策略授权。
-
使用目标 RAM 身份验证授权结果,确认所需操作可以执行,非授权范围仍被拒绝。
管理账号下全部Agent Sandbox极速版资源
适用于统一管理所有 Team 和资源的平台管理员。以下策略授予账号下全部地域的 Agent Sandbox极速版 权限,不包含函数计算或其他云服务权限。如需限制到指定地域,将 Resource 改为 acs:fcsandbox:<region>:<account-id>:*:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "fcsandbox:*",
"Resource": "*"
}
]
}
管理指定资源组
适用于管理一个部门内所有项目的测试和生产 Team,但不能访问其他部门的管理员。以下示例将权限限制到该部门的资源组:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "fcsandbox:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"acs:ResourceGroupId": "<department-resource-group-id>"
}
}
}
]
}
RAM 用户登录控制台后,需要切换到已授权的资源组。调用列表接口时,也应传入对应的 resourceGroupID。
管理指定 Team
适用于项目开发人员或生产运维人员。以下策略允许管理指定 Team 及其子资源,但不能创建其他 Team:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "fcsandbox:*",
"Resource": [
"acs:fcsandbox:<region>:<account-id>:teams/<team-id>",
"acs:fcsandbox:<region>:<account-id>:teams/<team-id>/*"
]
}
]
}
Team 本身和 Team 子资源使用不同的 ARN,因此需要同时配置两条 Resource。该策略不包含账号级 Team 列表权限。若用户需要通过控制台选择 Team,可以增加资源组范围的 fcsandbox:ListTeams 权限,但该用户将能看到同一资源组内的 Team 列表。需要严格限制 Team 可见范围时,建议为该项目使用独立资源组。
验证权限
完成配置后,分别验证允许和拒绝的操作:
|
身份 |
应允许 |
应拒绝 |
|
平台管理员 |
管理账号下全部 Team 和资源 |
其他账号的资源 |
|
部门管理员 |
管理本部门资源组内的 Team 和资源 |
其他部门的资源组 |
|
项目开发人员 |
管理指定项目的测试 Team |
其他项目及生产 Team |
|
生产运维人员 |
管理指定项目的生产 Team |
测试 Team 和其他生产 Team |
|
业务应用 |
使用 API Key 创建和访问 Sandbox |
通过 OpenAPI 管理 Team、API Key 或 Volume |
常见误区
-
所有项目共用一个 Team:项目成员难以隔离 API Key、Template、Sandbox 和 Volume。建议每个项目和环境使用独立 Team。
-
向开发人员授予整个部门资源组权限:部门资源组同时包含测试和生产 Team,按资源组授权会使开发人员获得生产资源权限。应将开发人员的权限限制到指定测试 Team。
-
使用 AdministratorAccess 简化授权:该策略包含超出Agent Sandbox极速版范围的权限。只管理Agent Sandbox极速版时,应使用
fcsandbox自定义策略。 -
混淆 RAM 权限和Agent Sandbox极速版 API Key:RAM 权限用于控制台和 OpenAPI;API Key 用于 E2B SDK、CLI 和兼容 HTTP API。
-
只授权 Team 或只授权 Team 子资源:
teams/<team-id>不包含teams/<team-id>/*,管理整个 Team 时需要同时配置。 -
忽略列表权限范围:列表接口可能使用集合 ARN。增加集合权限前,应确认用户是否可以看到该范围内的全部资源。
权限策略参考
Action
权限策略中的 Action 用于限定 RAM 身份可以调用的Agent Sandbox极速版 OpenAPI,格式为:
fcsandbox:<action>
例如,CreateTeam 对应 fcsandbox:CreateTeam,CreateVolume 对应 fcsandbox:CreateVolume。配置策略前,请在Agent Sandbox极速版 OpenAPI 文档中找到业务需要调用的接口,并根据接口的授权信息配置 Action。
Resource ARN
ARN 格式
acs:fcsandbox:<region>:<account-id>:<resource-path>
|
占位符 |
说明 |
|
|
Agent Sandbox极速版资源所在地域,例如 |
|
|
资源所属阿里云账号 ID |
|
|
Team ID |
|
|
Template ID |
|
|
Volume ID |
常用 ARN
|
Resource 表达式 |
匹配范围 |
|
|
账号下全部地域的Agent Sandbox极速版资源 |
|
|
指定账号和地域下的全部Agent Sandbox极速版资源 |
|
|
指定账号在全部地域的Agent Sandbox极速版资源 |
|
|
账号下的 Team,不包含其子资源 |
|
|
指定 Team,不包含其子资源 |
|
|
指定 Team 的全部子资源,不包含 Team 本身 |
|
|
所有 Team 下的 Template |
|
|
所有 Team 下的 Sandbox |
|
|
指定 Team 下的 Template |
|
|
指定 Team 下的 Sandbox |
|
|
指定 Template,不包含其子资源 |
|
|
指定 Template 创建的 Sandbox |
|
|
所有 Team 下的 API Key |
|
|
指定 Team 下的 API Key |
|
|
所有 Team 下的 Volume |
|
|
指定 Team 下的全部 Volume |
|
|
指定 Team 下的指定 Volume |
|
|
所有 Team 的配额 |
|
|
指定 Team 的配额 |
Sandbox 没有包含 Sandbox ID 的独立 Resource ARN。Template 使用 templates/<template-id>,基于该 Template 创建的 Sandbox 使用 templates/<template-id>/*。Resource 决定允许访问的 Template 或 Sandbox 范围,Action 决定允许执行 Template 或 Sandbox 的哪些操作。
API Key 和配额只支持 Team 粒度授权,不能分别限制到某一个 API Key 或某一条配额记录。列表接口根据请求范围可能使用账号级集合或 Team 级集合 ARN;仅具有 Team 级权限时,调用支持 Team ID 的列表接口需要显式传入 Team ID。