MansourMutlaq/aws-secure-multi-az-platform

GitHub: MansourMutlaq/aws-secure-multi-az-platform

使用 Terraform 构建的生产级安全多可用区 AWS 应用平台参考架构,演示高可用部署、安全控制和自动化 CI/CD 交付的最佳实践。

Stars: 0 | Forks: 0

# 使用 Terraform 构建的安全多可用区 AWS 应用平台 ![项目状态](https://img.shields.io/badge/Status-In%20Development-yellow) ![AWS](https://img.shields.io/badge/AWS-Cloud%20Infrastructure-FF9900?logo=amazonwebservices&logoColor=white) ![Terraform](https://img.shields.io/badge/Terraform-Infrastructure%20as%20Code-7B42BC?logo=terraform&logoColor=white) ![GitHub Actions](https://img.shields.io/badge/GitHub%20Actions-OIDC%20CI%2FCD-2088FF?logo=githubactions&logoColor=white) 一个面向生产环境的 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, 云原生架构, 请求拦截