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默认不创建根访问密钥,但历史账户可能已存在。治理动作是:

  1. 登录根用户,进入“安全凭证”页面;
  2. 检查“访问密钥”区域是否存在任何密钥;
  3. 若存在且无明确业务用途,直接删除;
  4. 若必须保留,应记录用途、负责人、轮换周期,并启用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负责记录与检测。下图展示了账户创建后根用户治理的关键对象、动作与验证关系,帮助理解各治理动作之间的依赖与检查点。

AWS账户创建后的根用户治理关系图 对象:账户 / 根用户 / 凭证 / 登录入口 动作:保护、清理、配置 验证:登录、审计、检测 AWS账户创建 12位账户ID 根用户自动生成 根用户(Root) 完全权限 · 不可限制 仅用于账户级任务 账户别名 替代12位账户ID 登录URL更安全 生成 配置 MFA强制 硬件密钥 / Passkey 根用户登录必须验证 根访问密钥清理 检查是否存在 无用途则删除 验证与监控 CloudTrail / Config Security Hub检测 治理闭环:配置 → 登录验证 → 审计检测 → 修正 别名URL可登录 · MFA生效 · 根密钥不存在 · CloudTrail无根用户API调用 关键原则:根用户不用于日常运维;根访问密钥默认删除;MFA必须启用;账户别名必须配置并验证。

实操检查清单与判断依据

为了便于落地,以下给出一份可直接使用的根用户治理检查清单。每项都包含检查对象、操作和通过标准,适合在账户创建后或定期审计时使用。

检查项 操作 通过标准
账户别名 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设备,或使用支持多人的硬件密钥方案。
警告:根用户权限无法被IAM策略限制。任何拥有根用户凭证的人都可以关闭账户、删除所有资源、更改付款方式。因此,根用户凭证必须被视为最高机密,并严格限制访问人员。
提示:对于多账户组织,建议使用AWS Organizations的集中根访问管理功能,将成员账户的根用户凭证集中管理,避免每个账户单独保管。同时,使用SCP限制成员账户的根用户操作,进一步降低风险。