MansourMutlaq/aws-secure-multi-az-platform
GitHub: MansourMutlaq/aws-secure-multi-az-platform
使用 Terraform 构建的生产级安全多可用区 AWS 应用平台参考架构,演示高可用部署、安全控制和自动化 CI/CD 交付的最佳实践。
Stars: 0 | Forks: 0
# 使用 Terraform 构建的安全多可用区 AWS 应用平台




一个面向生产环境的 AWS 参考平台,旨在演示安全的云架构、可重用的基础设施即代码、高可用性、可观测性、联合 CI/CD 以及成本感知运营。
应用层特意保持轻量化,以便项目能够专注于基础设施架构、安全控制、自动化交付、验证和运维准备状态。
## 项目状态
- **状态:** 开发中
- **开始时间:** 2026 年 7 月
- **目标窗口:** 2026 年 8 月
- **初始环境:** 成本优化的开发部署
- **生产模式:** 已记录且可配置,但不会持续运行
## 计划架构
- 跨越两个可用区的多可用区 VPC
- 用于 Application Load Balancer 和受控互联网出口的公有子网
- 用于 ECS Fargate 任务的私有应用子网
- 用于 Amazon RDS PostgreSQL 的隔离数据库子网
- 用于存储 Docker 镜像的 Amazon ECR
- 用于存储应用和数据库密钥的 AWS Secrets Manager
- AWS KMS 加密控制
- 保护公共入口点的 AWS WAF 托管规则
- CloudWatch 日志、指标、告警和仪表板
- Amazon SNS 通知
- 用于网络级可见性的 VPC Flow Logs
- 启用版本控制和原生状态锁定的加密 S3 Terraform 状态
## 安全架构
流量通过安全组链式进行限制:
```
Internet
|
v
AWS WAF
|
v
Application Load Balancer
|
| Application port only
v
ECS Fargate Service
|
| PostgreSQL 5432 only
v
Amazon RDS PostgreSQL
```
核心控制包括:
- ECS 任务没有公有 IP 地址
- 非公有的 RDS 数据库
- 最小权限 IAM 角色
- 分离的 ECS 任务执行角色和应用角色
- 通过 AWS OIDC 获取的临时 GitHub Actions 凭证
- 不在 GitHub 中存储长期的 AWS 访问密钥
- 对状态、密钥、日志和数据库存储进行加密
- 显式的日志保留和拆除控制
## Terraform 设计
基础设施将被组织成可重用的模块:
```
.
├── app/
├── bootstrap/
├── environments/
│ ├── dev/
│ └── prod/
├── modules/
│ ├── network/
│ ├── security/
│ ├── load-balancer/
│ ├── ecs/
│ ├── database/
│ ├── observability/
│ └── budget/
├── .github/
│ └── workflows/
├── docs/
├── evidence/
└── README.md
```
开发和生产配置将暴露不同的成本、可用性、备份、扩展和删除保护参数。
## CI/CD 和验证控制
GitHub Actions 将执行:
- `terraform fmt -check`
- `terraform init`
- `terraform validate`
- TFLint 静态分析
- Checkov 基础设施安全扫描
- Terraform plan 生成
- 依赖和配置验证
- 通过 `workflow_dispatch` 进行受控的手动部署
GitHub Actions 将通过 OIDC 对 AWS 进行身份验证,并使用临时凭证代入 IAM 角色。
## 交付里程碑
- [x] 明确项目范围和目标架构
- [ ] Terraform 后端引导
- [ ] 多可用区网络模块
- [ ] 安全组和 IAM 角色
- [ ] ECR 和 Docker 应用打包
- [ ] Application Load Balancer
- [ ] ECS Fargate 服务
- [ ] Amazon RDS PostgreSQL
- [ ] Secrets Manager 和 KMS 集成
- [ ] CloudWatch、SNS 和 VPC Flow Logs
- [ ] AWS WAF 控制
- [ ] GitHub Actions OIDC 工作流
- [ ] 实时 AWS 部署验证
- [ ] 故障测试和运维取证
- [ ] 记录拆除流程和最终成本审查
## 成本控制
开发环境将使用成本感知默认设置。更高可用性的生产选项将保持可配置状态,而无需生产环境持续运行。
控制措施包括:
- AWS Budgets
- 较短的默认日志保留期
- 可配置的 ECS 任务数
- 可配置的 NAT Gateway 策略
- 开发环境的小型数据库配置
- 记录在案的 `terraform destroy` 流程
- 拆除前的取证收集
## 计划技术
AWS VPC · Terraform · ECS Fargate · Application Load Balancer · Amazon RDS PostgreSQL · Amazon ECR · Docker · IAM · AWS KMS · Secrets Manager · AWS WAF · CloudWatch · SNS · VPC Flow Logs · S3 远程状态 · GitHub Actions OIDC · TFLint · Checkov
## 当前限制
- 项目目前正在积极开发中。
- 首次部署以成本优化的开发环境为目标。
- 多区域弹性不在初始范围内。
- 生产建议将被记录在案,但并非所有生产资源都会保持持续部署。
标签:AWS, DPI, ECS, ECS Fargate, Terraform, 云原生架构, 请求拦截