阿里云 CLI 工具支持数字员工直接调用阿里云产品的 OpenAPI,完成查询、配置变更和运维操作。为保障安全,查询类操作(Get、List、Describe、Query)默认自动执行,其他操作需确认后执行,最终权限由数字员工的 RAM 角色兜底控制。本文介绍如何为 STAROps 数字员工启用和管理阿里云 CLI 工具,以及如何通过策略配置控制数字员工调用阿里云产品 API 的权限边界。
适用范围
阿里云 CLI 工具仅适用于自定义数字员工,系统内置员工暂不支持该能力。本文面向为自定义数字员工配置阿里云 CLI 工具的账号管理员、安全管理员和运维使用者。
主账号默认具备所有权限。
RAM 用户需要由主账号或 RAM 管理员完成授权。
功能概述
阿里云 CLI 工具是自定义数字员工的扩展能力。启用后,数字员工可识别并执行通过会话输入的 aliyun 命令,调用对应云产品的 OpenAPI。
默认启用:自定义数字员工创建时,阿里云 CLI 工具默认开启,也可通过数字员工设置手动关闭。
分层控制:一次 API 调用会依次经过拒绝策略、自动放行策略、人工确认(HIL)和 RAM 角色权限四层校验。
权限分离:工具策略只控制数字员工能否发起调用;调用最终能否成功,由数字员工关联的 RAM 角色权限决定。
自定义角色:当默认服务关联角色
AliyunServiceRoleForSTAROps的权限不满足场景时,可选择自定义 RAM 角色。
权限控制模型
阿里云 CLI 工具对每次 API 调用执行四层决策,决策说明:
拒绝策略(DenyPolicy):优先级最高。命中规则后直接拒绝,不进入后续决策。为空时不拒绝任何操作。
自动放行(AutoPassPolicy):命中规则后直接发起 API 调用,无需确认。为空时使用 STAROps 内置默认规则。
人工确认(HIL):未命中拒绝策略和自动放行策略的调用,均需手动确认后才可发起。
RAM Role 权限:所有实际调用最终都受数字员工关联的 RAM 角色权限约束。工具策略不替代 RAM 授权。
拒绝策略在 STAROps 侧和开放平台侧各执行一次校验,形成双层兜底。即使 STAROps 侧未命中,开放平台侧仍可能因拒绝策略拒绝该调用。
默认策略说明
默认自动放行策略
未配置自动放行策略时,STAROps 自动使用以下内置规则放行查询类操作:
*:Get**:List**:Describe**:Query*这些操作在数字员工判断需要调用时直接执行,无需逐次确认。
默认服务关联角色
自定义数字员工默认关联服务关联角色 AliyunServiceRoleForSTAROps,其系统策略 AliyunServiceRolePolicyForSTAROps 覆盖大部分云产品的只读权限,与默认自动放行策略匹配。
服务关联角色不支持附加自定义策略。如果默认角色仅包含只读权限,不满足场景(例如需要执行写操作),请在创建或更新自定义数字员工时选择自定义 RAM 角色,并为该角色授予所需的 RAM Action 权限。
查找 API 的 RAM Action
阿里云 CLI 工具的配置基于 RAM 权限体系,而非直接对应 API 工具名称。为某个工具授权时,不能简单地将工具名作为 RAM Action 使用。请通过以下步骤查找正确的 RAM Action:
识别目标工具:确定需要授权的 CLI 工具名称(如
aliyun elasticsearch ListAllNode)。查阅 OpenAPI 文档:访问阿里云 OpenAPI 门户,搜索对应的 API 名称(如
ListAllNode)。获取真实 RAM Action:查看 API 文档页面的“授权信息”章节,表格“操作”列的值就是 RAM Action。
完成 RAM 授权:使用查到的真实 RAM Action,将该权限添加到 RAM 角色策略。
示例
假设需要授权 aliyun elasticsearch ListAllNode 工具:
错误做法:直接授予
elasticsearch:ListAllNode权限 → 授权失败,因为该 RAM Action 不存在。正确做法:查阅 Elasticsearch 的 OpenAPI 文档,发现
ListAllNode接口实际需要的 RAM Action 是elasticsearch:DescribeInstance,为 RAM 角色策略授予该权限后,工具即可正常使用。
启用与配置策略
配置拒绝策略
通过拒绝策略,可以显式禁止某些 API 调用,例如禁止所有产品的删除操作或禁止执行命令类操作。命中拒绝策略后,直接拒绝执行,不弹人工确认;为空时不拒绝任何操作。
场景示例
禁止所有
*:Delete*操作。禁止 ECS 的
ecs:RunCommand操作。禁止所有涉及费用、角色变更的高危操作。
可视化编辑
在拒绝策略区域,选择编辑模式:
通配符模式:可直接单击预设的读写操作快捷标签(如
Delete*、Remove*、Modify*、Update*、Create*、Put*、Stop*、Release*、Get*、List*、Describe*、Query*、Check*等),也可通过输入框填写自定义通配符,如*:Delete*、ecs:RunCommand。规则列表:选择目标产品,通过弹出的选择 RAM Action 对话框,按操作类型(写操作、读操作、列表操作、其他操作)筛选并勾选要禁止的具体 RAM Action,单击确定。
单击添加拒绝规则,输入或选择要禁止的 Action。
单击保存使配置生效。
脚本编辑示例
{
"enable": true,
"denyPolicy": [
"*:Delete*",
"ecs:RunCommand"
],
"autoPassPolicy": []
}字段 | 说明 |
| 是否启用阿里云 CLI, |
| 拒绝策略规则列表,命中后直接拒绝调用。为空时不拒绝任何操作 |
| 自动放行策略规则列表,命中后跳过人工确认直接执行。为空时使用内置默认规则 |
规则取 <产品标识>:<操作名> 格式,支持通配符 *(如 *:Delete*、ecs:RunCommand)。
拒绝策略优先级最高。一旦命中,无论 RAM 角色是否拥有对应权限,调用都会被拒绝。
配置自动放行策略
通过自动放行策略,可以自定义哪些操作不弹确认框直接执行。如果不配置自动放行策略,STAROps 会默认使用内置规则放行查询类操作(参见本文“默认自动放行策略”章节)。
使用建议
仅对低风险、高频查询操作配置自动放行。
对可能产生费用或变更资源状态的操作,建议保持每次询问模式。
自定义自动放行策略会完全替代内置默认规则,未命中的操作将统一进入 HIL。
可视化编辑
在自动放行区域,选择编辑模式:
通配符模式:可直接单击预设的读写操作快捷标签,也可通过输入框填写自定义通配符,如
ecs:Describe*、vpc:Describe*。规则列表:选择目标产品,通过弹出的选择 RAM Action 对话框,按操作类型(写操作、读操作、列表操作、其他操作)筛选并勾选要自动执行的具体 RAM Action,单击确定。
单击添加自动放行规则,输入或选择要自动执行的 Action。
单击保存使配置生效。
脚本编辑示例
{
"enable": true,
"denyPolicy": [],
"autoPassPolicy": [
"ecs:DescribeInstances",
"ecs:DescribeDisks",
"vpc:DescribeVpcs",
"slb:DescribeLoadBalancers"
]
}自动放行策略只控制是否跳过人工确认。实际调用仍需要数字员工 RAM 角色具备对应 Action 权限,否则会以 Forbidden.RAM 错误返回。
验证配置
方式一:通过对话框直接测试
通过数字员工对话框,直接输入 aliyun 命令进行测试:
aliyun ecs DescribeInstances --RegionId cn-hangzhou只读查询操作应被自动放行并返回结果。写操作或未命中自动放行策略的操作应弹出 HIL 确认。
方式二:通过拒绝策略测试
尝试触发一条已被拒绝策略拦截的操作,验证是否直接返回拒绝,不进入 HIL。
方式三:排查 Forbidden.RAM 权限错误
如果工具策略已放行但调用返回 Forbidden.RAM,说明数字员工 RAM 角色缺少对应 RAM Action 权限。请按以下步骤排查:
确认数字员工关联的 RAM 角色已授予目标 API 对应的 RAM Action。查找方法请参见本文“查找 API 的 RAM Action”章节。
如果使用的是
AliyunServiceRoleForSTAROps,确认其系统策略已覆盖该 Action。如果默认角色权限不足,切换为自定义 RAM 角色并授予所需权限。
常见问题
阿里云 CLI 工具已启用,为什么命令没有执行?
请按以下顺序排查:
检查命令是否命中拒绝策略。命中拒绝策略会直接拒绝。
检查命令是否命中自动放行策略。未命中时会进入 HIL,等待确认。
检查数字员工 RAM 角色是否具备对应 API 的 RAM Action 权限。工具策略放行不代表 RAM 角色有权限。
为什么只读操作没有进入 HIL?
默认情况下,*:Get*、*:List*、*:Describe*、*:Query* 操作命中内置自动放行规则,会直接执行。如果自定义了自动放行策略,则按自定义规则执行。
服务关联角色权限不足怎么办?
可在创建或更新自定义数字员工时,选择自定义 RAM 角色,并为该角色授予场景所需的 RAM Action 权限。
配置自定义自动放行策略后,默认的内置规则还有效吗?
无效。自定义自动放行策略会完全替代内置默认规则。如果希望保留默认行为,请确保自定义策略显式包含 *:Get*、*:List*、*:Describe*、*:Query* 规则。