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 监控和警报 ## 架构图 ![架构图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/f0c3fa0b88123644.png) ## 状态 第 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应用防火墙, 可扩展性, 安全架构, 应用负载均衡器, 成本优化, 数据库加密, 最小权限原则, 测试用例, 监控告警, 私有子网, 系统运维, 网络隔离, 自动伸缩, 高可用架构