andresscyber/aws-devsecops-remediation-pipeline

GitHub: andresscyber/aws-devsecops-remediation-pipeline

该项目构建了一个事件驱动的 AWS DevSecOps 流水线,实现了从 IaC 代码安全扫描到云端资源持续合规监控及自动修复的闭环。

Stars: 0 | Forks: 0

# AWS DevSecOps 自动化云修复 Pipeline ![Terraform](https://img.shields.io/badge/Terraform-IaC-623CE4?style=for-the-badge&logo=terraform) ![AWS](https://img.shields.io/badge/AWS-Cloud_Security-FF9900?style=for-the-badge&logo=amazonaws) ![Python](https://img.shields.io/badge/Python-Lambda-3776AB?style=for-the-badge&logo=python) ![GitHub Actions](https://img.shields.io/badge/GitHub_Actions-CI/CD-2088FF?style=for-the-badge&logo=githubactions) ![Checkov](https://img.shields.io/badge/Checkov-IaC_Security-2F855A?style=for-the-badge) ![TFLint](https://img.shields.io/badge/TFLint-Terraform_Linting-5C4EE5?style=for-the-badge)

Terraform • GitHub Actions • Checkov • AWS Config • EventBridge • Lambda • CloudWatch

## 概述 本项目演示了一个**事件驱动 AWS DevSecOps pipeline** 的设计与实现,该 pipeline 能够持续验证 Infrastructure as Code (IaC)、监控云资源合规性,并自动修复不安全的 Amazon S3 配置。 基础设施使用 **Terraform** 进行配置,并在部署前通过利用 **GitHub Actions**、**Checkov** 和 **TFLint** 的 CI/CD pipeline 进行验证。部署完成后,**AWS Config** 会根据托管合规规则持续评估 Amazon S3 bucket 的安全状况。 当 bucket 变得不合规时(例如,允许公开读取访问),**Amazon EventBridge** 会自动将合规事件路由到 **AWS Lambda** 函数。该 Lambda 函数使用 AWS SDK for Python (Boto3) 恢复 Amazon S3 Block Public Access 设置。所有修复活动都会记录在 **Amazon CloudWatch Logs** 中,从而提供运维可见性和可审计性。 本项目展示了现代云安全工程实践,包括 Infrastructure as Code、DevSecOps 自动化、持续合规监控、事件驱动的修复、最小权限 IAM 设计以及 Serverless 云安全自动化。 # 解决方案架构

