AbdelazezMohamedAzez/multi-cloud-iac-security-scanning
GitHub: AbdelazezMohamedAzez/multi-cloud-iac-security-scanning
基于 Checkov 和 GitHub Actions 的多云 Terraform IaC 安全扫描项目,在部署前自动检测 AWS 和 GCP 的不安全云配置。
Stars: 0 | Forks: 0
# 多云 IaC 安全扫描
这是一个动手实践的 DevSecOps 项目,旨在使用 Checkov 和 GitHub Actions 扫描 AWS 和 GCP 的 Terraform 基础设施代码。
## 项目目标
本仓库演示了如何在部署前对基础设施即代码进行扫描,以便在 CI/CD 生命周期的早期检测不安全的云配置。
本项目侧重于:
- AWS Terraform 安全扫描
- GCP Terraform 安全扫描
- 基于 Checkov 的 IaC 安全门禁
- GitHub Actions 自动化
- 多云安全报告
- 发现与修复文档
## 本项目包含的内容
- AWS Terraform 基线
- GCP Terraform 基线
- Checkov IaC 扫描
- GitHub Actions CI 工作流
- Terraform 格式验证
- 多云安全报告
- 安全文档
- 对 Checkov 扫描发现的问题和例外的详细记录
## 技术栈
| 领域 | 工具 |
|---|---|
| 基础设施即代码 | Terraform |
| AWS IaC | AWS Provider |
| GCP IaC | Google Provider |
| IaC 安全 | Checkov |
| CI/CD | GitHub Actions |
| 文档 | Markdown |
## 仓库结构
```
infra/
├── aws/
│ ├── versions.tf
│ ├── variables.tf
│ ├── main.tf
│ └── outputs.tf
│
└── gcp/
├── versions.tf
├── variables.tf
├── main.tf
└── outputs.tf
docs/
└── week-8-iac-security.md
.github/
└── workflows/
└── iac-security.yml
```
## 安全范围
本项目暂不部署真实的云资源。
当前的工作流不需要 AWS 或 GCP 凭证。
目标是在部署前对 Terraform 代码进行静态扫描,并在合并前拦截高风险的基础设施即代码变更。
## AWS 安全基线
AWS Terraform 示例包含:
- S3 存储桶公共访问拦截
- S3 版本控制
- S3 KMS 加密
- S3 访问日志记录
- S3 生命周期配置
- S3 事件通知
- S3 跨区域复制
- 副本 S3 存储桶
- 存储桶所有权控制
- KMS 密钥轮换
- KMS 密钥策略定义
- 通用资源标签
## GCP 安全基线
GCP Terraform 示例包含:
- GCS 统一存储桶级访问
- GCS 公共访问预防
- GCS 版本控制
- GCS KMS 加密
- GCS 访问日志记录
- 专用审计日志存储桶
- 使用 Terraform 生命周期规则实现 KMS 密钥删除保护
- 专用服务账号占位符
- Artifact Registry 仓库占位符
- Artifact Registry 客户管理的加密密钥
- 通用资源标签
## CI/CD 流水线
GitHub Actions 工作流执行以下操作:
1. Terraform 格式检查
2. 针对 AWS Terraform 的 Checkov 扫描
3. 针对 GCP Terraform 的 Checkov 扫描
4. Checkov 报告上传
5. Checkov 安全门禁执行
当 Checkov 检测到未解决的 IaC 安全问题时,流水线将运行失败。
## 报告
生成的报告将作为 GitHub Actions artifacts 上传:
```
checkov-AWS-report
checkov-GCP-report
```
这些报告为以下方面提供证据:
- IaC 安全审查
- 云配置错误分类
- 作品集文档
- 面试演示
- 安全门禁验证
## Checkov 扫描结果
当前工作流状态:
```
Terraform Format Check: Passed
Checkov AWS Scan: Passed
Checkov GCP Scan: Passed
```
该项目已根据实际的 Checkov 扫描结果进行了更新,包括:
- AWS S3 跨区域复制
- AWS S3 事件通知
- AWS S3 生命周期配置
- AWS KMS 密钥策略定义
- GCP KMS 删除保护
- GCP 存储桶访问日志记录
- 使用客户管理密钥的 GCP Artifact Registry 加密
针对最终的 GCP 审计日志接收器存储桶,存在一个已记录的例外情况,以避免出现递归日志记录链。
## 文档
第 8 周的 IaC 安全报告可在此处获取:
```
docs/week-8-iac-security.md
```
## 当前状态
- 已添加 AWS Terraform 基线
- 已添加 GCP Terraform 基线
- 已添加 Checkov 工作流
- 已添加 Terraform 格式检查
- 已添加 IaC 安全报告
- Checkov AWS 扫描通过
- Checkov GCP 扫描通过
- 报告已作为 GitHub Actions artifacts 上传
- 无需云凭证
## 相关项目
本仓库是更广泛的 DevSecOps 作品集的一部分。
主应用安全流水线:
- [安全 DevSecOps 启动模板](https://github.com/AbdelazezMohamedAzez/secure-devsecops-starter)
## 后续改进
- 添加 Terraform modules
- 添加 Terraform plan 扫描
- 添加自定义 Checkov 策略
- 添加 OPA/Conftest 策略即代码示例
- 将此项目连接到安全的云部署工作流
标签:DevSecOps, ECS, IaC安全扫描, Terraform, 上游代理, 漏洞利用检测, 错误基检测, 防御加固, 静态代码分析