ali-azure/azure-secure-network-architecture
GitHub: ali-azure/azure-secure-network-architecture
该项目展示了一种安全的 Azure 三层网络参考架构,集成了 NSG、Bastion、Azure Firewall 和 Network Watcher,旨在演示企业级云网络分段与安全控制的最佳实践。
Stars: 0 | Forks: 0
# 安全的多层网络架构





一种安全的 3 层 Azure 网络架构,实现了网络分段、最小权限访问、Azure Bastion、Azure Firewall 和 Network Watcher 诊断。
作为我的 Azure AZ-104 和 AZ-500 云安全作品集的一部分而构建。
## 概述
本项目演示了如何使用安全最佳实践,在 Microsoft Azure 中设计和部署安全的企业级网络架构。
该环境实现了:
* 多层网络分段
* 网络安全组 (NSG)
* Azure Bastion 安全管理
* Azure Firewall 流量检查
* 路由表和强制隧道
* Network Watcher 诊断和监控
* 用于网络可见性的 Flow Logs
本项目的重点是构建安全的 Azure 网络,并验证安全控制、路由和连接行为是否符合预期。
## 架构组件
| 组件 | 名称 | 地址 / 详情 |
| -------------------- | ----------------------------- | ----------------- |
| Resource Group | `rg-network-project` | 项目资源 |
| 区域 | `Sweden Central` | Azure 区域 |
| Virtual Network | `vnet-secure-architecture` | `10.0.0.0/16` |
| Web 层子网 | `snet-web` | `10.0.1.0/24` |
| App 层子网 | `snet-app` | `10.0.2.0/24` |
| 数据库层子网 | `snet-db` | `10.0.3.0/24` |
| Bastion 子网 | `AzureBastionSubnet` | `10.0.4.0/26` |
| Firewall 子网 | `AzureFirewallSubnet` | `10.0.5.0/26` |
| Azure Firewall | `fw-secure-architecture` | `10.0.5.4` |
| Azure Bastion | `bastion-secure-architecture` | 安全的 SSH 访问 |

## 安全控制
### 网络安全组 (NSG)
使用网络安全组来强制执行各网络层之间的最小权限通信。

* Internet 流量被限制在 Web 层。
* 应用流量仅限于所需端口。
* 数据库访问仅限于 App 层。
* 默认情况下拦截不必要的流量。
### Azure 防火墙

* 集中式流量检查和路由。
* 专用的 Azure Firewall 子网部署。
* 出站流量通过 UDR 强制经过防火墙。
### Azure Bastion
部署 Azure Bastion 是为了提供安全的、基于浏览器的管理,而无需向 Internet 暴露 SSH 端口。


* 安全的基于浏览器的 VM 访问。
* 无需公共 IP 地址。
* 减少攻击面。
### 路由表 (UDR)

* 默认路由 (`0.0.0.0/0`) 通过 Azure Firewall 重定向。
* 为工作负载子网启用强制隧道。
## NSG 规则
### `nsg-web` (Web 层)
| 方向 | 端口 | 源 | 目标 | 操作 |
| --------- | ------- | ------------ | ------------- | ------ |
| 入站 | 80, 443 | Internet | `10.0.1.0/24` | 允许 |
| 出站 | 8080 | `10.0.1.0/24`| `10.0.2.0/24` | 允许 |
### `nsg-app` (App 层)
| 方向 | 端口 | 源 | 目标 | 操作 |
| --------- | ---- | ------------ | ------------- | ------ |
| 入站 | 8080 | `10.0.1.0/24`| `10.0.2.0/24` | 允许 |
| 出站 | 1433 | `10.0.2.0/24`| `10.0.3.0/24` | 允许 |
### `nsg-db` (数据库层)
| 方向 | 端口 | 源 | 目标 | 操作 |
| --------- | ---- | ------------ | ------------- | ------ |
| 入站 | 1433 | `10.0.2.0/24`| `10.0.3.0/24` | 允许 |
| 入站 | Any | Internet | `10.0.3.0/24` | 拒绝 |
## 虚拟机
| VM | 层 | OS |
| ------------- | -------- | ----- |
| `vm-web-test` | Web 层 | Linux |
| `vm-app-test` | App 层 | Linux |
这些虚拟机用于验证 NSG 规则、路由以及通过 Azure Bastion 的安全访问。
## 验证与测试
使用 Azure Network Watcher 验证安全控制并排查网络行为。
### IP 流验证
验证了 NSG 规则是否正确允许和拒绝了各网络层之间的流量。
### 下一跳验证
下一跳诊断确认发往 Internet 的流量已通过 Azure Firewall (`10.0.5.4`) 路由。

### 已执行的诊断
* IP 流验证
* 有效安全规则
* 连接故障排除
* NSG Flow Logs
* 下一跳分析
## 挑战与实际说明
* 由于订阅中的 vCPU 配额限制,数据库 VM 的部署被推迟。
* 尽管没有部署数据库 VM,但数据库层已经通过子网隔离、NSG 规则和防火墙路由进行了全面设计。
* 部署后,使用 Azure Network Watcher 诊断来验证路由、连接和安全控制。
## 我学到了什么
* 子网分段如何减少攻击面。
* NSG 如何控制各层之间的东西向流量。
* Azure Firewall 和路由表如何协同工作。
* 为什么 Azure Bastion 比向 Internet 暴露 SSH 更安全。
* Azure Network Watcher 如何帮助验证和排查连接问题。
## 涵盖的 AZ-104 目标
* 配置和管理虚拟网络
* 配置网络安全组
* 配置 Azure Firewall
* 配置路由
* 部署和管理虚拟机
* 监控和排查连接问题
## 涵盖的 AZ-500 目标
* 保护网络访问
* 网络分段和隔离
* 实施 NSG 规则
* 部署 Azure Firewall
* 使用 Azure Bastion 进行安全管理
* 监控和验证安全控制
## 使用的工具
* Microsoft Azure Portal
* Azure Virtual Network
* 网络安全组 (NSG)
* Azure Bastion
* Azure Firewall
* 路由表 (UDR)
* Azure Network Watcher
* Flow Logs
* Storage Account
* Linux 虚拟机
标签:PB级数据处理, 云原生架构, 安全运维, 微软Azure, 网络分段, 网络安全, 隐私保护