**图 1.** 高层架构,展示了从 Infrastructure as Code 验证到 AWS 云自动化修复的完整 DevSecOps 工作流。 ## 架构流程 ``` Developer │ ▼ GitHub Repository │ ▼ GitHub Actions │ ├──────── Terraform Validate ├──────── TFLint └──────── Checkov Security Scan │ ▼ Terraform Apply │ ▼ ──────────────── AWS ──────────────── │ ▼ Secure Amazon S3 Bucket │ ▼ AWS Config (Continuous Compliance Monitoring) │ ▼ Amazon EventBridge (Event Routing) │ ▼ AWS Lambda (Automatic Remediation) │ ▼ Restore S3 Block Public Access │ ▼ Amazon CloudWatch Logs (Audit & Visibility) ``` # 项目目标 本项目旨在通过将 Infrastructure as Code、自动化安全验证、合规监控和 Serverless 修复整合到一个单一的安全 pipeline 中,来模拟现代云安全工程工作流。 ## 目标 - 使用 Terraform 部署安全的 AWS 基础设施 - 在部署前验证 Infrastructure as Code - 使用 Checkov 执行自动化安全扫描 - 使用 TFLint 执行 Terraform linting - 实施 Infrastructure as Code 最佳实践 - 强制执行最小权限 IAM 权限 - 使用 AWS Config 监控 S3 bucket 合规性 - 自动检测云资源配置错误 - 通过 Amazon EventBridge 触发 Serverless 修复 - 使用 AWS Lambda 自动恢复安全的 S3 配置 - 在 Amazon CloudWatch Logs 中记录修复事件 - 演示真实场景下的云安全自动化 # 技术栈 | 类别 | 技术 | |-----------|-------------| | 云平台 | AWS | | Infrastructure as Code | Terraform | | 编程语言 | Python (Boto3) | | CI/CD | GitHub Actions | | IaC 安全 | Checkov | | Terraform Linting | TFLint | | 合规监控 | AWS Config | | 事件路由 | Amazon EventBridge | | Serverless 计算 | AWS Lambda | | 存储 | Amazon S3 | | 监控 | Amazon CloudWatch | | 身份与访问管理 | AWS IAM | | 版本控制 | Git & GitHub | # 展示的安全能力 - 使用 Terraform 的 Infrastructure as Code - 使用 Checkov 进行左移安全扫描 - 使用 TFLint 进行 Terraform linting - 使用 GitHub Actions 进行 CI/CD 安全验证 - 部署启用版本控制和加密的安全 S3 bucket - 使用 AWS Config 进行持续合规监控 - 使用 Amazon EventBridge 进行事件驱动修复 - 使用 AWS Lambda 和 Boto3 进行 Serverless 修复 - 最小权限 IAM role 设计 - 用于提供修复证据的 CloudWatch 日志记录 - 预防、检测和纠正性云安全控制 # 安全工程决策 | 决策 | 使用原因 | |----------|-----------------| | Terraform | 提供可重复、版本控制的 Infrastructure as Code,而非手动的 AWS console 配置。 | | GitHub Actions | 在部署前自动验证基础设施变更。 | | Checkov | 在开发生命周期早期扫描 Terraform 的安全配置错误。 | | TFLint | 检测 Terraform 质量问题和最佳实践的违规情况。 | | AWS Config | 根据合规规则持续评估已部署的资源。 | | EventBridge | 仅在发生相关变更时路由合规事件,避免低效的轮询。 | | Lambda | 提供无服务器修复,而无需维护 EC2 实例。 | | IAM 最小权限 | 将修复函数限制为仅具有恢复 S3 Block Public Access 所需的权限。 | | CloudWatch Logs | 提供运维可见性、故障排除数据和审计证据。 | # 安全控制映射 | 安全控制 | 实现 | |------------------|----------------| | 预防性控制 | Terraform, GitHub Actions, Checkov, TFLint | | 检测性控制 | AWS Config 托管规则 (`s3-bucket-public-read-prohibited`) | | 纠正性控制 | Amazon EventBridge, AWS Lambda | | 审计与可见性 | Amazon CloudWatch Logs | | 身份与访问管理 | 最小权限 IAM Role | # 仓库结构 ``` aws-devsecops-remediation-pipeline/ │ ├── .github/ │ └── workflows/ │ └── terraform-security.yml │ ├── architecture/ │ └── 01-overall-architecture.png │ ├── lambda/ │ ├── remediation.py │ └── remediation.zip │ ├── screenshots/ │ ├── 01-github-actions/ │ ├── 02-checkov/ │ ├── 03-tflint/ │ ├── 04-terraform-deployment/ │ ├── 05-aws-config/ │ └── 06-auto-remediation/ │ ├── terraform/ │ ├── config.tf │ ├── iam.tf │ ├── main.tf │ ├── outputs.tf │ ├── s3.tf │ ├── terraform.tfvars │ └── variables.tf │ ├── README.md └── .gitignore ``` # 项目演练 ## 1. 使用 Terraform 部署基础设施 Terraform 配置了自动化修复 pipeline 所需的所有 AWS 资源,包括安全的 Amazon S3 bucket、IAM role、AWS Lambda 函数、Amazon EventBridge 规则和 AWS Config 资源。 S3 bucket 在部署时默认启用了安全控制,包括版本控制、服务器端加密和 Block Public Access。 ## 2. CI/CD 安全验证 GitHub Actions 运行 Terraform 验证、TFLint 和 Checkov,以便在部署前验证基础设施代码。 这通过在应用基础设施变更之前识别配置和安全问题,演示了左移安全策略。 ## 3. 持续合规监控 AWS Config 使用托管规则 `s3-bucket-public-read-prohibited` 对 S3 bucket 进行评估。 如果 bucket 允许公开读取访问,AWS Config 会将该资源标记为 `NON_COMPLIANT`。 ## 4. 事件驱动的修复 Amazon EventBridge 监听 AWS Config 的合规变更事件。 EventBridge 规则被限定为仅在 `s3-bucket-public-read-prohibited` 规则报告 `NON_COMPLIANT` 结果时触发。 ## 5. 使用 Lambda 自动修复 Lambda 函数接收 AWS Config 事件,提取受影响的 S3 bucket 名称,并使用 Boto3 恢复 Block Public Access 设置。 ## 6. 使用 CloudWatch 提供审计证据 CloudWatch Logs 记录事件 payload、合规状态、受影响的 bucket 和修复结果。 # 证据与截图 ## GitHub Actions

