面向JD学习AWS云安全1:IAM加固

admin 2026-01-08 02:15:29 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详述了AWS云安全实战项目的第一部分:IAM加固。通过创建IAM组、启用MFA、强化密码策略、利用SCP强制MFA及配置CloudTrail审计,指导读者构建企业级AWS安全环境。内容结合真实JD需求,旨在帮助初学者掌握身份与访问管理核心技能,建立安全作品集。 综合评分: 87 文章分类: 云安全,安全建设,安全培训


cover_image

面向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. 1. 转到 IAM → 用户组
  2. 2. 点击 创建组
  3. 3. 组名:Admin
  4. 4. 附加策略:
  • • AdministratorAccess
  1. 5. 创建组

您将把您的管理员用户(test-admin1)分配到此组。

4.2 只读组 👀

ViewOnly 组代表审计员、安全分析师或利益相关者,他们需要可见性但无权进行更改。

创建 ViewOnly 组的步骤:

  1. 1. IAM → 用户组 → 创建组
  2. 2. 组名:ViewOnly
  3. 3. 附加策略:
  • • ViewOnlyAccess
  1. 4. 创建组

这与审计和审查中使用的真实世界只读访问权限相符。

4.3 计费/财务组(标准 IAM)💰

除了 Billing Conductor,许多组织仍会创建一个基础的计费组用于受控访问。

可选的标准计费组:

  1. 1. IAM → 用户组 → 创建组
  2. 2. 组名:Billing
  3. 3. 附加策略:
  • • Billing (AWS 托管策略)
  1. 4. 创建组

⚠️ 注意:

部分计费功能仍为root 账户专属。这在 AWS 中是预期行为。

4.4 为什么组很重要 🧠

使用组而非直接将策略附加给用户:

  • • 简化权限管理
  • • 降低配置错误的风险
  • • 提高审计可读性
  • • 反映企业环境中 IAM 的管理方式

这种基于组的设计为后续步骤(如MFA 强制执行SCP 防护栏凭证报告)奠定了基础。

五、步骤 1:创建 IAM 管理员用户

切勿将 root 账户用于日常操作。

步骤:

  1. 1. 前往 IAM → 用户 → 创建用户
  2. 2. 为您的管理员用户命名:test-admin1
  3. 3. 选择 提供对 AWS 管理控制台的访问权限
  4. 4. 分配到 Admin 组
  5. 5. 保持密码自动生成

六、步骤 2:为 root 账户和管理员启用 MFA

MFA 能极大提升登录安全性。

6.1 root 账户 MFA:

  1. 1. 以 root 账户登录
  2. 2. 转到 IAM → 安全凭证
  3. 3. 添加 虚拟 MFA
  4. 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加固》

评论:0   参与:  0