面向JD学习AWS云安全4:配置漂移检测

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

文章总结: 本文介绍了使用AWSConfig进行配置漂移检测的实战指南。通过结合EventBridge和SNS,演示如何自动监控S3存储桶的公开变更并发送告警。文章涵盖从规则配置、漂移引入到故障排除的完整流程,旨在帮助读者掌握云安全合规性监控与自动化响应技能,适合作为简历项目积累云安全经验。 综合评分: 90 文章分类: 云安全,实战经验,安全工具,解决方案,安全建设


cover_image

面向JD学习AWS云安全4:配置漂移检测

Dubito

云原生安全指北

2026年1月7日 08:36 江苏

注:本文翻译自 LaTerral Williams[1] 的文章《🛡️ AWS Config Drift Detection Lab – Beginner-Friendly Guide》[2],可点击文末“阅读原文”按钮查看英文原文。

全文如下:

⭐ 我为什么构建这个项目

(项目 4/6:使用 AWS Config 进行漂移检测)

与其孤立地学习云安全概念,我选择以真实的职位描述为路线图,动手构建直接映射到云安全、云运维和安全工程领域的实践项目。

这个由6个部分组成的系列项目专注于实用、可直接写入简历的云安全技能,包括:

  • • 身份强化与多因素身份验证(MFA)强制执行
  • • IAM 治理与访问权限审查
  • • 云资源的持续监控
  • • 错误配置检测与漂移分析
  • • 日志分析、审计就绪与证据收集
  • • 大规模使用 AWS Organizations 和服务控制策略(SCPs)设置防护栏
  • • 威胁检测、异常监控与事件分诊

每个项目的设计都旨在反映真实世界的工作职责,而不仅仅是理论学习。

📌 项目系列概览

注:其他项目见同期发布的其他文章

👉 项目1: AWS IAM 加固 —— 加强身份边界并改善认证安全状况

👉 项目2: 使用 Security Hub + AWS Config 实现云安全态势管理(CSPM)

👉 项目3: 使用 GuardDuty + CloudTrail 实现类似云访问安全代理(CASB)的监控,侧重于异常检测、委托管理员和安全威胁模拟

👉 项目4:本项目)—— 使用 AWS Config 进行漂移检测,利用托管的 Config 规则、限定范围的评估、EventBridge 路由、SNS 通知以及可选的自动修复功能,来检测云资源何时偏离已批准的安全基线。

👉 项目 5: 使用 Athena + QuickSight 进行日志分析与仪表板构建,将原始 CloudTrail 日志转化为可操作的安全洞察

👉 项目 6:Terraform 安全模块,使用基础设施即代码(Infrastructure as Code,IaC)构建安全的 AWS 基线

🔐 为何这种递进关系至关重要

现代云安全团队采用分层防护方法:

身份优先 → 其次态势 → 威胁检测 → 漂移治理

在建立了 IAM 安全状况(项目1)、安全态势基线(项目2)和威胁情报/异常检测(项目3)之后,下一步自然而然地就是检测云资源何时偏离其预期配置

漂移检测之所以关键,是因为:

  • • 许多安全漏洞源自 意外的错误配置
  • • 公开的 S3 存储桶仍然是云安全事件的主要源头
  • • 合规性框架要求进行持续的配置监控
  • • 安全团队依赖自动化告警,而非手动检查

本项目通过结合使用以下组件,模拟云安全分析师、合规性工程师和平台安全团队的真实工作流程:

  • • AWS Config 托管规则
  • • 限定范围的评估(标签、资源类型)
  • • EventBridge 事件模式过滤
  • • SNS 通知路由
  • • 可选的 SSM 自动修复操作
  • • 成本可控的清理实践

您将有意地创建一个公开的 S3 存储桶,观察 AWS 如何检测到漂移、触发自动化告警,并可选地自动修复问题……这是一个真正的端到端云安全工作流程。


这是一份使用 AWS ConfigEventBridge 和 SNS 来检测 S3 存储桶何时变为 公开(安全漂移的经典示例)的动手实践指南。

这是一份有趣、友好的技术指南,专为绝对初学者设计,包含来自真实实验环境运行的故障排除。

一、引言 🔰

云环境变化迅速。有时太快了——而且并非总是有意为之。

本实验将向您展示如何使用以下工具检测非预期的变更(漂移):

  • • AWS Config → 检测漂移
  • • Amazon EventBridge → 路由漂移事件
  • • Amazon SNS → 发送邮件告警

