jason-victor1/aws-cloud-security-guardrails
GitHub: jason-victor1/aws-cloud-security-guardrails
一套以只读评估和验证优先为核心的 AWS 云安全护栏工具包,用于安全态势审查、发现结果标准化及修复报告生成。
Stars: 0 | Forks: 0
# AWS 云安全护栏
验证优先的 AWS 安全评估工具包,用于只读安全态势审查、发现结果标准化、修复报告、执行摘要以及 CI 强制的护栏验证。
## 项目状态
| 领域 | 状态 |
|---|---|
| 达到作品集标准的 V1 | 已完成 |
| 模拟演示工作流 | 已完成 |
| 只读实验室验证 | 已完成 |
| 本地评估编排器 | 已完成 |
| 模拟编排器模式 | 已完成 |
| CI 强制的模拟编排器验证 | 已完成 |
| 自动化修复 | V1 不包含 |
本仓库旨在作为一个达到作品集标准的云安全、DevSecOps 和安全自动化项目。它侧重于安全评估、证据处理和可重复的报告,而不是生产环境的修复。
## 项目功能
AWS 云安全护栏展示了识别和降低常见 AWS 安全风险的实用工作流:
- 长期有效的 IAM 访问密钥
- 高风险的公开安全组入站规则
- 公共 S3 暴露路径
- 薄弱或不完整的 CloudTrail 覆盖范围
- 薄弱的 CI/CD 和代码库护栏
- 缺乏用于修复和审计就绪的证据追踪
该项目将评估结果转换为标准化的发现结果、修复待办工件、修复工单 JSON 和执行摘要。
## 快速开始:模拟模式
模拟模式无需 AWS 凭证或实时 AWS API 调用即可验证下游工作流。
```
scripts/run-guardrails-assessment.sh \
--mode synthetic \
--output-dir ~/aws-guardrails-lab-evidence/synthetic-orchestrator-test
```
模拟模式使用来自 `samples/raw/` 的示例数据,将生成的工件写入到仓库之外,验证 JSON 输出,运行标准化并生成报告。
## 实时实验室模式
实时模式专为受控的只读 AWS 实验室验证而设计。
```
scripts/run-guardrails-assessment.sh \
--profile guardrails-readonly \
--output-dir ~/aws-guardrails-lab-evidence/orchestrated-run \
--region us-east-1
```
实时模式需要显式的 AWS profile,并将原始输出、标准化的发现结果和生成的报告写入到仓库之外。
## 功能特性
| 功能 | 实现 |
|---|---|
| IAM 访问密钥时效审查 | `automation/iam-key-age-check.py` |
| 安全组暴露审查 | `automation/security-group-risk-check.py` |
| 公共 S3 安全态势审查 | `automation/public-s3-check.py` |
| CloudTrail 覆盖范围审查 | `automation/cloudtrail-coverage-check.py` |
| 发现结果标准化 | `automation/finding-normalizer.py` |
| 修复待办事项生成 | `automation/remediation-ticket-generator.py` |
| 执行摘要生成 | `automation/executive-summary-generator.py` |
| 完整的本地编排 | `scripts/run-guardrails-assessment.sh` |
| 模拟数据验证 | `samples/raw/` 以及模拟编排器模式 |
| Terraform 护栏基线 | `terraform/` |
| CI/CD 验证 | `.github/workflows/` |
| 脱敏后的证据笔记 | `evidence/` |
## 验证与 CI 控制
主分支受必需的 GitHub Actions 检查保护:
| 检查 | 目的 |
|---|---|
| Terraform fmt、validate 和 IaC 扫描 | 验证 Terraform 并使用 Checkov 扫描 IaC |
| Gitleaks 密钥扫描 | 检测已提交的密钥 |
| Python 自动化语法检查 | 编译自动化脚本 |
| 示例 JSON 语法检查 | 验证示例 JSON 数据和生成的 JSON |
| 模拟演示重新生成偏差检查 | 确认演示输出可以一致地重新生成 |
| 本地工作流处理器测试 | 运行本地单元测试 |
| 模拟编排器验证 | 在 CI 中运行完整的模拟编排器流水线 |
## 安全边界
本项目专注于评估。V1 版本不执行自动化修复。
请勿提交:
- AWS 凭证
- AWS 账户 ID
- 真实的 ARN
- 来自真实账户的 IAM 名称
- 来自真实账户的 bucket 名称
- 安全组 ID
- VPC 或子网 ID
- CloudTrail ARN
- 原始的实时实验室 JSON 输出
- 标准化的实时实验室发现结果
- 生成的实时实验室报告
- Terraform 状态
- AWS CLI 凭证文件
- `.env` 文件
## 证据与文档
| 资源 | 目的 |
|---|---|
| [`docs/iam/read-only-assessment-policy.md`](docs/iam/read-only-assessment-policy.md) | 只读 IAM 策略指南 |
| [`docs/iam/read-only-assessment-policy.json`](docs/iam/read-only-assessment-policy.json) | 只读评估策略示例 |
| [`docs/workflows/live-aws-lab-validation.md`](docs/workflows/live-aws-lab-validation.md) | 实时实验室验证工作流 |
| [`evidence/live-lab-validation/`](evidence/live-lab-validation/) | 脱敏后的实时实验室验证笔记 |
| [`evidence/live-lab-reporting/`](evidence/live-lab-reporting/) | 脱敏后的实时实验室报告笔记 |
| [`docs/runbooks/credential-exposure-response.md`](docs/runbooks/credential-exposure-response.md) | 凭证泄露响应操作手册 |
## 目标用例
本项目对应于实际的云安全和 DevSecOps 工作:
- AWS 云安全加固
- IAM 和凭证风险审查
- 公共暴露面缩减
- 云日志记录和审计就绪性验证
- CI/CD 安全护栏
- 安全自动化报告
- 承包商/顾问证据包
## 仓库结构
```
aws-cloud-security-guardrails/
.github/workflows/
automation/
diagrams/
docs/
evidence/
samples/
scripts/
terraform/
tests/
README.md
```
## 自动化
本项目包含仅用于检测的自动化脚本。
| 脚本 | 目的 |
|---|---|
| [automation/iam-key-age-check.py](automation/iam-key-age-check.py) | 审查 IAM 用户访问密钥的使用时限,并标记长期有效的密钥,且不会打印出秘密访问密钥的值。 |
| [automation/security-group-risk-check.py](automation/security-group-risk-check.py) | 审查 AWS 安全组入站规则,并标记有风险的公共暴露模式,例如公共 SSH、RDP、数据库、Kubernetes API、Redis 以及过宽的端口范围。 |
| [automation/public-s3-check.py](automation/public-s3-check.py) | 审查 S3 bucket 的公共暴露态势,包括账户级别和 bucket 级别的公共访问阻止 (Public Access Block)、公共 bucket 策略状态以及公共 ACL 授权。 |
| [automation/cloudtrail-coverage-check.py](automation/cloudtrail-coverage-check.py) | 审查 AWS CloudTrail 日志记录覆盖范围,包括多区域状态、日志记录状态、日志文件验证、KMS 元数据、管理事件选择器以及近期事件历史记录查询的可用性。 |
| [automation/finding-normalizer.py](automation/finding-normalizer.py) | 将来自自动化脚本的 JSON 输出标准化为一致的发现结果 schema,用于证据收集、报告、修复待办事项创建以及未来的工单生成。 |
| [automation/remediation-ticket-generator.py](automation/remediation-ticket-generator.py) | 将标准化的发现结果转换为结构化的 Markdown 或 JSON 修复工单,用于待办事项创建和审计证据工作流。 |
| [automation/executive-summary-generator.py](automation/executive-summary-generator.py) | 从标准化的发现结果生成客户风格的 Markdown 执行摘要,包括严重程度计数、主要风险、受影响的资源类型、修复主题以及建议的后续行动。 |
## 本地测试
本地工作流处理器测试可在 [tests/](tests/) 下找到。
运行:
```
python3 -m unittest discover -s tests -p "test_*.py"
```
## 只读评估策略
提供了一个只读 IAM 评估策略示例,用于在无需管理员权限的情况下运行 AWS 安全态势审查脚本:
- [docs/iam/read-only-assessment-policy.md](docs/iam/read-only-assessment-policy.md)
- [docs/iam/read-only-assessment-policy.json](docs/iam/read-only-assessment-policy.json)
该策略旨在用于只读脚本的实验室和作品集验证。它不授予创建、修改、删除、部署或修复 AWS 资源的权限。
## 操作手册
本项目包含将护栏检测与响应工作流相连接的运维操作手册。
| 操作手册 | 目的 |
|---|---|
| [docs/runbooks/credential-exposure-response.md](docs/runbooks/credential-exposure-response.md) | 定义针对疑似硬编码的机密、API 密钥、AWS 凭证、GitHub token 以及相关凭证泄露事件的响应工作流。 |
## 模拟演示工作流
本仓库包含模拟示例数据,演示了在无需 AWS 凭证或真实账户数据的情况下的端到端本地工作流。
```
samples/raw/
→ automation/finding-normalizer.py
→ samples/normalized/normalized-findings.json
→ automation/remediation-ticket-generator.py
→ samples/reports/remediation-backlog.md
→ automation/executive-summary-generator.py
→ samples/reports/executive-summary.md
```
完整的模拟演示工作流可以通过以下命令重新生成:
```
./scripts/regenerate-demo-outputs.sh
```
## 本地评估编排器
提供了一个本地编排器,用于通过单个命令运行完整的 AWS 护栏评估流水线:
- [scripts/run-guardrails-assessment.sh](scripts/run-guardrails-assessment.sh)
示例:
```
scripts/run-guardrails-assessment.sh \
--profile guardrails-readonly \
--output-dir ~/aws-guardrails-lab-evidence/orchestrated-run \
--region us-east-1
```
### 模拟编排器模式
本地评估编排器还支持模拟模式,用于在无需 AWS 凭证或 AWS API 调用的情况下验证下游工作流。
示例:
```
scripts/run-guardrails-assessment.sh \
--mode synthetic \
--output-dir ~/aws-guardrails-lab-evidence/synthetic-orchestrator-test
```
模拟模式使用 `samples/raw/` 下的现有示例数据,将生成的工件写入到仓库之外,运行标准化和报告,并输出脱敏后的工作流级别摘要。
实时模式仍然可用于受控的只读 AWS 实验室验证:
```
scripts/run-guardrails-assessment.sh \
--profile guardrails-readonly \
--output-dir ~/aws-guardrails-lab-evidence/orchestrated-run \
--region us-east-1
```
## 项目阶段
### 第 0 阶段:文档框架
创建项目章程、架构、威胁模型、控制矩阵、评估方法论和修复模板。
### 第 1 阶段:Terraform 安全基线
为 CloudTrail、GuardDuty、Security Hub、AWS Config、S3 公共访问阻止、IAM 最小权限示例和预算/异常警报构建可重用的 AWS 护栏模块。
### 第 2 阶段:CI/CD 安全检查
添加用于 Terraform 验证、IaC 扫描和机密扫描的 GitHub Actions 工作流。
### 第 3 阶段:Python 评估脚本
为 IAM 密钥时效、公共 S3 暴露、有风险的安全组和标准化发现结果创建小型审查脚本。
### 第 4 阶段:证据与报告
生成示例发现结果、修复待办事项、执行摘要和证据核对清单。
## 作品集价值
本项目展示了从云安全发现结果推进到自动化护栏、修复证据和业务可读报告的能力。
## 实时 AWS 实验室验证
提供了一个实时实验室验证指南,用于针对受控的 AWS 实验室账户安全地运行只读 AWS 安全态势审查脚本:
- [`docs/workflows/live-aws-lab-validation.md`](docs/workflows/live-aws-lab-validation.md)
该指南涵盖了运行前的安全检查、只读 profile 验证、脚本执行顺序、原始输出处理、脱敏规则、脱敏后的证据以及无变更确认。
标签:AWS, Cutter, DevSecOps, DPI, 上游代理, 只读评估, 合规报告, 安全基线检查, 逆向工具