Gemz-AACT/Highly-Available-Secure-Web-Application
GitHub: Gemz-AACT/Highly-Available-Secure-Web-Application
基于 Terraform 在 AWS 上构建高可用且安全的生产级 Web 应用架构,涵盖网络、安全、数据库、计算和监控各层的完整实践项目。
Stars: 2 | Forks: 0
# 使用 Terraform 在 AWS 上构建高可用且安全的 Web 应用程序
本项目演示了如何使用基础设施即代码来设计和部署高可用、安全且符合生产级标准的 AWS 架构。
## 为什么做这个项目
构建此项目旨在演示使用 AWS 和 Terraform 的真实云架构和安全实践。它侧重于设计符合 AWS Well-Architected Framework 原则的高可用、安全且可扩展的基础设施。
## 计划组件
- Application Load Balancer (ALB)
- Auto Scaling EC2 实例
- Amazon RDS(已加密,Multi-AZ)
- AWS WAF
- CloudWatch 监控
- IAM 角色
- Secrets Manager
## 监控与可观测性
为以下项目配置了 CloudWatch 警报:
EC2 CPU 利用率
ALB 不健康主机
ALB 5xx 错误
## 部署
要部署基础设施:
-terraform init
-terraform validate
-terraform plan
-terraform apply
要销毁基础设施:
-terraform destroy
## 项目文件
- `main.tf` - provider 和共享配置
- `vpc.tf` - 网络资源
- `security.tf` - 安全控制
- `database.tf` - RDS 和机密
- `compute.tf` - ALB 和 Auto Scaling
- `variables.tf` - 输入变量
- `outputs.tf` - 输出值
## 威胁模型 (STRIDE)
创建了一个基于 STRIDE 的威胁模型,用于识别潜在的安全风险和缓解策略。
[查看威胁模型](threat-model/stride-threat-model.md)
## 安全亮点
最小权限 IAM 角色和策略
使用公有子网和私有子网进行网络隔离
在 ALB 处终止 TLS (HTTPS)
已加密的 RDS 存储
使用 AWS Secrets Manager 安全存储机密
无硬编码凭证
## 成本与安全权衡
架构决策的细分,平衡了成本、性能和安全性。
[查看分析](analysis/cost-security-analysis.md)
## 架构概述
跨越 2 个可用区的 Multi-AZ 部署
Application Load Balancer (ALB) 用于流量分配
Auto Scaling Group 实现高可用性和容错能力
私有 EC2 实例(无公有 IP)
Amazon RDS PostgreSQL(Multi-AZ,已加密)
AWS WAF 用于 Web 应用程序保护
AWS Secrets Manager 用于安全凭证存储
CloudWatch 监控和警报
## 架构图

## 状态
第 1 步完成:Terraform 环境设置已启动。
第 2 步完成:添加了 Terraform provider 配置和网络基础,包括 VPC、公有/私有子网、Internet Gateway、NAT Gateway 和路由表。
第 3 步完成:添加了安全层,包括用于 EC2 的 IAM 角色和实例配置文件、用于 ALB/EC2/RDS 的安全组,以及具有托管规则和速率限制的 AWS WAF 保护。
第 4 步完成:添加了带有已加密 Multi-AZ PostgreSQL RDS 的数据库层、私有数据库子网组、Secrets Manager 凭证存储以及 Terraform 生成的密码管理,并使用了受支持的 RDS 引擎版本。
第 5 步完成:添加了带有 Application Load Balancer、目标组、HTTP 侦听器、启动模板、EC2 用户数据和跨私有应用程序子网的 Auto Scaling Group 的计算层。
第 6 步完成:添加了针对 EC2 和 ALB 健康状况的 CloudWatch 监控,以及使用 ACM 进行 TLS 终止的 HTTPS 侦听器支持。该基础设施现在包括网络、安全、数据库、计算和监控层。
第 7 步完成:设计并添加了 AWS 架构图,说明了完整的基础设施,包括 WAF、ALB、Auto Scaling EC2 实例、RDS (Multi-AZ)、Secrets Manager 和 CloudWatch 监控,突出了安全且高可用的部署。
第 8 步完成:开发了基于 STRIDE 的威胁模型,识别了 AWS 架构中的关键安全风险和缓解策略,包括 IAM、WAF、加密和网络隔离。
第 9 步完成:记录了关键的成本和安全权衡,分析了诸如 Multi-AZ RDS、NAT Gateway 使用、Auto Scaling、WAF 保护和加密策略等决策。
第 10 步完成:在实时环境中成功部署并验证了 AWS 基础设施,确认了 ALB 连接、EC2 健康、RDS 可用性、Secrets Manager 集成和 CloudWatch 监控。
## 关键学习
设计了生产级 AWS 架构
使用 Terraform 实施了基础设施即代码
调试了真实部署问题(例如,RDS 引擎兼容性)
应用了云安全最佳实践
构建了高可用且容错的系统
## 状态
项目已完成并在 AWS 中成功部署。基础设施已验证并销毁以优化成本。
标签:ALB, Amazon RDS, AppImage, Auto Scaling, AWS, AWS WAF, CloudWatch, DPI, EC2, ECS, HTTPS, IaC, IAM, Multi-AZ, Secrets Manager, STRIDE威胁建模, Terraform, TLS终止, Web应用防火墙, 可扩展性, 安全架构, 应用负载均衡器, 成本优化, 数据库加密, 最小权限原则, 测试用例, 监控告警, 私有子网, 系统运维, 网络隔离, 自动伸缩, 高可用架构