您将故意违规配置一个 S3 存储桶,并观察 AWS 如何向您发出告警。

您还将看到我在实践中遇到的真实故障排除问题以及相应的解决方法。

二、什么是漂移检测?🌪️

安全漂移是指资源偏离您预期配置的情况。

示例:

  • • 您希望 S3 存储桶保持私有
  • • 有人将其设为公开
  • • 漂移被检测到!🔔

本实验重点在于检测 S3 存储桶何时变为可公开访问

三、架构概览 🏗️

顶层流程:

  1. 1. 您创建一个私有 S3 存储桶
  2. 2. AWS Config 使用托管规则对其进行评估
  3. 3. 您引入漂移(将其设为公开)
  4. 4. Config 将其标记为 NON_COMPLIANT
  5. 5. EventBridge 捕获此变更
  6. 6. SNS 向您发送邮件告警

四、前提条件与成本说明 🛠️

您需要:

  • • 一个 AWS 账户

  • • 基础的 IAM 权限:

  • • AWSConfigFullAccess

  • • S3FullAccess

  • • EventBridgeFullAccess

  • • SNSFullAccess

成本说明:

AWS Config 属于完全免费套餐范畴。

为使本项目保持低成本:

  • • 仅在一个区域内操作
  • • 仅跟踪 S3 资源
  • • 使用 单一规则
  • • 最后删除所有内容(已包含清理步骤)

五、步骤 1:创建 Config 日志存储桶 🪣

  1. 1. 前往 S3 → 创建存储桶
  2. 2. 为其命名,例如:config-logs-lab-<yourinitials>-123
  3. 3. 启用 Block Public Access(屏蔽公有访问)
  4. 4. 保持默认加密开启
  5. 5. 点击 创建存储桶

六、步骤 2:启用 AWS Config(仅限 S3)📝

  1. 1. 打开 AWS Config → 设置
  2. 2. 选择 记录特定资源类型
  3. 3. 勾选:
  • • AWS::S3::Bucket
  • • (可选但推荐)AWS::S3::AccountPublicAccessBlock
  1. 4. 将分发(delivery) S3 存储桶设置为您刚创建的存储桶
  2. 5. 跳过 SNS 通知(我们稍后会自行创建)

七、步骤 3:创建用于漂移测试的 S3 存储桶 🪣

命名示例:drift-demo-bucket-<yourinitials>-123

  1. 1. 创建存储桶
  2. 2. 保持 Block Public Access = ON(开启屏蔽公有访问)
  3. 3. 添加标签:
Key: Project
Value: ConfigDriftLab

此标签便于我们稍后限定 Config 规则的作用范围。

八、步骤 4:添加 AWS Config 规则 🧩

搜索托管规则:

✅ s3-bucket-level-public-access-prohibited

这是一个新存储桶层级的漂移规则,用于检测存储桶策略或 ACL 是否使存储桶变为公开。

设置 范围 为:

  • • 具有特定标签的资源
  • • 键:Project
  • • 值:ConfigDriftLab

九、步骤 5:创建用于告警的 SNS 主题 📣

  1. 1. 前往 SNS → Topics → 创建Topics
  2. 2. 名称:drift-alerts-test-topic
  3. 3. 创建
  4. 4. 添加订阅:
  • • 协议:Email
  • • 端点:您的电子邮箱地址
  1. 5. 在收件箱中确认该邮件

十、步骤 6:创建 EventBridge 规则 🔔

此规则用于监听 AWS Config 合规性变更。

使用以下事件模式:

{
&nbsp; "source":&nbsp;["aws.config"],
&nbsp; "detail-type":&nbsp;["Config Rules Compliance Change"],
&nbsp; "detail":&nbsp;{
&nbsp; &nbsp; "configRuleName":&nbsp;["s3-bucket-level-public-access-prohibited"],
&nbsp; &nbsp; "newEvaluationResult":&nbsp;{
&nbsp; &nbsp; &nbsp; "complianceType":&nbsp;["NON_COMPLIANT"]
&nbsp; &nbsp; }
&nbsp; }
}

设置 Target = 您刚刚创建的 SNS 主题。

如果需要,请重新添加目标,以便 EventBridge 自动更新 SNS 策略。

十一、步骤 7:引入漂移(将存储桶设为公开)💥

