网络安全组和应用程序安全组

本文介绍如何使用网络安全组(NSG)筛选流量来控制Azure虚拟网络中的网络流量。 它还涵盖应用程序安全组(ASG),用于对网络接口进行逻辑分组。

本文介绍的内容

网络安全组允许筛选Azure虚拟网络中资源的入站和出站流量。 应用程序安全组允许按角色对网络接口进行分组。 编写引用逻辑组而不是单个 IP 地址的 NSG 规则。

谁需要本文

如果你符合以下情况,请阅读本文:

  • 部署连接到Azure虚拟网络的任何资源。
  • 需要控制子网、虚拟机或Azure服务之间的流量。
  • 想要简化虚拟机频繁扩缩容或 IP 地址频繁变化环境中的规则管理。
  • 正在为新的Azure工作负荷生成安全基线。

直接转移焦点: 将本地防火墙和分段规则重新创建为子网之间的 NSG,镜像应用程序已使用的层到层流。

现代化重点:使用应用程序安全组按工作负载角色而非 IP 地址定义规则,并将子网 NSG 与中心防火墙及强制出站流量经过检查的用户定义路由结合使用。

跨云焦点:将 AWS 和 Google Cloud 中的安全组规则镜像到 Azure NSG 中,以便在工作负载在云之间移动时流量策略保持一致。

Azure服务和功能

下表介绍了用于Azure虚拟网络中的网络流量筛选的服务和功能。

服务或功能 它提供的内容 何时使用它
网络安全组 (NSG) 应用于子网或网络接口的一组入站和出站安全规则。 规则按优先级进行评估:最低数字胜出。 控制子网或单个 VM 级别的流量。 适用于使用虚拟网络的每个工作负荷。
应用程序安全组 (ASG) 网络接口的逻辑分组。 使用 ASG 作为 NSG 规则中的源或目标,而不是 IP 地址。 有多个 VM 具有相同角色(Web 服务器、应用服务器)及其 IP 地址随着缩放而更改。 所有分组 NIC 必须位于同一虚拟网络中。
服务标记 由 Microsoft 自动管理和更新的、用于 Azure 服务的已命名 IP 地址前缀组。 示例:AzureCloudStorageAzureLoadBalancerSql 在 NSG 规则中引用Azure服务,而无需硬编码 IP 范围。 Microsoft自动更新基础 IP 范围。 无法创建自定义服务标记。

常见服务标记

下表列出了 NSG 规则中最常用的服务标记。

服务标记 说明
Internet 虚拟网络外部的所有公共 IP 地址空间。 匹配源自公共互联网或发往公共互联网的任何流量。
VirtualNetwork 您的虚拟网络地址空间、所有已连接的地址空间(对等互连的虚拟网络)、通过 VPN/ExpressRoute 连接的本地部署网络,以及任何服务终结点。 包括默认路由。
AzureLoadBalancer Azure基础结构负载均衡器。 转换为发起 Azure 运行状况探测的主机的虚拟 IP。 用于在入站规则中允许健康探测流量。
Storage Azure 存储服务 IP 地址空间。 支持区域变体,例如 Storage.chinanorth3。 用于允许或限制从 VNet 中Azure 存储的访问。
AzureCloud 所有 Azure 数据中心公共 IP 地址。 支持区域变体,例如 AzureCloud.chinaeast2。 一般情况下,允许出站流量流向Azure服务非常有用。
Sql Azure SQL 数据库、Azure Database for MySQL、Azure Database for PostgreSQL、Azure Database for MariaDB和Azure Synapse AnalyticsIP 地址前缀。 支持区域变体。
扩充式安全规则 接受单个规则中的多个 IP 地址、IP 范围和端口的扩展 NSG 规则。 如果需要允许或拒绝许多 IP 或端口范围的流量,请减少规则计数。 支持每个规则的多个 IP 和端口范围,最多支持 10 个应用程序安全组,但每个规则只有一个服务标记。

如何选择

使用以下指南为方案选择正确的安全构造。

NSG 限制与配额

Azure对 NSG 资源强制实施以下默认限制。 若要提高大多数限制值,请通过 Azure 支持提交增加请求。

