文章总结: 本文详述了AWS云安全实战项目的第一部分:IAM加固。通过创建IAM组、启用MFA、强化密码策略、利用SCP强制MFA及配置CloudTrail审计,指导读者构建企业级AWS安全环境。内容结合真实JD需求,旨在帮助初学者掌握身份与访问管理核心技能,建立安全作品集。 综合评分: 87 文章分类: 云安全,安全建设,安全培训
面向JD学习AWS云安全1:IAM加固
Dubito
云原生安全指北
2026年1月7日 08:36 江苏
注:本文翻译自 LaTerral Williams[1] 的文章《Beginner’s Guide to AWS IAM Hardening》[2],可点击文末“阅读原文”按钮查看英文原文。
全文如下:
⭐ 我为什么构建这个项目
(项目 1/6:IAM 强化)
我并没有孤立地学习云安全概念,而是以真实的职位描述为路线图,并动手构建能直接映射到雇主对日常云安全岗位期望的实战项目。
在查看云安全、云运维和安全工程相关的职位发布时,一些基础技能反复出现。这个包含6个部分的项目系列旨在通过实践性的、可用于作品集的实验,循序渐进地构建这些技能。
本系列聚焦于现实世界中的职责,例如:
- • 身份强化与 MFA 强制执行
- • IAM 治理与访问权限审查
- • 云资源的持续监控
- • 日志分析、审计准备与证据收集
- • 使用 AWS 组织和服务控制策略(SCPs)实现大规模防护
每个项目都强调动手实践,而不仅仅是理论,并反映了安全控制在真实 AWS 环境中的应用方式。
📌 项目系列概览
注:其他项目见同期发布的其他文章
👉 项目 1:AWS IAM 强化(本项目)
通过以下方式建立安全的身份基础:
- • 保护 root 账户
- • 强制执行 MFA
- • 增强密码策略
- • 应用最小权限原则
- • 使用 CloudTrail 和凭证报告审计身份
👉 项目 2:云安全态势管理(CSPM)
在身份基础之上,进一步引入:
- • AWS Security Hub 与 AWS Config
- • 错误配置检测
- • 根据安全标准进行态势评估
- • 企业级治理模式
👉 项目 3: 使用 GuardDuty + CloudTrail 实现类似 CASB 的监控,专注于异常、委托管理员和安全威胁模拟
👉 项目 4: 使用 AWS Config 进行漂移检测,包括托管规则、EventBridge 路由、标签和可选的修复
👉 项目 5: 使用 Athena + QuickSight 进行日志分析与仪表板构建,将原始 CloudTrail 日志转化为可操作的安全洞察
👉 项目 6:Terraform 安全模块,使用基础设施即代码(Infrastructure as Code,IaC)构建安全的 AWS 基线
🔐 为何这种递进关系至关重要
现代的云安全方案在设计上是分层的:
身份优先 → 其次态势 → 然后威胁检测。
没有一个坚实的 IAM 基础,态势管理、威胁检测和事件响应的控制措施效果将大打折扣。因此,本系列的第一个项目特意聚焦于 IAM 强化,为后续所有内容打下基础。
一个涵盖 IAM 加固基础知识的动手实践项目
一、引言
AWS Identity and Access Management (IAM) 对于任何云工程师或云安全分析师来说,都是最重要的技能之一。
在这个适合初学者的项目中,你将使用真实的云安全技术来加固一个 AWS 账户:
- • 多因素认证 (MFA)
- • IAM 组与角色
- • 强密码策略
- • 服务控制策略 (SCPs)
- • CloudTrail 审计
- • IAM 凭证报告
- • 计费与财务访问控制
本指南融合了通俗易懂的解释和技术深度,非常适合初学者构建作品集。
二、你将构建什么
完成本实验后,你将拥有:
- • 一个已加固的 AWS root 账户
- • 受 MFA 保护的管理员用户
- • 像真实公司那样建模的计费与财务访问权限
- • 一个要求 MFA 的 SCP,它会阻止没有 MFA 的 API 调用
- • 记录所有管理事件的 CloudTrail
- • 显示加固前后状态的 IAM 凭证报告
- • 用于作品集的加固前后截图
三、实验环境设置
你需要准备:
- • AWS 免费套餐账户
- • 一部装有身份验证器(authenticator)应用的手机
- • 浏览器
- • 用于审查凭证报告的可选电子表格
虽然组的创建稍后进行,但我觉得提供概览是合理的。
四、创建 IAM 组(基础步骤)🧩
在直接向用户分配权限之前,AWS 的最佳实践是使用 IAM 组。
组让访问权限的管理、审计和扩展变得更加容易,尤其是在真实环境中。
在本项目中,IAM 组代表现实世界中的角色,而不是个人。
4.1 管理员组 🔐
Admin 组用于管理 AWS 资源的可信管理员。
创建 Admin 组的步骤:
- 1. 转到 IAM → 用户组
- 2. 点击 创建组
- 3. 组名:
Admin - 4. 附加策略:
- •
AdministratorAccess
- 5. 创建组
您将把您的管理员用户(test-admin1)分配到此组。
4.2 只读组 👀
ViewOnly 组代表审计员、安全分析师或利益相关者,他们需要可见性但无权进行更改。
创建 ViewOnly 组的步骤:
- 1. IAM → 用户组 → 创建组
- 2. 组名:
ViewOnly - 3. 附加策略:
- •
ViewOnlyAccess
- 4. 创建组
这与审计和审查中使用的真实世界只读访问权限相符。
4.3 计费/财务组(标准 IAM)💰
除了 Billing Conductor,许多组织仍会创建一个基础的计费组用于受控访问。
可选的标准计费组:
- 1. IAM → 用户组 → 创建组
- 2. 组名:
Billing - 3. 附加策略:
- •
Billing(AWS 托管策略)
- 4. 创建组
⚠️ 注意:
部分计费功能仍为root 账户专属。这在 AWS 中是预期行为。
4.4 为什么组很重要 🧠
使用组而非直接将策略附加给用户:
- • 简化权限管理
- • 降低配置错误的风险
- • 提高审计可读性
- • 反映企业环境中 IAM 的管理方式
这种基于组的设计为后续步骤(如MFA 强制执行、SCP 防护栏和凭证报告)奠定了基础。
五、步骤 1:创建 IAM 管理员用户
切勿将 root 账户用于日常操作。
步骤:
- 1. 前往 IAM → 用户 → 创建用户
- 2. 为您的管理员用户命名:
test-admin1 - 3. 选择 提供对 AWS 管理控制台的访问权限
- 4. 分配到 Admin 组
- 5. 保持密码自动生成
六、步骤 2:为 root 账户和管理员启用 MFA
MFA 能极大提升登录安全性。
6.1 root 账户 MFA:
- 1. 以 root 账户登录
- 2. 转到 IAM → 安全凭证
- 3. 添加 虚拟 MFA
- 4. 使用任何身份验证器(authenticator)应用
6.2 管理员 MFA:
在用户的安全凭证下重复相同的步骤。
七、步骤 3:强化 IAM 密码策略
加固前:
加固后:
改进后的设置:
- • 最短 14 个字符
- • 要求大写字母、小写字母、数字、符号
- • 密码 45 天后过期
- • 防止重用最近 6 个密码
- • 要求管理员重置
注意:您可以在 IAM 仪表板的”账户设置”下找到密码策略。
八、步骤 4:创建计费与财务组
如果您是使用标准用户账户的初学者(像我一样),在 AWS 中只有 root 用户有权自定义计费。
为了模拟财务部门,您可以选择使用 Billing Conductor:
8.1 逐步指南:创建 Billing Conductor 管理员组
步骤 1:打开 IAM
- • 在 AWS 控制台中搜索 IAM
步骤 2:创建新组
-
• 点击”用户组” → “创建组”
-
•
BillingConductorAdmins
步骤 3:附加 Billing Conductor 的 IAM 托管策略
-
• 搜索并附加:
-
•
AWSBillingConductorFullAccess -
• 这个 AWS 托管策略包含:
-
•
billingconductor:* -
• 修改定价规则、计费组、定价计划等相关 IAM 权限
-
• 对 Billing Conductor 资源的完整 CRUD 访问权限
对于金融运营/计费工程师来说,这是正确且现实的选择。
8.1.1 快速摘要表 🧠
| 功能特性 | AWS Billing | AWS Billing Conductor | | — | — | — | | 标准月度账单 | ✔ 是 | ✔ 是(可定制) | | Cost Explorer | ✔ 是 | ❌ 否 | | Budgets | ✔ 是 | ❌ 否 | | 付款方式 | ✔ 是 | ❌ 否 | | 免费套餐使用情况 | ✔ 是 | ❌ 否 | | 自定义定价/加价 | ❌ 否 | ✔ 是 | | 企业多账户发票 | ❌ 否 | ✔ 是 | | 本项目是否需要? | ✔ 是 | ❌ 否 |
九、步骤 5:使用服务控制策略(SCP)强制执行 MFA
9.1 SCP真正的作用:
- • 它们不会阻止登录
- • 它们会阻止所有 AWS 操作,直到使用了 MFA
- • 它们在 组织 层级生效
9.2 使用 AWS Organizations 大规模强制执行 MFA(最常见的现代方法)
步骤 1:创建 AWS 组织
- • 免费
- • 自动将您当前的账户指定为管理账户
步骤 2:转到”服务控制策略”
- • 开启 SCPs
步骤 3:创建 SCP:”Require-MFA-For-All-Actions”
- • 粘贴下面的 JSON。
步骤 4:将 SCP 附加到 Root OU
- • 这会为所有账户强制执行该策略。
步骤 5:测试行为
- • 以非 MFA 用户身份登录。
- • 尝试打开 S3 → 访问被拒绝
- • 尝试使用 CLI →
AccessDeniedException
9.3 你的 MFA 强制执行的 SCP
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyAllAPICallsWithoutMFA",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
},
{
"Sid": "AllowMFASelfManagement",
"Effect": "Allow",
"Action": [
"iam:ListUsers",
"iam:GetUser",
"iam:ListMFADevices",
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:ResyncMFADevice"
],
"Resource": "*"
}
]
}
9.4 附加 SCP
- • 你必须转到 SCP → 目标 → 附加
- • 然后选择 附加策略 →
Root或 你想应用该策略的账户。
这对于激活策略至关重要。
十、步骤 6:验证 MFA 执行
你测试了没有 MFA 的登录:
预期结果:
- • 登录成功(AWS 在登录过程中不强制要求 MFA)
- • 一旦登录后,所有操作都会失败
这是正确的行为。
十一、步骤 7:配置并验证 CloudTrail
启用 CloudTrail 管理事件:
11.1 打开 CloudTrail
AWS 控制台 → 搜索 CloudTrail
11.2 转到”跟踪”
左侧菜单 → 跟踪(Trails)
11.3 点击”创建跟踪”
选择一个跟踪名称。例如:iam-hardening-trail
- • 应用于所有区域:✔ 是(推荐)
- • 管理事件:✔ 读/写
- • 数据事件:❌ 关(本项目不需要)
- • 洞察事件:❌ 关(可选)
11.4 创建(或选择)一个 S3 存储桶
让 AWS 自动创建它,或者,使用现有存储桶;例如:cloudtrail-iam-hardening-logs-12345
11.5 保存
你的跟踪现已激活。
所使用的设置:
- • 管理事件:开启
- • 读取事件:开启
- • 写入事件:开启
- • 第一份副本免费
十二、步骤 8:在 S3 中检查 CloudTrail 日志
你的观察是正确的:
- • 日志立即出现在 S3 中
- • 但对象 URL 访问在默认情况下是被阻止的
- • 即使拥有 CloudTrailReadOnly 和 SecurityAudit 权限,S3 存储桶策略也必须允许对象访问
十三、步骤 9:生成 IAM 凭证报告
加固前:
加固后:
AWS 时间说明
凭证报告:
- • 每 4 小时自动生成一次
- • 但也可以手动请求生成
- • 由于最终一致性,可能不会立即更新
注意:以上图像仅代表用户的添加情况。用户在项目完成后已被移除。这是一种单账户的企业级方法。
- • 用户将需要登录并激活/设置 MFA
- • 切勿暴露访问密钥
- • 注意不要暴露账户信息,测试后立即移除/禁用账户
十四、步骤 10:加固前后对比
现在你已经拥有:
- • 没有未使用的访问密钥
- • 已启用 MFA
- • 强密码策略
- • 强制执行 MFA 的 SCP
- • 受限制的计费访问权限
- • 记录一切的 CloudTrail
- • 凭证报告显示安全态势良好
注意:你的结果可能不同。我已有一些测试/项目账户。
十五、可选:Billing Conductor 概述
Billing Conductor 用于:
- • 为计费目的分组账户
- • 应用折扣/加价
- • 模拟财务部门
你测试了定价规则的创建:
十六、故障排除指南
❗ CloudTrail 日志可见但无法打开对象 URL
这是预期情况。存储桶策略会阻止访问。
❗ 已附加 SCP 但登录不要求 MFA
这是正确的。SCP 在 API 层面生效,而非登录层面。
❗ 凭证报告缺少新用户
等待 5-20 分钟或重新请求报告。
十七、清理以避免产生费用
- • 删除 CloudTrail 跟踪
- • 删除 S3 日志存储桶
- • 删除 Billing Conductor 规则
- • 移除测试 IAM 用户
- • 移除 SCP
- • 移除测试用户的 MFA
- • 移除你创建的 IAM 组
引用链接
[1] LaTerral Williams: https://linkedin.com/in/ldwit
[2] 《Beginner’s Guide to AWS IAM Hardening》: https://dev.to/ldwit/beginners-guide-to-aws-iam-hardening-5ag2
交流群
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:云原生安全指北 Dubito《面向JD学习AWS云安全1:IAM加固》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论