为了模拟漂移:

  1. 1. 禁用 Block Public Access(屏蔽公有访问)
  2. 2. 添加一条公开的存储桶策略:
{
&nbsp; "Version":&nbsp;"2012-10-17",
&nbsp; "Statement":&nbsp;[
&nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp; "Sid":&nbsp;"PublicRead",
&nbsp; &nbsp; &nbsp; "Effect":&nbsp;"Allow",
&nbsp; &nbsp; &nbsp; "Principal":&nbsp;"*",
&nbsp; &nbsp; &nbsp; "Action":&nbsp;"s3:GetObject",
&nbsp; &nbsp; &nbsp; "Resource":&nbsp;"arn:aws:s3:::drift-demo-bucket-<yourinitials>-123/*"
&nbsp; &nbsp; }
&nbsp; ]
}

AWS Config 将很快检测到此变更。

十二、步骤 8:验证漂移检测与告警 📨

您应该会看到:

AWS Config → 规则状态:

NON_COMPLIANT 🔴(不合规)

EventBridge → 监控:

Invocations(调用次数) > 0

SNS 邮件 →

检查收件箱以及垃圾邮件文件夹(这是本实验中的真实情况 😅)

十三、故障排除与常见问题(真实实验问题)🧰

本节包含 叙述性描述 + 清晰的参考列表,基于构建本项目时遇到的实际问题。

13.1 叙述:实际遇到的问题及解决方法 🧵

13.1.1 SNS 从未发送告警

结果发现,SNS 主题使用了默认策略,该策略不允许 EventBridge 发布消息。

修复方法:

我将以下内容添加到 SNS 访问策略中:

{
&nbsp; "Sid":&nbsp;"Allow_EventBridge_Publish",
&nbsp; "Effect":&nbsp;"Allow",
&nbsp; "Principal":&nbsp;{
&nbsp; &nbsp; "Service":&nbsp;"events.amazonaws.com"
&nbsp; },
&nbsp; "Action":&nbsp;"SNS:Publish",
&nbsp; "Resource":&nbsp;"arn:aws:sns:us-east-1:<account-id>:drift-alerts-test-topic",
&nbsp; "Condition":&nbsp;{
&nbsp; &nbsp; "ArnEquals":&nbsp;{
&nbsp; &nbsp; &nbsp; "aws:SourceArn":&nbsp;"arn:aws:events:us-east-1:<account-id>:rule/aws-config-drift-to-sns"
&nbsp; &nbsp; }
&nbsp; }
}

13.1.2 首封告警邮件进入垃圾箱

SNS 邮件来自:[email protected]

我将其标记为非垃圾邮件,以确保后续告警正确送达。

13.1.3 Config 规则名称不匹配

AWS 更新了 S3 Config 规则的命名。

正确的规则名称是:

✔ s3-bucket-level-public-access-prohibited

13.2 清晰的故障排除清单 📋

| 问题 | 修复方法 | | — | — | | 没有邮件告警 | 确认 SNS 订阅状态为 Confirmed(已确认) | | EventBridge 未触发 | 检查 Monitoring(监控) 选项卡下的 Matches | | 事件模式无效 | 临时使用 { "source": ["aws.config"] } 进行测试 | | SNS 访问被拒绝 | 添加 EventBridge → SNS 的发布策略 | | 告警进入垃圾箱 | 将其标记为 非垃圾邮件 | | 没有事件发出 | 确保合规状态从 COMPLIANT(合规)变更为 NON_COMPLIANT(不合规) |

十四、清理(避免产生费用!)🧹

请按以下顺序删除:

  1. 1. 漂移测试 S3 存储桶
  2. 2. AWS Config 规则
  3. 3. 停止配置记录器(Configuration Recorder)
  4. 4. 删除分发通道
  5. 5. 删除 Config 日志存储桶
  6. 6. 删除 EventBridge 规则
  7. 7. 删除 SNS 主题及其订阅
  8. 8. 删除用于修复的 IAM 角色(如果有)

这样可以确保 AWS Config 停止计费。

十五、总结🎉

您刚刚构建了:

  • • 漂移检测
  • • 自动化告警
  • • AWS Config 记录管道
  • • 真实的调试场景

这是一个非常理想的、适合初学者的云安全项目,非常适合展示在简历或作品集中。🚀

引用链接

[1] LaTerral Williams: https://linkedin.com/in/ldwit [2] 《🛡️ AWS Config Drift Detection Lab – Beginner-Friendly Guide》: https://dev.to/ldwit/aws-config-drift-detection-lab-beginner-friendly-guide-39c8

交流群


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:云原生安全指北 Dubito《面向JD学习AWS云安全4:配置漂移检测》

评论:0   参与:  0