自动化GitHub扫描器:检测暴露的AWS IAM密钥
概述
这个n8n工作流能自动扫描GitHub上与你AWS账户关联的暴露IAM访问密钥,帮助安全团队快速识别并应对潜在安全漏洞。当发现泄露的密钥时,工作流会生成详细安全报告并通过Slack发送包含修复建议的告警通知。
🔑 核心功能
- 自动化IAM密钥扫描:定期检查GitHub上暴露的AWS访问密钥
- 实时安全告警:检测到泄露密钥时立即发送Slack通知
- 完整安全报告:生成包含泄露信息和风险评估的详细报告
- 可执行修复方案:提供明确的凭证保护操作指南
- 持续监控:对AWS环境进行不间断监测
📋 工作流步骤
- 列出AWS用户:获取AWS账户所有用户
- 拆分用户处理:逐个处理用户数据
- 获取用户访问密钥:提取每个用户的访问密钥
- 筛选活跃密钥:仅处理当前有效的访问密钥
- GitHub密钥扫描:在代码仓库中搜索暴露的密钥
- 汇总扫描结果:合并去重发现项
- 验证密钥泄露:确认是否存在真实泄露
- 生成安全报告:创建密钥泄露详细报告
- 提取AWS用户名:从响应数据中提取通知所需的用户名
- 格式化Slack告警:准备完整的Slack通知内容
- 发送Slack通知:推送包含操作指南的告警
- 持续扫描:保持周期性监控循环
🛠️ 配置要求
先决条件
- 运行中的n8n实例
- 具备IAM权限的AWS账户
- 拥有仓库搜索权限的GitHub账户/令牌
- 接收通知的Slack工作区
必要凭证
-
AWS凭证:
- 具有列出用户和访问密钥权限的IAM用户
- 访问密钥ID和秘密访问密钥
-
GitHub凭证:
- 具备搜索权限的个人访问令牌
-
Slack凭证:
- 通知频道的Webhook URL
⚙️ 配置指南
-
AWS配置:
- 在”列出AWS用户”节点配置AWS凭证
- 确保IAM权限可列出用户和访问密钥
-
GitHub配置:
- 在GitHub扫描节点设置访问令牌
- 根据需要调整搜索参数
-
Slack配置:
- 在Slack节点配置Webhook URL
- 按需自定义通知格式
🚀 使用说明
运行工作流
- 手动执行:点击”执行工作流”立即扫描
- 定时执行:设置定期扫描计划(建议每日/每周)
仓库兼容性
本工作流兼容你有权访问的所有GitHub仓库(包括公开和私有库)。扫描范围取决于GitHub凭证的权限。
告警处理
检测到泄露密钥时:
- 查看Slack通知中的泄露详情
- 执行建议修复步骤:
- 立即停用泄露密钥
- 必要时创建新密钥
- 调查泄露来源
- 更新使用该密钥的所有服务
⚠️ 免责声明
本工作流模板仅作为自动化扫描AWS IAM密钥泄露的参考方案:
- 扫描结果可能存在误报(仅匹配AWS密钥格式)
- 采取行动前务必人工验证所有报告
- 未经确认停用/删除密钥可能造成系统故障
- 停用密钥前需明确其关联系统
- 应根据实际环境安全策略定制模板
重要提示:请充分理解AWS环境后再使用本工作流。模板作者不对使用后果负责。
🔒 安全须知
- 本工作流需接触敏感AWS凭证
- 所有凭证应安全存储在n8n中
- 定期审查并轮换访问密钥
📝 定制选项
- 调整GitHub搜索参数实现精准扫描
- 自定义Slack通知格式和内容
- 按需修改安全报告生成逻辑
- 集成其他通知渠道(邮件/MS Teams等)
可选:启用Slack交互按钮
Slack Block Kit通知格式支持交互按钮,可直接在Slack中执行操作:
- 停用密钥:配置为自动停用泄露的IAM密钥
- 查看详情:展示泄露事件的补充信息
- 确认:将告警标记为已处理
实现步骤:
-
创建Slack Socket应用:
- 在Slack API控制台创建应用
- 启用Socket模式和交互组件
- 订阅
block_actions
事件捕获按钮点击
-
配置n8n Webhook:
- 添加webhook节点接收Slack按钮事件
- 为每个按钮动作创建独立工作流
-
实现密钥停用:
- 对”停用密钥”按钮,创建工作流调用AWS IAM的
UpdateAccessKey
API - n8n中的HTTP请求示例:
方法: POST URL: https://iam.amazonaws.com/ 查询参数: Action: UpdateAccessKey AccessKeyId: AKIAIOSFODNN7EXAMPLE Status: Inactive UserName: {{$json.username}} Version: 2010-05-08
- 对”停用密钥”按钮,创建工作流调用AWS IAM的
-
更新Slack消息格式:
- 修改
格式化Slack告警
节点添加webhook URL - 添加callback_id和action_id标识按钮点击
- 修改
该实现允许直接从Slack界面响应安全事件,缩短响应时间并提升安全状态。