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

在阿里云中,给子账号(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) 记录子账号行为

相关推荐
期待のcode2 小时前
springboot热部署
java·spring boot·后端
expect7g2 小时前
Paimon源码解读 -- FULL_COMPACTION_DELTA_COMMITS
大数据·后端·flink
踏浪无痕2 小时前
周末拆解:QLExpress 如何做到不编译就能执行?
后端·算法·架构
222you2 小时前
Spring框架的介绍和IoC入门
java·后端·spring
用户6151265617332 小时前
Java生态新纪元:虚拟线程、模式匹配与未来的编程范式
后端
风雨同舟的代码笔记2 小时前
Java并发编程基石:深入解析AQS原理与应用实战
后端
曾富贵2 小时前
【后端进阶】并发竞态与锁选型
后端
a程序小傲3 小时前
京东Java面试被问:ZGC的染色指针如何实现?内存屏障如何处理?
java·后端·python·面试
vx_bisheyuange3 小时前
基于SpringBoot的老年一站式服务平台
java·spring boot·后端·毕业设计