azure network security groups 概念和作用
你好,honeymoose!
当然,我们来详细解释一下 Azure 网络安全组(Network Security Groups, NSG)的概念和作用。你可以把它想象成是你在 Azure 虚拟网络中的一个虚拟防火墙或安全门卫。
一、核心概念 (Concept)
Azure 网络安全组 (NSG) 是一个包含安全规则列表的资源,这些规则决定了流入或流出 Azure 资源(如虚拟机)的网络流量是被允许 (Allow) 还是拒绝 (Deny)。
简单来说,它就是一个基于“五元组”信息来过滤网络包的规则集。这个“五元组”包括:
- 源 IP 地址 (Source IP)
- 源端口 (Source Port)
- 目标 IP 地址 (Destination IP)
- 目标端口 (Destination Port)
- 协议 (Protocol) (如 TCP, UDP, ICMP)
NSG 是一个有状态 (Stateful) 的防火墙。这意味着,如果你创建了一个规则允许某个入站流量(例如,从你的电脑到服务器的请求),NSG 会自动允许相应的出站流量(服务器响应你的请求)返回,你不需要再为此创建一个出站规则。
二、核心组成部分:安全规则 (Security Rules)
每个 NSG 都由一系列的入站 (Inbound) 和出站 (Outbound) 安全规则组成。每条规则都包含以下关键属性:
- 名称 (Name): 规则的唯一标识。
- 优先级 (Priority): 一个介于 100 到 4096 之间的数字。数字越小,优先级越高。Azure 会按照优先级顺序来处理规则。一旦找到匹配的规则,就会立即执行该规则的动作(允许或拒绝),不再检查后面的规则。
- 源/目标 (Source/Destination): 可以是 IP 地址范围 (CIDR)、服务标签 (Service Tag, 如
Internet,VirtualNetwork),或者应用程序安全组 (ASG)。 - 协议 (Protocol): TCP, UDP, ICMP, Any (任意协议)。
- 方向 (Direction): Inbound (入站) 或 Outbound (出站)。
- 端口范围 (Port Range): 可以是单个端口(如
80)、一个范围(如1024-2000)或*(所有端口)。 - 操作 (Action): Allow (允许) 或 Deny (拒绝)。
默认规则 (Default Rules)
每个 NSG 创建时都会自带几条默认规则,它们的优先级很低(数字很大),且无法删除。重要的默认规则包括:
- 允许虚拟网络内部通信 (
AllowVnetInBound,AllowVnetOutBound): 默认情况下,同一个虚拟网络内的资源可以互相通信。 - 允许来自 Azure 负载均衡器的流量 (
AllowAzureLoadBalancerInBound): 允许健康探测。 - 拒绝所有其他流量 (
DenyAllInBound,DenyAllOutBound): 这是“默认拒绝”的安全原则。如果你创建的规则都没有匹配上,那么流量最终会被这条规则拒绝。
三、作用和应用场景 (Function & Use Cases)
NSG 的核心作用是保护和隔离 Azure 虚拟网络中的资源。它通过精细的流量控制,确保只有授权的流量才能访问你的服务。
1. 应用位置
NSG 可以关联(应用)到两个不同的层级:
- 网络接口 (NIC - Network Interface Card): 将 NSG 应用到单个虚拟机的网卡上。这提供了对单个虚拟机的精细化流量控制。
- 子网 (Subnet): 将 NSG 应用到整个子网上。子网中的所有资源(如所有虚拟机)都会继承这个 NSG 的规则。
重要提示:
一个资源可以同时受到子网 NSG 和 NIC NSG 的影响。流量的处理顺序是:
- 入站流量: 先经过子网的 NSG 规则,如果允许,再经过网卡的 NSG 规则。两者都必须允许,流量才能进入虚拟机。
- 出站流量: 先经过网卡的 NSG 规则,如果允许,再经过子网的 NSG 规则。两者都必须允许,流量才能离开虚拟机。
2. 常见应用场景
-
限制管理访问:
- 场景: 只允许公司办公室的特定 IP 地址通过 RDP (端口 3389) 或 SSH (端口 22) 访问你的虚拟机。
- 实现: 创建一个高优先级的入站规则,源 IP 设置为你的公司公网 IP,目标端口设为 3389 或 22,动作为 “Allow”。
-
开放 Web 服务:
- 场景: 你有一个 Web 服务器,需要向互联网上的所有人开放 HTTP (80) 和 HTTPS (443) 端口。
- 实现: 创建入站规则,源设置为服务标签
Internet,目标端口设置为80,443,动作为 “Allow”。
-
隔离应用分层 (N-Tier Architecture):
- 场景: 一个三层应用:Web 层、应用层、数据层,分别在不同的子网。
- Web 子网需要接收来自互联网的流量 (端口 80, 443)。
- 应用子网只允许来自 Web 子网的流量。
- 数据子网(数据库)只允许来自应用子网的流量。
- 实现: 为每个子网配置不同的 NSG。例如,在数据子网的 NSG 中,创建一个入站规则,只允许源 IP 地址范围为应用子网的流量访问数据库端口(如 1433 for SQL Server)。
- 场景: 一个三层应用:Web 层、应用层、数据层,分别在不同的子网。
-
阻止恶意流量:
- 场景: 你发现某个 IP 地址一直在恶意攻击你的服务器。
- 实现: 创建一个最高优先级(如 Priority 100)的入站规则,源 IP 设置为该恶意 IP,动作为 “Deny”。
总结 (Summary)
| 特性 | 描述 |
|---|---|
| 是什么? | Azure 虚拟网络中的基础状态化防火墙。 |
| 做什么? | 根据你定义的规则,过滤进出 Azure 资源的 TCP/IP 流量。 |
| 如何工作? | 通过优先级处理规则列表,第一个匹配的规则生效。 |
| 用在哪里? | 应用于子网或单个网络接口(NIC)。 |
| 核心目的 | 提供基础的网络隔离和访问控制,是 Azure 安全的第一道防线。 |
| 成本 | NSG 服务本身是免费的,你只需要为使用的网络资源付费。 |
NSG 是在 Azure 中构建安全网络环境不可或缺的基础组件。理解了它的概念和作用,你就能更好地设计和保护你的云端架构。