scynesthesia/aws-infrastructure-labs
GitHub: scynesthesia/aws-infrastructure-labs
通过 Terraform 部署多可用区 AWS VPC 多层网络架构的实验项目,用于学习云基础设施设计、安全隔离与故障验证。
Stars: 0 | Forks: 0
# AWS 基础设施与安全实验室
该项目使用公有子网和私有子网实现了多可用区(multi-AZ)AWS VPC 架构。
它包含:
- 跨 2 个可用区划分的 VPC 分段子网
- 用于控制连接的 Internet Gateway 和 NAT Gateways
- 部署在私有子网中的 EC2 实例
- 处理公有流量的 Application Load Balancer
- 实施访问控制的 Security Groups 和路由表
该环境使用 Terraform 部署,并通过测试连通性、路由行为、访问限制和人为故障场景进行了验证。
## 已验证的内容
- 验证了私有 EC2 实例可通过 NAT Gateway 进行出站互联网访问
- 确认无法直接对私有实例进行入站访问
- 测试了通过 Application Load Balancer 进行的 HTTP 访问
- 通过路由表验证了子网间的路由
## 项目 1:具有公有和私有子网的多可用区 VPC 架构
跨多个可用区实现了多层 AWS 网络架构。
- 使用子网分段隔离公有和私有工作负载
- 通过 Application Load Balancer 限制入站流量
- 使用 NAT Gateways 控制私有实例的出站访问
- 使用 Security Groups 和路由表实施分层安全
此设置用于模拟真实的云网络和安全模式,重点关注隔离性、受控访问和弹性。

### 架构目标
- 跨两个可用区部署资源以提高弹性
- 使用子网分段隔离面向公众的工作负载和私有工作负载
- 仅允许通过面向公众的 Application Load Balancer 接收入站应用程序流量
- 允许私有实例通过 NAT Gateways 进行出站互联网访问
- 使用 Security Groups 和路由表隔离实施分层访问控制
### 关键组件
- 1 个 VPC (`10.0.0.0/16`)
- 2 个公有子网
- 2 个私有子网
- 1 个 Internet Gateway
- 2 个 NAT Gateways
- 1 个 Application Load Balancer
- 2 个 EC2 应用程序实例
- 公有和私有路由表
### 流量走向
- 互联网流量通过 Internet Gateway 进入
- Application Load Balancer 接收公有的 HTTP 流量
- ALB 将请求转发到私有子网中的 EC2 应用程序实例
- 私有实例使用 NAT Gateways 进行出站互联网访问,而无需直接暴露
### 安全考量
- EC2 实例放置在私有子网中,没有直接的公有 IP 暴露
- 公众访问仅限于负载均衡器层
- Security Groups 用于将应用程序流量仅限制于 ALB
- 路由表将公有入口流量与私有出站流量分离开来
### Terraform 实现
该项目还包括图中所示架构的 Terraform 实现。Terraform 配置旨在将基础设施建模为代码,包括:
- VPC 和子网的创建
- Internet Gateway 和 NAT Gateways
- 公有和私有路由表
- Application Load Balancer
- EC2 应用程序实例
- Security Groups 和 target group 配置
### 如何运行
此实验室旨在临时部署,用于测试和学习目的。
1. `terraform init`
初始化 Terraform 并下载 AWS provider。
2. `terraform plan`
审查执行计划并验证要创建的资源。
3. `terraform apply`
将实验室基础设施部署到 AWS 中。
4. `terraform destroy`
测试完成后删除所有资源,以避免不必要的成本。
### 备注
这是一个为架构实践、安全设计审查和基础设施即代码(IaC)学习而创建的实验室环境。它并非作为可用于生产环境的部署而提供。
## 未来改进
- 带有 ACM 证书的 HTTPS 监听器
- 用于应用程序实例的 Auto Scaling Group
- CloudWatch 告警和日志扩展
- VPC Flow Logs
- AWS WAF 集成
- 更加模块化的 Terraform 结构
## 故障测试
为了验证网络隔离和安全控制,我们引入并测试了人为的错误配置。
### NAT Gateway 移除测试
- 从私有子网路由表中移除了指向 NAT Gateway 的默认路由 (`0.0.0.0/0`)
- 结果:私有 EC2 实例失去了出站互联网连接
- 使用 `curl` 进行了验证(请求超时)
### Security Group 限制测试
- 从 Application Load Balancer 的 Security Group 中移除了 HTTP(端口 80)入站规则
- 结果:应用程序无法从互联网访问
- 通过浏览器进行了验证(无响应)
这些测试证实出站访问依赖于 NAT 配置,而入站访问受到 Security Groups 的严格控制。
标签:AWS, DPI, ECS, Streamlit, Terraform, VPC, 云计算, 网络架构, 规则引擎, 访问控制