阿里云服务器如何给子账号设置指定具体的那一台服务器?

在阿里云中,给子账号(RAM 用户)仅授权访问/操作指定的一台 ECS 服务器 ,需要使用 基于资源的授权(Resource-Level Authorization) ,通过 自定义权限策略(Custom Policy) 实现。

⚠️ 注意:不是所有操作都支持"精确到单台 ECS",但 查看、启动、停止、重启、连接(VNC/Workbench)等常见操作是支持的。删除、修改配置等部分操作可能不支持资源粒度限制。


✅ 目标

让子账号 只能管理某一台特定的 ECS 实例 (例如实例 ID 为 i-bp1d6ts0w5v8xxxxxabc),不能看到或操作其他服务器。


🔧 操作步骤

第一步:获取目标 ECS 实例的 ARN(资源标识符)

阿里云资源的唯一标识格式为:

css 复制代码
acs:ecs:{region}:{account-id}:instance/{instance-id}
  • {region}:ECS 所在地域,如 cn-hangzhou
  • {account-id}:你的阿里云账号 ID(12位数字,可在 账号安全设置 查看)
  • {instance-id}:ECS 实例 ID,如 i-bp1d6ts0w5v8xxxxxabc

✅ 示例:

js 复制代码
acs:ecs:cn-hangzhou:123456789012:instance/i-bp1d6ts0w5v8xxxxxabc

第二步:创建自定义权限策略(Custom Policy)

  1. 登录 阿里云 RAM 控制台

    👉 ram.console.aliyun.com/policies

  2. 点击 【创建权限策略】

  3. 填写基本信息:

    • 策略名称 :如 ECS-SingleInstance-Access
    • 配置模式 :选择 【脚本配置】
  4. 在策略内容中粘贴以下 JSON(根据你的需求调整):

js 复制代码
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:DescribeInstances",
        "ecs:DescribeInstanceAttribute",
        "ecs:DescribeDisks",
        "ecs:DescribeNetworkInterfaces"
      ],
      "Resource": "acs:ecs:*:123456789012:instance/i-bp1d6ts0w5v8xxxxxabc"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecs:StartInstance",
        "ecs:StopInstance",
        "ecs:RebootInstance",
        "ecs:ResetPassword",
        "ecs:ModifyInstanceAttribute"
      ],
      "Resource": "acs:ecs:*:123456789012:instance/i-bp1d6ts0w5v8xxxxxabc"
    },
    {
      "Effect": "Allow",
      "Action": "ecs:Describe*",
      "Resource": "*"
    }
  ]
}

📌 说明:

  • 第一段:允许查看该实例及其关联资源(磁盘、网卡等)
  • 第二段:允许操作该实例(启停、重启、改名等)
  • 第三段:Describe* 必须作用于 *(全局),因为阿里云控制台需要先列出区域、可用区等基础信息才能展示实例(这是平台限制)

🔒 如果你完全不想让子账号看到其他实例 ,第三段不能加,但会导致控制台无法正常显示(API 可用,控制台可能空白)。建议保留 Describe* 全局只读。

  1. 点击 【确定】 创建策略

第三步:将策略授权给子账号

  1. 进入 RAM 用户列表
    👉 ram.console.aliyun.com/users
  2. 找到你的子账号 → 点击 【添加权限】
  3. 授权范围:选择 整个云账号
  4. 自定义策略 中,勾选你刚创建的 ECS-SingleInstance-Access
  5. 点击 【确定】

第四步(可选):限制登录地域(增强安全)

如果这台 ECS 只在 cn-hangzhou,你可以在策略中把 * 替换为具体地域:

json 复制代码
"Resource": "acs:ecs:cn-hangzhou:123456789012:instance/i-bp1d6ts0w5v8xxxxxabc"

并在 Action 中避免使用跨地域操作。


✅ 验证效果

让子账号登录控制台:

  • 能看到 所有地域列表(因 Describe* 全局)
  • 进入对应地域后,只能看到这一台 ECS
  • 点击该实例,可进行 启停、重启、重置密码等操作
  • 尝试操作其他实例 → 提示 无权限

💡 如果用于 API/SDK 编程,则完全隔离,不会返回其他实例信息。


❗ 注意事项

问题 说明
不能完全隐藏其他实例? 控制台因前端依赖,需 Describe* 全局权限;但 API 调用是精确过滤的
某些操作不支持资源粒度 ecs:DeleteInstance 在部分地域不支持按实例授权(会失败)
快照、安全组等关联资源 如需管理,需额外授权对应 Resource ARN
Workbench 远程连接 需要额外授权 ecs:InvokeCommandecs:DescribeInvocationResults

🔐 更安全的做法(推荐生产环境)

  • 为主账号和子账号 开启 MFA 多因素认证
  • 对高危操作(如删除)不授权
  • 使用 操作审计(ActionTrail) 记录子账号行为

相关推荐
苏三说技术5 小时前
Claude Code从失控到起飞,只用了这些技巧
后端
长栎6 小时前
写 for 循环写了十年,你却从没用过迭代器模式最狠的那一面
后端
LiaCode6 小时前
Redis 在生产项目的使用
前端·后端
用户559822481226 小时前
Docker Compose Down 导致容器数据误删——ext4 日志恢复全记录
后端
LiaCode6 小时前
一天学完 redis 的爽翻版核心知识总结
前端·后端
大刚测试开发实战6 小时前
如何内网穿透访问本地私有化部署的TestHub
前端·后端·github
xiaodaoluanzha6 小时前
迄今為止,最簡單的編程語言 Nolang
前端·后端
Csvn6 小时前
Docker 容器管理入门 — 从镜像到容器编排
后端
用户762352425916 小时前
ShardingJDBC
后端
行者全栈架构师6 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端