iamwillsoto/aws-security-governance-sentinel
GitHub: iamwillsoto/aws-security-governance-sentinel
基于 CloudTrail 和 EventBridge 的事件驱动 AWS 安全治理平台,自动检测并修复 S3 公开访问违规,提供加密审计追踪与实时告警能力。
Stars: 0 | Forks: 0
# Operation Sentinel:AWS 安全治理平台
一个事件驱动的 AWS 安全治理系统,用于检测有风险的 S3 公开访问更改并自动进行修复。
## 问题
云环境的演进速度远超人工安全审查。一次简单的 `DeleteBucketPublicAccessBlock` 调用就可能在人工察觉之前暴露敏感存储。对于受监管的环境,延迟修复会带来运营风险、审计风险以及潜在的合规失败。
## 解决方案
Operation Sentinel 通过自动化的控制闭环弥补了这一差距:检测 → 修复 → 审计 → 告警 → 验证。
该系统检测有风险的 S3 公开访问更改,恢复所需的存储防护机制,记录结构化的审计证据,发送 SMS 告警,并通过 CloudWatch 提供运营可见性。基础架构通过 Terraform 部署,并在发布前通过 CI 安全检查进行验证。
## 架构

```
Risky S3 API call
→ CloudTrail captures the event
→ EventBridge matches the S3 risk pattern
→ Lambda restores S3 Block Public Access
→ DynamoDB records audit evidence
→ SNS sends an SMS alert
→ CloudWatch provides logs, alarms, and dashboard visibility
```
## 技术栈
| 层级 | 服务 |
|---|---|
| 检测 | AWS CloudTrail, Amazon EventBridge |
| 修复 | AWS Lambda |
| 存储治理 | Amazon S3 Block Public Access |
| 审计 | Amazon DynamoDB |
| 告警 | Amazon SNS SMS |
| 可观测性 | Amazon CloudWatch Logs, Dashboard, Alarms |
| 弹性 | Amazon SQS DLQs, EventBridge retry policy, Lambda async failure destination |
| 加密 | AWS KMS customer-managed key |
| 治理 | Terraform, GitHub Actions, Trivy |
## 检测
CloudTrail 捕获管理平面的 API 活动。EventBridge 匹配安全相关的 S3 事件:
- `DeleteBucketPublicAccessBlock` *(主要验证触发器)*
- Bucket 策略修改
- ACL 更改
启用 CloudTrail 日志文件验证,以支持底层日志流的审计完整性和防篡改检测。
## 修复
Lambda 响应器从 CloudTrail 事件中提取受影响的 bucket,并重新应用所有四个 S3 Block Public Access 控制:
```
BlockPublicAcls = True
IgnorePublicAcls = True
BlockPublicPolicy = True
RestrictPublicBuckets = True
```
执行角色被限定为仅具有以下权限:修复受监控的 bucket、写入审计记录、发布告警、使用客户托管的 KMS 密钥以及记录执行日志。
该函数还包含一个自触发防护机制,以降低在日后扩展事件模式时发生修复循环的风险。
## 可观测性
- **CloudWatch Logs** — 每次修复事件的 KMS 加密结构化执行输出
- **DynamoDB** — KMS 加密的审计记录,包含事件 ID、时间戳、bucket 名称、事件名称和修复结果
- **SNS SMS** — 触发修复时立即发送安全通知
- **CloudWatch Dashboard** — 集中查看修复活动
- **CloudWatch Alarms** — 监控 Lambda 错误、Lambda 限流和 DLQ 活动
## 弹性
Operation Sentinel 包含故障处理控制,确保修复事件不会无声无息地丢失。
- Lambda 异步失败目标将失败的修复事件路由到 SQS DLQ
- EventBridge 目标包含重试行为和专用的 SQS DLQ
- SQS DLQs 使用客户托管的 KMS 加密
- DynamoDB 时间点恢复保护修复审计记录
- 账户级别的 S3 Block Public Access 在受监控的 bucket 之外提供了预防性防护机制
## 加密治理
Operation Sentinel 使用客户托管的 AWS KMS 密钥来保护平台上的安全遥测数据和审计数据。
该 KMS 密钥用于:
- CloudTrail 日志加密
- S3 bucket 加密
- SNS 告警加密
- SQS DLQ 加密
- DynamoDB 审计表加密
- CloudWatch 日志组加密
这为系统的审计跟踪、告警路径、故障处理路径和修复证据提供了集中的加密治理。
## 治理
整个平台通过 Terraform 定义。GitHub Actions CI 工作流通过以下方式验证基础架构代码:
1. `terraform fmt` — 格式验证
2. `terraform init` + `terraform validate` — 配置完整性验证
3. `trivy` — 通过 `policies/trivy.yaml` 进行基础设施即代码安全扫描
Trivy 是 CI 工作流中活跃的基础设施即代码扫描器。
## 验证
通过在受监控的 bucket 上有意调用 `DeleteBucketPublicAccessBlock` 来验证修复工作流。
**结果:**
```
remediation_status = success
```
EventBridge 匹配到了 CloudTrail 事件,Lambda 恢复了所有四个 S3 Block Public Access 设置,DynamoDB 记录了结构化的审计条目,SNS 投递了 SMS 通知,CloudWatch 展示了修复活动。
加固后的验证证实,在添加了审计完整性、故障处理、客户托管的 KMS 加密、账户级别的 S3 防护机制和运营告警之后,该平台仍能继续成功进行修复。
## 安全设计原则
- 事件驱动检测 — 无轮询或计划检查
- 自动化修复 — 已知的违规行为无需人工干预即可纠正
- IAM 最小权限 — 为修复、审计、告警、日志记录和 KMS 使用设定严格的权限范围
- 结构化审计证据 — DynamoDB 记录保留修复结果
- 客户托管加密 — KMS 保护 CloudTrail 日志、S3 存储、SNS 告警、SQS DLQs、DynamoDB 审计记录和 CloudWatch 日志
- 审计完整性 — 启用 CloudTrail 日志文件验证
- 预防性防护机制 — 账户级别的 S3 Block Public Access
- 故障处理 — Lambda 异步失败目标和 EventBridge DLQ
- 运营监控 — 针对修复健康状况的 CloudWatch 告警
- 纯 IaC 基础架构 — 无手动控制台配置
- CI/CD 安全验证 — 发布前的 Terraform 验证和 Trivy 扫描
## 范围和局限性
此实现针对单个 AWS 账户和一个受监控的 S3 bucket。其范围被有意设定为一个专注的、可演示的安全控制,而不是全面的组织级推广。
此实现使用客户托管的 AWS KMS 密钥来加密 CloudTrail、S3、SNS、SQS、DynamoDB 和 CloudWatch Logs 中的安全遥测数据和审计数据。
Lambda 预留并发已被评估为一种运行时安全控制,但由于账户级别的并发配额限制而未能启用。在完成配额验证或提升配额之后,它仍然是一个推荐的生产环境增强项。
生产环境扩展路径包括 AWS Config 自定义规则、Security Hub 集成、IAM 权限提升检测、通过 AWS Organizations 进行的多账户部署、集中式日志归档账户以及组织级别的 SCP 防护机制。
## 仓库结构
```
aws-security-governance-sentinel/
├── .github/
│ └── workflows/
│ └── security-iac.yaml
├── architecture/
│ └── operation-sentinel-architecture.png
├── infra/
│ ├── cloudtrail.tf
│ ├── cloudwatch.tf
│ ├── dynamodb.tf
│ ├── eventbridge.tf
│ ├── iam.tf
│ ├── kms.tf
│ ├── lambda.tf
│ ├── outputs.tf
│ ├── providers.tf
│ ├── s3.tf
│ ├── sns.tf
│ ├── sqs.tf
│ ├── terraform.tfvars.example
│ └── variables.tf
├── lambda/
│ └── sentinel_remediator.py
├── policies/
│ │ └── terraform-security.rego
│ └── trivy.yaml
├── validation-screenshots/
├── .gitignore
├── .trivyignore
└── README.md
```
## 项目成果
Operation Sentinel 展示了一种使用原生云服务和基础设施即代码的强化 AWS 安全治理模式。
该项目验证了在以下方面的实践经验:
- 基于 CloudTrail 的安全事件检测
- EventBridge 驱动的自动化
- 基于 Lambda 的修复
- S3 公开访问治理
- IAM 最小权限
- 客户托管的 KMS 加密
- DynamoDB 审计日志记录和时间点恢复
- SNS SMS 告警
- KMS 加密的 SQS 死信队列
- CloudWatch 可观测性和告警
- Terraform 基础架构部署
- GitHub Actions CI 验证
- Trivy IaC 扫描
标签:AMSI绕过, AWS, CI/CD安全, CISA项目, CloudTrail, CloudWatch, DPI, DynamoDB, ECS, EventBridge, GitHub Actions, IaC扫描, KMS加密, Lambda, Llama, S3安全, SNS, Terraform, 事件驱动架构, 威胁检测, 安全合规, 安全治理, 操作审计, 日志告警, 网络代理, 自动修复, 自动笔记, 运维监控, 逆向工具, 防御绕过检测, 风险控制