Resource 默认限制 最大限制
每个 NSG 的规则 2,000 2,000
每个订阅的 NSG 5,000 5,000
每个子网的 NSG 1 1
每个 NIC 的 NSG 1 1
每个订阅的 ASG 数量 3,000 3,000
每个 ASG 的 NIC 数 因订阅而异 联系支持
每条规则中被引用为源或目标的 ASG 10 10

注释

每个 NSG 的 2,000 条规则的限制包括自定义规则和默认规则。 如果接近此限制,请使用增强的安全规则将多个 IP 或端口范围合并为更少的规则。

NSG 与 ASG:何时使用

使用下表确定适合方案的安全构造。

情景 Use 为什么
控制子网中所有 VM 的流量 子网级别的 NSG 一个 NSG 适用于子网中的每个资源。 统一策略最易于管理。
控制特定 VM 与其子网无关的流量 NIC 级别的 NSG 允许例外情况,而不影响其他虚拟机。 适用于跳板机或堡垒主机。
许多 VM 具有相同的角色和 IP 地址频繁更改 ASG 按角色(Web、应用、数据)将 VM 添加到组。 针对组名编写规则。 VM 缩放或获取新 IP 时不需要更新。
引用Azure服务(存储、SQL、密钥保管库)作为源或目标 带有服务标记的 NSG 避免将 Microsoft 可能更新的 IP 范围硬编码。 服务标记自动保持最新状态。

下图显示了 ASG 如何让你按角色对 VM 进行分组,并在逻辑组而不是单个 IP 地址之间编写 NSG 规则。

此图显示了按角色分组到三个应用程序安全组的 VM,其中 NSG 规则允许从 Web 端口 443 到应用,从应用到数据服务器端口 1433。

安全状况清单

在部署到生产环境之前,根据此清单验证 NSG 配置。

Requirement Action Reference
默认拒绝状态 确认您使用的是默认 DenyAllInbound 规则(优先级 65500)。 不要创建绕过默认拒绝的广泛允许规则。 安全注意事项
管理端口上没有 Internet 访问 阻止来自 0.0.0.0/0 的 SSH(22)和 RDP(3389)入站流量。 使用 Azure Bastion 或 VPN 进行管理访问。 安全注意事项
与 Azure 防火墙 配合使用以进行深度检查 NSG 仅在第 3/4 层进行筛选。 为应用程序层(第 7 层)筛选、TLS 检查和威胁情报添加Azure 防火墙。 Azure 防火墙和网络分段
为诊断启用流日志 使用 VNet 流日志捕获流量数据,以便进行安全调查和符合性。 网络监视和诊断

规则评估顺序

NSG 规则使用优先匹配语义:

  1. Azure先按优先级顺序评估规则:最低数字(最高优先级)。
  2. Azure针对五元组评估每个规则:源、源端口、目标、目标端口和协议。
  3. 当流量与规则匹配时,处理将停止。 Azure不会评估进一步的规则。
  4. 如果没有自定义规则匹配,则默认规则适用。 不能删除默认规则,但可以通过创建自定义规则(优先级数字介于 100 到 4096 之间)来替代这些规则。

默认规则(共六条):

方向 规则名称 Priority Action
Inbound AllowVNetInBound 65000 允许
Inbound 允许Azure负载均衡器入站 65001 允许
Inbound DenyAllInbound 65500 Deny
出境 AllowVnetOutBound 65000 允许
出境 AllowInternetOutBound 65001 允许
出境 DenyAllOutBound 65500 Deny

ASG 约束

使用应用程序安全组时,请注意以下约束:

  • ASG 中的所有网络接口必须存在于分配给 ASG 的第一个网络接口所在的同一虚拟网络中。
  • 如果在规则的源和目标中引用 ASG,则两个组中的网络接口必须位于同一虚拟网络中。
  • 可以在规则的源或目标中最多引用 10 个 ASG。

子网级和网络接口级 NSG 共同作用

可以将 NSG 与该子网中的 VM 上的子网和网络接口相关联。 执行此操作后,Azure 会评估这两个 NSG,并且流量必须同时通过这两个 NSG。 最严格的组合获胜。

