2. AWS账户与根用户治理
在AWS中,账户是资源隔离、计费归集与权限边界的最小治理单元。一个组织往往拥有多个账户,例如生产、预发、开发、安全审计、日志归档等。每个账户创建时都会自动生成一个根用户(Root User),它拥有该账户内不可被IAM策略限制的完全权限。因此,账户治理的第一原则是:根用户只用于极少数账户级任务,日常运维一律使用IAM身份或IAM Identity Center联合身份。
本节围绕账户创建后的关键治理动作展开:账户别名配置、根用户保护、MFA强制、根访问密钥清理,以及如何验证治理是否生效。这些动作看似简单,但顺序和细节直接影响账户安全基线。
账户创建与初始身份
创建AWS账户时,需要提供邮箱、账户名称和付款方式。账户创建完成后,AWS会为该邮箱分配一个12位账户ID,并允许使用邮箱作为根用户登录。此时账户处于“裸奔”状态:没有MFA、没有别名、根访问密钥可能尚未创建,但一旦创建就长期有效。
账户创建后应立即执行三件事:
- 为账户设置账户别名(Account Alias),替代难记的12位账户ID用于登录URL;
- 为根用户启用MFA,优先使用硬件安全密钥或虚拟MFA;
- 检查并删除根访问密钥,除非有明确的、短期的、必须使用根访问密钥的场景。
账户别名是账户级别的唯一标识,格式为小写字母、数字和连字符,长度3~63个字符。配置后,IAM用户登录地址从 https://123456789012.signin.aws.amazon.com/console 变为 https://my-company-prod.signin.aws.amazon.com/console。别名不改变账户ID,也不影响API调用,但能显著降低钓鱼风险,因为用户不再需要记忆或输入账户ID。
根用户保护与MFA强制
根用户的保护核心是“限制使用、强制验证、持续监控”。AWS允许为根用户绑定MFA设备,绑定后根用户登录必须提供MFA。对于企业环境,推荐使用硬件MFA(如YubiKey)或通行密钥(Passkey),避免虚拟MFA被复制或社会工程攻击。
MFA强制不仅针对根用户,也应覆盖所有具有高权限的IAM用户。但在账户治理层面,根用户MFA是底线。AWS提供了根用户MFA强制策略的检测能力,可以通过AWS Config规则或Security Hub检查根用户是否启用MFA。若未启用,应视为高危发现。
根用户可执行的账户级任务包括:更改账户设置、关闭账户、更改支持计划、恢复IAM管理员权限、注册/注销MFA设备等。这些任务不应委托给日常IAM用户。因此,根用户凭证应被安全保管,例如放入保险柜或密码管理器,并限制访问人员。
根访问密钥清理
根访问密钥是根用户的编程访问凭证,一旦泄露,攻击者可直接调用所有AWS API,且无法通过IAM策略限制。AWS默认不创建根访问密钥,但历史账户可能已存在。治理动作是:
- 登录根用户,进入“安全凭证”页面;
- 检查“访问密钥”区域是否存在任何密钥;
- 若存在且无明确业务用途,直接删除;
- 若必须保留,应记录用途、负责人、轮换周期,并启用CloudTrail监控其使用。
删除根访问密钥后,任何依赖该密钥的脚本或工具会立即失败。因此,删除前应确认没有自动化流程使用根凭证。推荐做法是:所有自动化使用IAM角色或IAM用户的临时凭证,根访问密钥永久删除。
账户别名配置与验证
账户别名可在IAM控制台的“账户设置”中配置,也可通过API CreateAccountAlias 完成。配置后,登录URL立即生效。验证方式是:退出当前登录,使用别名URL重新登录,确认能正常进入控制台。
以下是一个使用AWS CLI配置账户别名的示例(需使用具有iam:CreateAccountAlias权限的IAM身份,而非根用户):
aws iam create-account-alias \
--account-alias my-company-prod
# 查看当前别名
aws iam list-account-aliases
# 删除别名(谨慎)
aws iam delete-account-alias \
--account-alias my-company-prod
注意:账户别名在全局唯一,若被占用则创建失败。建议使用“组织名-环境-区域”或“组织名-用途”的命名规范,例如 acme-prod、acme-security-audit。
治理动作的依赖关系与验证闭环
上述动作并非完全独立:账户别名影响登录入口,MFA影响登录验证,根访问密钥影响编程访问,而CloudTrail和Config负责记录与检测。下图展示了账户创建后根用户治理的关键对象、动作与验证关系,帮助理解各治理动作之间的依赖与检查点。
实操检查清单与判断依据
为了便于落地,以下给出一份可直接使用的根用户治理检查清单。每项都包含检查对象、操作和通过标准,适合在账户创建后或定期审计时使用。
| 检查项 | 操作 | 通过标准 |
|---|---|---|
| 账户别名 | IAM控制台 → 账户设置 → 创建别名 | 别名URL可正常登录,且全局唯一 |
| 根用户MFA | 根用户 → 安全凭证 → 分配MFA设备 | 根用户登录时必须输入MFA,且MFA设备已激活 |
| 根访问密钥 | 根用户 → 安全凭证 → 访问密钥 | 无任何激活的根访问密钥 |
| 根用户使用监控 | CloudTrail → 事件历史 → 筛选userIdentity.type = Root | 无异常根用户API调用;若有,需有工单记录 |
| Config规则 | 启用 root-account-mfa-enabled 和 iam-root-access-key-check |
规则状态为COMPLIANT |
需要特别说明的是,根用户MFA启用后,如果MFA设备丢失,恢复流程非常复杂,通常需要联系AWS支持并提供账户所有权证明。因此,企业应至少配置两个MFA设备,或将硬件密钥存放在多人可访问的保险柜中,并记录恢复流程。
常见误区与排障
在实际操作中,常见问题包括:
- 用根用户创建IAM用户后继续使用根用户:应创建IAM管理员用户或使用IAM Identity Center,根用户仅用于初始设置。
- 账户别名与账户ID混淆:别名只影响登录URL,不影响API调用和资源ARN中的账户ID。
- 删除根访问密钥导致脚本失败:删除前应使用CloudTrail确认最近30天是否有根访问密钥调用,并替换为IAM角色。
- MFA设备未备份:建议至少两个MFA设备,或使用支持多人的硬件密钥方案。