AWS 账户根用户为何如此危险 - 权限分离的设计思想与封印实践
解析 AWS 根用户拥有 IAM 无法限制的特权的原因,列举仅根用户可执行的操作,介绍 MFA 设置方法以及通过 Organizations 根访问管理实现的封印策略。
根用户的特权 - IAM 无法限制
AWS 账户的根用户对该账户内的所有资源拥有完全访问权限,且无法通过 IAM 策略进行限制。IAM 的 Deny 策略和 Service Control Policy (SCP) 都无法限制根用户的权限。SCP 虽然适用于成员账户的根用户,但不适用于管理账户的根用户。根用户之所以危险,正是因为这种「不可限制性」。IAM 用户和角色可以遵循最小权限原则,仅授予必要的权限。然而,根用户始终拥有所有权限,无法缩减。一旦根用户的凭证泄露,攻击者可以访问账户内的所有资源、删除所有数据、更改账户设置,甚至关闭账户本身。
仅根用户可执行的操作
根用户无法被完全封印的原因在于,存在一些只有根用户才能执行的操作。以下列举代表性的操作。账户设置变更(账户名称、电子邮件地址、密码的更改)只能由根用户执行。AWS Support 计划的变更也需要根用户。当 S3 存储桶策略明确拒绝所有人的访问时,只有根用户才能修改该存储桶策略。当 IAM 用户设置了拒绝自身访问的策略而被锁定时,也需要根用户来恢复。GovCloud 账户的创建、Route 53 域名的跨 AWS 账户转移、部分 AWS Marketplace 订阅的管理也需要根用户。由于这些操作频率较低,根用户应作为「紧急钥匙」严格管理,日常业务中不应使用。
根用户的 MFA - 硬件密钥最为安全
请务必为根用户设置 MFA(多因素认证)。没有 MFA 的根用户仅凭电子邮件地址和密码即可登录,容易受到钓鱼攻击和密码列表攻击。MFA 设备有 3 种类型。虚拟 MFA 设备(Google Authenticator、Authy 等)最为便捷,但存在智能手机丢失或故障导致无法访问的风险。硬件 TOTP 设备(Gemalto 令牌等)使用专用硬件生成 OTP,不依赖智能手机,比虚拟 MFA 更安全。FIDO2 安全密钥(YubiKey 等)是最安全的选择,具有防钓鱼能力,私钥无法从设备中提取,对远程攻击的防护最为坚固。AWS 从 2024 年开始强制要求根用户设置 MFA。未设置 MFA 的根用户登录控制台时,将被要求设置 MFA。根用户的 MFA 设备应保管在保险柜或防火保险柜中,并限制可访问人员。
通过 Organizations 集中管理根访问
使用 AWS Organizations 时,可以利用 2024 年推出的「根访问集中管理」功能删除成员账户根用户的凭证。启用此功能后,成员账户根用户的密码和 MFA 将被删除,根用户登录将变为不可能。当需要执行仅根用户可执行的操作(如修复 S3 存储桶策略)时,可从管理账户发放临时根会话来执行。该临时会话只能执行指定的操作,会话过期后将自动失效。这种设计使得根用户凭证不存在,泄露风险降为零。必要的操作可从管理账户临时执行,因此不会影响运营。对于未使用 Organizations 的单一账户,请删除根用户的访问密钥,设置强密码和 MFA,日常业务中使用 IAM 用户或 IAM Identity Center 用户。
根用户的监控 - 使用即刻检测
根用户被使用本身就是异常事态。如果已建立日常业务中不使用根用户的运营规范,根用户的登录就意味着可能存在未授权访问。CloudTrail 会记录根用户的所有 API 调用。请在 CloudWatch Logs 中设置检测根用户 API 调用的指标筛选器,并构建通过 CloudWatch 告警即时通知的机制。EventBridge(原 CloudWatch Events)也可以检测根用户的控制台登录事件。通过事件模式筛选 userIdentity.type 为 Root 的事件,向 SNS 主题发送通知。GuardDuty 会自动检测根用户的异常使用模式(从通常不使用的区域登录、调用通常不使用的 API),并作为安全发现结果进行报告。如需系统性地学习根用户安全知识,专业书籍 (Amazon)可供参考。