enforza/landing-zones
GitHub: enforza/landing-zones
Enforza 提供了一套开箱即用的 AWS 和 Azure 云落地区模板,通过 Terraform 和 CloudFormation 快速部署以 Enforza 防火墙为核心的 hub-spoke 周边网络架构。
Stars: 0 | Forks: 0
# Enforza 落地 Zone
即插即用的参考架构,将 [Enforza](https://enforza.io)
防火墙和安全 NAT 网关置于您的云网络的中心。
Enforza 是一个网络虚拟设备 (NVA):位于您自己账户中的 Linux 虚拟机,负责为出站流量进行源 NAT,并在流量出境时应用 Layer 7 出站策略。
这些模板能正确构建周边网络,确保设备实际正常运行,而这正是大多数人在首次尝试时最容易出错的地方。
这里的所有内容都可以在您自己的云账户中[基于 MIT 许可证](LICENSE) 免费使用。您需要为防火墙本身获取 Enforza 许可证。
## 选择规格
### AWS
| 规格 | 模式 | 架构 | 适用场景 |
|------|---------|-------|-------------|
| **S** | [`aws/*/01-single-gateway`](aws) | 一个 VPC、一个防火墙、两个通过其路由的私有子网 | 开发、测试,或小型的单 VPC 生产环境 |
| **M** | [`aws/*/02-dual-gateway-az-failover`](aws) | 跨两个可用区的两个防火墙,并在故障时自动切换路由 | 一个需要基本弹性但不需要 Transit Gateway 的生产 VPC |
| **L** | [`aws/*/03-tgw-centralized-egress`](aws) | Transit Gateway 中心、带有每个可用区一个防火墙的检查 VPC、三个工作负载 VPC | 多 VPC 或多账户环境,需要一个统一的经过检查的出口边缘 |
| **XL** | [`aws/*/04-gwlb`](aws) | Gateway Load Balancer,通过 GENEVE 在跨 3 个可用区的集群中进行透明检查 | 横向扩展、按可用区隔离,或者运行多租户的 MSP |
每个 AWS 模式都**同时提供 Terraform 和 CloudFormation** 版本,并根据您将引擎部署到实例的方式分为**两种风格**。有关详细说明,请参阅 [`aws/README.md`](aws/README.md)。
模式 02 特意被标记为基础、非生产级别的弹性。它基于 EC2 状态检查进行故障转移,这能检测到已停止的实例,但无法检测到设备内部的性能降级,并且故障转移时会重置传输中的连接。如果您需要生产级别的高可用性,请使用 GWLB 模式。
### Azure
| 模式 | 架构 | 适用场景 |
|---------|-------|-------------|
| [`azure/simple-single-az`](azure/simple-single-az) | 一个网关虚拟机、VNet、子网和 NSG | 开发、测试、小型部署 |
| [`azure/ha-multi-az`](azure/ha-multi-az) | 跨可用区的两个网关虚拟机,位于内部负载均衡器之后 | 需要高可用性的生产环境 |
| [`azure/ha-multi-az-with-dnat`](azure/ha-multi-az-with-dnat) | 在上述基础之上,增加一个用于入站 DNAT 的外部负载均衡器 | 同时需要入站发布服务的生产环境 |
请参阅 [`azure/README.md`](azure/README.md)。
如果您已经拥有 Azure 中心并且只想将设备放入其中,请直接从
[Azure Marketplace](https://enforza.io/azure-marketplace/) 进行部署。
## 开始前的准备工作
1. 一个云账户,以及能够创建网络和计算资源的凭证。
2. Terraform 1.5 或更高版本,如果您倾向于使用 CloudFormation,则需要 AWS CLI。
3. 一个 Enforza 账户。然后 **二选一**:
- 从控制台获取**每个防火墙对应的部署密钥**(在 Onboard Firewall 下,然后选择 Deployment Keys)。密钥是**一次性使用**的,因此双网关 HA 模式需要两个不同的密钥;**或者**
- 一个 **AWS Marketplace 订阅**,如果您更希望启动 Enforza AMI 并通过账户和实例 ID 进行认领。
## 部署
```
# Terraform,从任意 pattern 目录
terraform init
terraform apply -var deployment_key=efz_xxxxxxxxxxxx
# CloudFormation,仅限 AWS patterns
aws cloudformation deploy \
--template-file cloudformation/template.yaml \
--stack-name enforza-landing-zone \
--parameter-overrides DeploymentKey=efz_xxxxxxxxxxxx \
--capabilities CAPABILITY_NAMED_IAM
```
每个模式目录都有自己的 README,包含架构图、数据包路径、确切的部署和销毁命令以及设计原理。
## 注册的工作原理
每个模式都会启动一个原生基础镜像,并在首次启动时获取公共安装程序,然后向您的账户注册引擎:
```
curl -fsSL https://dl.neon.efz.io/install.sh | bash -s -- --regkey="" --name=""
```
随后,该防火墙将出现在控制台中,您可以在此处为其附加策略。部署密钥是机密信息:请勿将 `terraform.tfvars` 提交到版本控制系统中。Terraform 变量已被标记为 `sensitive`,因此密钥不会在执行计划 (plan) 输出中显示。
## 这些模板的共同点
- **禁用源和目标检查**(适用于每个防火墙网络接口),或者在 Azure 上启用 IP 转发。转发设备的作用就是处理发送给其他主机的数据包,因此这是最重要的要求,并且在每次出现时都附有注释。
- 每个防火墙都有一个**稳定的公网地址**,因此其出站源 NAT 标识不会发生变动。
- 工作负载子网将其默认路由指向防火墙,或者指向转发至该防火墙的 Transit Gateway 或负载均衡器。
## 关于成本的说明
Enforza 采用按防火墙统一定价,**没有按 GB 计算的数据处理费用**这也是在流量稍大的情况下,这些架构的实际成本低于按量计费的云原生等效方案的主要原因。您仍需向您的云服务商支付这些模板所创建虚拟机的费用,以及周边网络管道(例如 Transit Gateway 连接、负载均衡器使用时长和数据传输)的费用。我们无法免除这些费用,并且 README 中已明确说明了哪些费用需要您自行承担。
最新定价请见 [enforza.io/pricing](https://enforza.io/pricing/),如果您想自行计算,这里还有一个[成本节约计算器](https://enforza.io/savings-calculator/)。
## 状态与支持
这些是**参考架构**。它们已经过验证(`terraform validate` 和 `terraform fmt` 通过;CloudFormation 模板通过了 `aws cloudformation validate-template`),但在投入生产使用之前,请根据您自身的安全标准审查 CIDR、实例规格和安全组范围。
欢迎提交 Issue 和 Pull Request。如有产品问题或需要部署审查,请通过 [enforza.io/contact](https://enforza.io/contact/) 联系我们。
标签:CloudFormation, ECS, Terraform, 基础架构即代码, 网络架构, 防火墙