Azure network security groups 概念和作用

azure network security groups 概念和作用

你好,honeymoose!

当然,我们来详细解释一下 Azure 网络安全组(Network Security Groups, NSG)的概念和作用。你可以把它想象成是你在 Azure 虚拟网络中的一个虚拟防火墙安全门卫


一、核心概念 (Concept)

Azure 网络安全组 (NSG) 是一个包含安全规则列表的资源,这些规则决定了流入或流出 Azure 资源(如虚拟机)的网络流量是被允许 (Allow) 还是拒绝 (Deny)

简单来说,它就是一个基于“五元组”信息来过滤网络包的规则集。这个“五元组”包括:

  1. 源 IP 地址 (Source IP)
  2. 源端口 (Source Port)
  3. 目标 IP 地址 (Destination IP)
  4. 目标端口 (Destination Port)
  5. 协议 (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)。
  • 阻止恶意流量:

    • 场景: 你发现某个 IP 地址一直在恶意攻击你的服务器。
    • 实现: 创建一个最高优先级(如 Priority 100)的入站规则,源 IP 设置为该恶意 IP,动作为 “Deny”。

总结 (Summary)

特性 描述
是什么? Azure 虚拟网络中的基础状态化防火墙。
做什么? 根据你定义的规则,过滤进出 Azure 资源的 TCP/IP 流量。
如何工作? 通过优先级处理规则列表,第一个匹配的规则生效。
用在哪里? 应用于子网或单个网络接口(NIC)。
核心目的 提供基础的网络隔离和访问控制,是 Azure 安全的第一道防线。
成本 NSG 服务本身是免费的,你只需要为使用的网络资源付费。

NSG 是在 Azure 中构建安全网络环境不可或缺的基础组件。理解了它的概念和作用,你就能更好地设计和保护你的云端架构。