避免使用主账号,为不同职责子账号成员授予不同权限

阿里云主账号是您在阿里云注册时创建的初始账号,拥有对名下所有资源的完全管理权限。为保障账户安全,建议日常操作中避免使用主账号,不要为主账号创建 AccessKey,妥善保管主账号密码,并启用MFA(多因素认证)。

安全风险

阿里云主账号具备对所有资源的最高权限,使用主账号可能会带来安全风险:

  • 随意破坏:一旦主账号的凭证(密码或AccessKey)泄露,攻击者将获得您云上环境的最高权限。可以删除您的所有服务器、窃取或勒索您的核心数据、植入后门程序、或利用您的资源进行挖矿等恶意活动,造成无法挽回的业务损失和数据泄露事故。

  • 违背核心安全原则:日常使用主账号直接违背了最小权限原则 (Principle of Least Privilege)。该原则要求任何用户或系统都只应被授予完成其任务所必需的最少权限。主账号的权限是无限的,远超任何日常运维、开发所需。

  • 审计困难:当所有操作都由主账号执行时,将很难追溯具体是哪位员工、哪个应用程序执行了某项敏感操作,给安全审计和事件响应带来巨大挑战。

  • 等保合规:实施用户与角色的权限分离、遵循最小权限原则,并避免使用权限集中的主账号,是主流安全合规标准的基本要求,如 ISO/IEC 27001 和《信息安全技术网络安全等级保护基本要求》等。

最佳实践

加强主账号的保护

  1. 启用多因子认证(MFA):为主账号绑定MFA,在密码认证基础上增加动态验证码(如手机Token、硬件密钥),防止密码泄露后的未授权访问。

  2. 严格管理主账号登录行为:

  3. 禁用主账号AccessKey:不使用主账号AccessKey,创建RAM用户并授予最小权限。

  4. 启用操作保护机制:设置账号操作保护,对高危操作(如释放ECS、修改账号信息)强制二次验证(MFA/短信/邮箱)。

  5. 定期审计与监控:通过操作审计监控主账号登录事件,定期检查异常行为。

  6. 使用RAM子账号替代日常操作:创建RAM用户作为账号管理员,并为不同角色创建独立子账号,按需授权。

合理规划RAM账号、配置访问控制策略

为实现精细化权限管理与最小权限原则,建议根据职责划分账号、角色与权限。以下以企业常见场景为例,根据职能创建账号并绑定角色:

  1. 账号管理员

    该账号专用于创建 RAM 子账号、角色,以及定义和分配访问控制权限。可授予 AliyunRAMFullAccess 权限。尽管该账号无法直接操作其他云产品资源,但其具备创建高权限账号的能力,因此属于高敏感账号。必须严格保护:

    • 不要为其创建 AccessKey;

    • 避免创建具有相同权限的RAM角色;

    • 启用MFA,并限制登录来源 IP。

  2. 资源管理员

    该账号用于创建和管理 ECS 实例、VPC、vswitch、网卡、云盘、安全组、快照、镜像等资源。可授予 AliyunECSFullAccess AliyunVPCFullAccessAliyunEIPFullAccess策略。若需为 ECS 实例绑定 RAM 角色,还需额外授权 sts:AssumeRole 操作权限。

    扩展建议:若您的云资源规模较大,建议通过资源组进行资源隔离,并为每个资源组创建独立的 ECS 资源管理员账号,实现横向权限分隔。
  3. 运维人员

    该账号主要用于分配给使用者用于登录、操作ECS实例,开关机等,不赋予资源改配、网卡、磁盘等资源操作权限。对于ECS用户可以自定义RAM权限:

    {
      "Version": "1",
      "Statement": [
        // 1. 查看资源状态权限(只读)
        {
          "Effect": "Allow",
          "Action": [
            // ECS资源查看
            "ecs:DescribeInstances",        // 查看实例状态
            "ecs:DescribeInstanceStatus",   // 查询实例状态信息<sup data-index='2'>14</sup>
            "ecs:DescribeNetworkInterfaces", // 查看网卡状态<sup data-index='3'>24</sup>
            "ecs:DescribeDisks",            // 查看云盘状态(推断自文档上下文)
            "ecs:DescribeSecurityGroups",   // 查看安全组状态<sup data-index='4'>13</sup>
            "ecs:DescribeSecurityGroupReferences", // 查询被授权安全组<sup data-index='5'>27</sup>
            // VPC/VSwitch查看
            "vpc:DescribeVpcs",             // 查询VPC状态<sup data-index='6'>22</sup>
            "vpc:DescribeVSwitches",        // 查询VSwitch状态<sup data-index='7'>15</sup>
            "vpc:DescribeVSwitchAttributes" // 查询VSwitch详细配置<sup data-index='8'>17</sup>
          ],
          "Resource": "*"  // 允许访问所有资源
        },
        // 2. Workbench权限(登录和读取)
        {
          "Effect": "Allow",
          "Action": [
            "ecs-workbench:LoginInstance",  // Workbench登录实例权限<sup data-index='9'>31</sup>
            "ecs:DescribeTerminalSessions"  // 查看Workbench会话记录<sup data-index='10'>3</sup>
          ],
          "Resource": "*"
        },
        // 3. 云助手权限(读取、登录、执行命令)
        {
          "Effect": "Allow",
          "Action": [
            // 云助手读取权限
            "ecs:DescribeCommands",         // 查看命令列表<sup data-index='11'>3</sup>
            "ecs:DescribeInvocations",       // 查看命令执行记录<sup data-index='12'>3</sup>
            "ecs:DescribeInvocationResults", // 查看命令执行结果<sup data-index='13'>3</sup>
            "ecs:DescribeCloudAssistantStatus", // 查询云助手状态<sup data-index='14'>3</sup>
            // 云助手执行命令权限
            "ecs:InvokeCommand",             // 执行命令<sup data-index='15'>3</sup>
            "ecs:RunCommand"                 // 立即执行命令<sup data-index='16'>3</sup>
          ],
          "Resource": "*",
          // 限制以普通用户身份执行命令(安全最佳实践)
          "Condition": {
            "StringNotEqualsIgnoreCase": {
              "ecs:CommandRunAs": ["system", "root"]  // 禁止使用rootsystem账户<sup data-index='17'>2</sup>
            }
          }
        }
      ]
    }

    说明:上述策略中 "Resource": "*" 表示可操作所有实例。为降低风险,

    建议

    • 通过资源组或标签(Tag)限制操作范围;

    • 使用更细粒度的资源 ARN 替代通配符,实现按需授权。

  4. 应用角色

    程序也可能需要访问云服务(如访问OSS、SLS等),需要为程序创建专门的账号/角色来使用,不可与人员混用账号,不同程序间也不要混用账号:

    • 程序使用的账号需要禁止登录控制台。

    • 如果您的程序部署在ECS(包括容器服务)中,请不要使用AccessKey,推荐使用实例绑定角色更加安全。