方向 首次评估 第二次评估
Inbound 子网 NSG NIC NSG
出境 NIC NSG 子网 NSG

Tip

为了进行更简单的故障排除,请将 NSG 与子网或网络接口相关联,但不能同时关联两者。 如果需要这两者,请清楚地记录预期规则交互。

实际示例:带有跳转框的 Web 层

考虑具有子网级 NSG 的子网,该子网允许来自 Internet 的入站 HTTPS(端口 443),并拒绝其他所有内容。 该子网中的跳转盒 VM 具有网络接口级 NSG,该 NSG 还允许来自特定管理 IP 范围的入站 SSH(端口 22)。

  • Web 流量(端口 443): 子网 NSG 允许它。 Web VM 上的网络接口 NSG 没有 443 的拒绝规则(默认 AllowVNetInBound 许可)。 流量流动。
  • 通过 SSH 连接到跳转盒(来自管理 IP 的端口 22): 子网 NSG 拒绝来自 Internet 的端口 22 上的流量。 即使网络接口 NSG 允许来自管理范围的 SSH,子网 NSG 也会首先阻止它。 解决方法:在子网 NSG 中添加一条规则,允许来自管理 IP 范围的流量访问 22 端口,或者使用 Azure Bastion 完全绕过公共互联网路径。

此示例说明了为什么双 NSG 增加了复杂性。 两者必须独立允许流量。

下图显示了在同时关联子网 NSG 和 NIC NSG 时入站流量的评估路径。 流量必须同时通过这两个 NSG。 最严格的组合获胜。

此图显示了通过子网和 NIC 级别允许或拒绝的入站流量的 NSG 规则评估流程图

Azure Virtual Network Manager交互

如果组织使用Azure Virtual Network Manager(AVNM)安全管理规则,Azure在 NSG 规则之前评估这些规则。 安全管理员规则可以允许(继续进行 NSG 评估)、始终允许(绕过 NSG)或拒绝(NSG 评估前阻止)。 有关集中式网络安全管理,请参阅Azure Virtual Network Manager和集中管理

设计注意事项

直接迁移 NSG 和 ASG 的设计重点

  • 将本地分段转换为子网级 NSG:仅允许应用程序已使用的层到层流(例如 Web 到应用和应用到数据库),并拒绝其他所有内容。
  • 以当前的防火墙规则库为起点,在迁移完成后再逐步收紧,并使用 NSG 流日志确认实际需要哪些流量。
  • 首先在子网级别应用 NSG,以便简单起见;仅当单个 VM 需要例外时,才添加 NIC 级规则。
  • 使用服务标记(例如 VirtualNetworkAzureLoadBalancer),而不是硬编码的 IP 地址,以便在迁移期间重新编址后规则仍然有效。

实现 NSG 和 ASG 设计重点的现代化

  • 使用应用程序安全组按角色(Web、应用、数据)对网络接口进行分组,以便规则描述意向,并在实例缩放时自动进行调整。
  • 将子网 NSG 与中心 Azure 防火墙结合使用:NSG 负责各层之间的微隔离,而防火墙则检查跨越信任边界的流量。
  • 仅允许专用终结点子网访问 PaaS 服务,并使用用户定义的路由强制出站流量通过中心防火墙。
  • 如果使用 Azure Virtual Network Manager 的安全管理员规则,请提前规划好其优先顺序(它们会先于 NSG 进行评估),以免平台级防护措施与工作负载 NSG 发生冲突。

跨云 NSG 和 ASG 设计要点

  • 将 AWS 和 Google Cloud 中的安全组规则镜像到 Azure NSG 中,因此等效层在迁移后强制实施相同的策略。
  • 仅允许跨云应用程序依赖项所需的特定端口和源,并通过检查的 IPsec 隧道路由该流量。
  • 在云中标准化应用程序安全组名称,以便运营团队在故障排除时可以关联等效的工作负荷。
  • 将 NSG 与安全的虚拟 WAN中心防火墙配对,因此跨云和分支流量均由 NSG 筛选,并由防火墙检查。

先决条件

