刚开通阿里云时,控制台里第一个能用的身份通常就是root账号。它几乎没有限制,改配置、买实例、看账单、管密钥都在它手里。权限越大,出问题时代价也越大,所以这个账号怎么管,最好在一开始就想清楚。这篇文章说三件事:root账号是什么,平时怎么加固,什么时候该停止直接使用它。

先分清root账号和RAM用户
阿里云的账号体系里,主账号就是大家常说的root账号,也就是注册时创建的那个身份。它对账号内所有资源有完全控制权,包括费用账单、ECS实例、RDS数据库、OSS对象存储,还包括身份管理本身。主账号可以修改别人的权限,也可以把自己删掉。
RAM(Resource Access Management)用户是在主账号下创建的子身份,权限按需授予。主账号像公司老板,手里拿着所有钥匙;RAM用户更像员工,只拿到岗位需要的那几把。日常干活的人用员工身份,老板只在必要时出面,出了问题也更容易查。
问题恰恰出在这里。不少个人开发者和小团队从开通到上线,全程用主账号登录控制台,程序里也直接填主账号的AccessKey。一旦密钥外泄,攻击者拿到的是整个账号的控制权,能动的范围从单个服务延伸到计费、身份管理和所有资源。
一个常见的事故是怎么发生的
设想一个做电商小程序的开发者。为了省事,他把主账号的AccessKey直接写进代码仓库的配置文件,又把代码推到了公开的代码托管平台。几个小时之内,自动化脚本就扫到了这组密钥,随即在多个地区创建了大量按量付费的GPU实例,用来挖矿。
等他发现时,账单已经累计到数万元。提交工单后处理需要一定时间,这段时间里资源仍在运行,费用还在涨。这类事故并不少见,原因基本相同:长期有效、权限很大的主账号凭证暴露在外面。
从这个例子能直接得出三条做法。主账号的AccessKey能不用就不用。代码里不要硬编码任何密钥,改放到环境变量或专门的密钥管理服务里。账单告警要提前设好,等账单出来再看就晚了。
如果必须保留root账号,先做这几件事
有些情况下主账号绕不开,那就至少把基本防护做齐。
开启多因素认证(MFA)
在控制台的安全设置里为主账号绑定MFA设备。即使密码被撞库或被钓鱼拿到,攻击者也很难直接登录。成本不高,却能挡住大部分常见的登录攻击。
清理不需要的AccessKey
主账号下只留必要的一对密钥,没用的直接删掉。日常程序调用改用RAM用户的密钥。删除前,可以先看看访问记录里它最近有没有被调用,避免误删正在使用的服务。
设置账单和余额告警
在费用中心配置预算和消费提醒,设定日消费或月消费的阈值,超过时通过短信或邮件通知。异常扩容往往是某一天突然涨上去的,越早收到提醒,损失通常越小。
保持操作审计开启
操作审计(ActionTrail)会记录账号内的API调用行为,出现异常时,它是追溯来源的主要依据。建议保持开启,并把日志存到独立的存储里,避免主账号出事时日志也一起被改动。
日常操作交给RAM用户
比较稳妥的做法是:主账号只用于初始配置,以及少数确实需要它的操作。开发、运维、查看数据这些日常工作,全部交给RAM用户。
按职责创建RAM用户
可以分别建立开发用户、运维用户、财务用户,再绑定对应的系统策略或自定义策略。比如开发用户能操作ECS和RDS,但不应该能修改计费信息。权限够用就好,多给的权限往往要等到出事故时才会暴露出来。
用用户组统一授权
成员变多以后,逐个配置权限很容易漏,也不好维护。把人加入对应的用户组,由用户组统一挂载权限,既省事,离职时也能一次性回收。
每个应用、每个环境用独立的密钥
给每个应用、每套环境分配独立的RAM用户或密钥。某组密钥泄露时,影响范围只限于它自己,也能单独轮换,不必让整个项目停下来。
哪些操作绕不开主账号
阿里云对一部分高权限操作有明确要求,例如实名认证信息的修改、部分财务相关设置、解绑主账号的安全手机等,一般只能由主账号完成。既然绕不开,就更要把主账号的防护放在最前面。
每次登录主账号前,先确认这次是不是非它不可。操作完成后及时退出,不要让浏览器长期保持登录状态,在公用电脑上尤其要注意。
定期轮换和检查
建议每三到六个月轮换一次AccessKey。顺序是先创建新密钥,把程序切换过去,确认运行正常后再禁用旧密钥,这样替换时不会造成服务中断。
另外,定期检查RAM用户是否有长期不用的权限,可以借助访问分析功能,或者定期导出权限清单逐项核对。发现已离职人员或不再使用的密钥,及时禁用或删除。这一步看起来琐碎,但权限膨胀的问题,往往也是通过这类例行检查发现的。
小结
root账号是整个云环境的最高权限入口。少用它,不留长期密钥,开启MFA,用RAM做权限拆分,设置告警并保留审计日志。把这几件事做到位,大部分常见风险都能控制在可接受的范围内。