使用CloudSSO认证账号

如果您面临以下场景,我们推荐使用 CloudSSO(云 SSO) 来实现安全、集中的身份管理和访问控制。

  • 需要为多名员工创建具有相同权限的 RAM 账号。

  • 多人共用一个 RAM 账号。

  • 担心员工泄露云平台凭据(如 AccessKey 或登录密码)。

CloudSSO(Cloud Single Sign-On,单点登录)是阿里云基于资源目录(Resource Directory, RD)推出的多账号统一身份管理与访问控制服务。允许用户用一组凭据一次登录后,访问多个云应用和服务而无需重复输入账号密码。使用云SSO统一管理企业中使用阿里云的用户,一次性配置企业身份管理系统与阿里云的单点登录,并统一配置所有用户对RD账号的访问权限。

  • 无需持有云凭据:员工不再需要知道阿里云的登录密码或 AccessKey,降低凭据泄露风险。

  • 统一身份认证:用户使用企业内部账号(如公司邮箱、AD 账号)和密码登录,体验无缝集成。

  • 集中权限管理:通过访问配置(Permission Sets)统一为用户或用户组分配角色权限,支持细粒度控制。

  • 支持标准协议:基于 SAML 2.0 协议与企业 IdP 集成,保障认证安全。

更多信息,请参见开始使用云SSO

合规能力

检查:否存在云主账号的操作

ECS使用成熟度评估与洞察

  1. 前往ECS使用成熟度评估与洞察

  2. 选择安全性能力页签,单击检查项避免使用主账号进行日常功能操作(账号安全),可以查看使用阿里云主账号登录、操作云资源的情况,并可看到主账号的高频操作。

操作审计

前期准备:创建跟踪,并将事件投递到日志服务SLS中。具体操作,请参见创建单账号跟踪创建多账号跟踪

操作步骤

  1. 前往操作审计控制台,在左侧导航栏,选择事件 > 高级查询

  2. 查询范围-跟踪选择已创建的跟踪。

  3. 查询范围区域的模板库页签,选择系统模板 > 账号/AK相关事件,选择查询主账号登录控制台事件或者查询主账号AK的访问事件

  4. 设置查询事件的时间段,再单击运行

    • 操作审计默认查询7天的事件。

    • 您可以单击右侧的事件告警,为当前事件设置告警。具体操作,请参见创建自定义告警规则

    • 您可以对系统模板默认的SQL语句进行修改,然后单击保存,将其另存为自定义模板,进行二次应用。

  5. 查看事件的查询结果。

    • 原始日志:在原始日志页签,单击目标事件对应操作列的查看事件详情,查看事件的基本信息和JSON格式。

    • 直方图:在查询直方图页签,查看事件发生的直方图。