在实施 NSG 和 ASG 之前,请确保已具备以下条件:

  • 带有子网的虚拟网络: NSG 关联到虚拟网络内的子网或 NIC。 有关规划指南 ,请参阅虚拟网络和子网
  • IP 寻址计划: NSG 规则引用 IP 地址和范围。 IP 计划可确保编写精确的规则。 有关指南,请参阅 IP 地址规划
  • 所需流量流的列表: 在编写规则之前记录哪些资源需要通信、哪些端口和方向。

安全注意事项

Important

默认拒绝才是正确的原则。 Azure 中的默认入站规则会拒绝所有未被明确允许的互联网流量。 不要通过创建广泛的允许规则来削弱这种态势。

绝不允许将管理端口开放给 0.0.0.0/0

注意

切勿创建允许来自 0.0.0.0/0(互联网上的任何源)的入站流量访问管理端口(例如 SSH(端口 22)或 RDP(端口 3389))的 NSG 规则。 攻击者持续扫描 Internet 以获取打开的管理端口。 请改用 Azure Bastion、VPN 或 Azure 专用链接 安全地访问虚拟机。

将 NSG 与 Azure 防火墙 结合使用

NSG 在第 3 层和第 4 层(网络和传输)上运行。 它们根据 IP 地址、端口和协议进行筛选,但不检查数据包内容。 对于需要应用程序层筛选、威胁智能或 TLS 检查的工作负载,请与 NSG 一起部署Azure 防火墙。 请参阅Azure 防火墙和网络分段

使用 VNet 流日志实现流量可视性

注释

NSG 流日志计划于 2027 年 9 月 30 日停用。 2025 年 6 月 30 日之后,无法创建新的 NSG 流日志。 迁移到 VNet 流日志,这些日志在虚拟网络级别提供相同的功能以及流量分析。

VNet 流日志捕获虚拟网络中所有工作负荷的每流状态和吞吐量数据。 将它们用于:

  • 安全调查:识别意外的流量模式。
  • 合规性审核:证明流量流与记录的策略匹配。
  • 容量规划:了解子网之间的带宽消耗。

有关监视和诊断配置,请参阅 网络监视和诊断

要避免的常见错误

错误 为什么这是个问题 更好的方法
创建允许的所有入站规则(优先级 100、源 *、目标 * 绕过默认拒绝状态,并向 Internet 流量公开所有资源。 仅允许特定的源/目标/端口组合。 对于允许规则,请使用尽可能高的优先级编号。
忘记了“默认拒绝”这一机制的存在 团队会为已知流量创建允许规则,但不会测试是否已拦截其他所有流量。 意外打开的端口可能会被忽视。 部署 NSG 后,使用仅预期流量流的 VNet 流日志或 NSG 诊断进行验证。 明确测试被拒绝的路径。
未对动态工作负载使用 ASG(自动扩缩组) 当 VM 横向扩展或获取新 IP 时,基于 IP 的规则会中断。 团队最终不得不不断更新规则。 使用 ASG 按角色对 VM 进行分组。 引用 ASG 的规则在虚拟机加入或移出该组时仍然有效。
忽略流日志,直到发生安全事件 如果没有启用流日志,则没有用于调查或合规性审核的历史流量数据。 从第一天启用 VNet 流日志。 配置流量分析,以便对异常情况进行可视化和警报。
在没有文档的情况下应用子网和 NIC NSG 两个 NSG 会产生令人困惑的相互作用,导致流量意外地被拒绝。 故障排除变得耗时。 选择子网级别或 NIC 级 NSG 作为标准。 如果需要这两者,请记录每个子网的预期交互。

Learn more

后续步骤

Tip

自行探索? 返回到 概述导航器 ,按功能查找下一篇文章。

接下来是直接迁移过程中的下一步:

设计中心辐射拓扑:在已迁移的各工作负载之间集中部署 DNS、防火墙和 VPN 网关等共享服务。

现代化之旅的下一步:

设计中心辐射拓扑:为您的 PaaS 工作负载设置双中心拓扑,其中中心由 IT 团队负责,分支由应用团队负责。

跨云之旅的下一步:

设置通往其他云的加密隧道:为跨云传输配置 VPN 网关 与 Amazon Web Services(AWS)虚拟专用网关和 Google Cloud VPN 之间的连接。