**图 1:** GitHub Actions 会在基础设施部署前自动验证 Terraform 配置、执行 TFLint 并进行 Checkov 安全分析。 ## Checkov 安全扫描

**图 2:** Checkov 扫描 Terraform 配置,以发现 Infrastructure as Code 的安全配置错误和合规问题。

**图 3:** 详细的 Checkov 扫描结果,突出了 Infrastructure as Code 的安全验证。 ## TFLint 验证

**图 4:** TFLint 验证 Terraform 语法和配置最佳实践,未检测到任何问题。 ## Terraform 部署

**图 5:** Terraform 配置 AWS 基础设施,包括 S3 bucket、IAM role、Lambda 函数、EventBridge 规则和 AWS Config 资源。 ## AWS Config 合规规则

**图 6:** AWS Config 托管规则持续评估 Amazon S3 bucket 的公开读取访问合规性。 ## 自动修复

**图 7:** 应用临时的公开 bucket policy,以故意模拟云安全配置错误。

**图 8:** CloudWatch Logs 确认 AWS Lambda 检测到了 `NON_COMPLIANT` 事件并自动恢复了 Amazon S3 Block Public Access。 # 经验教训 本项目强化了预防、检测和纠正性云安全控制如何在真实环境的 AWS 环境中协同工作。 主要经验教训: - Terraform 将安全的基础设施定义为代码。 - Checkov 和 TFLint 帮助在部署前验证基础设施。 - AWS Config 在部署后检测配置漂移。 - EventBridge 实现了事件驱动的安全自动化。 - Lambda 可以在无需人工干预的情况下自动修复配置错误。 - IAM 最小权限通过限制修复权限来降低风险。 - CloudWatch 提供了修复成功发生的证据。 # 未来改进 - 增加用于修复事件的 SNS 或 Slack 通知 - 增加 AWS CloudTrail 关联,以确定谁进行了更改 - 增加 AWS Security Hub 集成 - 增加对修复开放安全组的支持 - 使用 AWS KMS 加密以满足更严格的密钥管理要求 - 将 Terraform state 远程存储在 S3 中并使用 DynamoDB 进行 state 锁定 - 扩展 GitHub Actions,以便在发现高严重性 Checkov 问题时阻止部署 # 展示的技能 - AWS 云安全 - DevSecOps - Infrastructure as Code (Terraform) - GitHub Actions CI/CD - Checkov 安全扫描 - Terraform 验证与 TFLint - AWS Config 合规监控 - Amazon EventBridge - AWS Lambda (Python/Boto3) - IAM 最小权限 - Amazon S3 安全 - CloudWatch 日志记录 - 事件驱动架构 - 安全自动化 - 持续合规
标签:AWS, DevSecOps, DPI, ECS, GitHub Actions, S3, Terraform, 上游代理, 模块化设计, 自动化修复, 自动笔记