0Pricing
Cloud & IT Cert Prep · 课时

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

使用 NSG 规则筛选入站和出站流量,并使用应用程序安全组对 VM 进行逻辑分组,从而简化规则管理。

网络安全组和应用程序安全组 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。

什么是 Network Security Group?

Network Security Group(NSG)充当 Azure 资源的虚拟防火墙。它包含一组安全规则,可根据源 IP、目标 IP、端口号和协议允许或拒绝入站和出站网络流量。NSG 可以与子网关联(影响子网中的所有资源),也可以与单个网络接口关联(影响单个 VM)。如果子网 NSG 和 NIC NSG 同时存在,Azure 会同时评估两者:对于入站流量,先应用子网 NSG;对于出站流量,先应用 NIC NSG。

# Create an NSG
az network nsg create \
  --resource-group myRG \
  --name myNSG

NSG 规则结构

每条 NSG 规则都具有以下属性:优先级——100 到 4096 之间的数字,数字越小越先评估;源/目标——IP 地址、CIDR 范围、服务标记或应用程序安全组;源/目标端口——特定端口号或端口范围(例如 80、443、3389 或 1024-65535);协议——TCP、UDP、ICMP 或 Any;操作——Allow 或 Deny。规则按优先级顺序评估,第一条匹配的规则生效。如果没有规则匹配,则应用默认规则:拒绝所有入站流量,并允许所有出站流量。

# Allow HTTPS inbound from the internet
az network nsg rule create \
  --resource-group myRG \
  --nsg-name myNSG \
  --name AllowHTTPS \
  --priority 110 \
  --direction Inbound \
  --source-address-prefixes Internet \
  --destination-port-ranges 443 \
  --protocol Tcp \
  --access Allow

默认 NSG 规则

每个 NSG 都包含三条默认入站规则和三条默认出站规则,优先级为 65000-65500,且无法删除。默认入站规则包括:AllowVnetInBound(允许来自 VNet 的流量)、AllowAzureLoadBalancerInBound(允许 Azure 运行状况探测)、DenyAllInBound(拒绝其他所有流量)。默认出站规则包括:AllowVnetOutBound、AllowInternetOutBound、DenyAllOutBound。您可以添加优先级数字更低(100-64999)的规则来覆盖默认规则,因为这些规则会在默认规则之前生效。

NSG 中的服务标记

服务标记是 Azure 服务 IP 地址范围的预定义组,可让您编写简洁的 NSG 规则,而不必指定会随时间变化的长串 IP 地址列表。常见的服务标记包括:Internet——VNet 外部的所有 IP 地址;VirtualNetwork——VNet 内的所有 IP;AzureLoadBalancer——Azure 基础设施负载均衡器的 IP;Storage——所选区域中 Azure Storage 服务的 IP;AzureActiveDirectory——Entra ID 终结点。Microsoft 会自动维护这些标记,因此即使服务 IP 发生变化,您的 NSG 规则仍能保持准确。

# Allow outbound to Azure Storage using a service tag
az network nsg rule create \
  --resource-group myRG \
  --nsg-name myNSG \
  --name AllowStorageOutbound \
  --priority 120 \
  --direction Outbound \
  --destination-address-prefixes Storage \
  --destination-port-ranges 443 \
  --protocol Tcp \
  --access Allow

将 NSG 与子网关联

将 NSG 与子网关联后,其规则会应用于该子网中的所有资源,因此这是大规模实施网络策略最高效的方式。例如,将名为 'DenyRDP' 的 NSG 与数据层子网关联,可以阻止该子网中的任何 VM 从外部通过 RDP(端口 3389)访问,无论 NIC 级 NSG 允许什么。这个子网级 NSG 会在流量到达各个 VM 之前充当第一道防线,从而减少网络边界处的攻击面。

# Associate NSG with a subnet
az network vnet subnet update \
  --resource-group myRG \
  --vnet-name myVNet \
  --name web-tier \
  --network-security-group myNSG

什么是 Application Security Group?

Application Security Group(ASG)允许您根据应用程序角色而不是 IP 地址对 Azure VM 网络接口进行分组。例如,您可以创建名为 webServers、appServers 和 dbServers 的 ASG,然后将每个 VM 的 NIC 分配给相应的 ASG。在 NSG 规则中,您可以编写:“允许来自 webServers 的流量通过端口 8080 访问 appServers”,而无需指定任何 IP 地址。添加或删除 VM 时,只需更新其 ASG 成员关系,所有 NSG 规则就会自动正确应用,无需修改规则。

# Create an Application Security Group
az network asg create \
  --resource-group myRG \
  --name webServers

# Associate a VM's NIC with the ASG
az network nic ip-config update \
  --resource-group myRG \
  --nic-name myWebVMNic \
  --name ipconfig1 \
  --application-security-groups webServers

使用 ASG 的 NSG 规则

定义 ASG 并分配 VM 后,您可以编写将 ASG 作为源或目标的 NSG 规则。与基于 IP 的规则相比,这种方式更易于维护,因为它具有以下优点:无需管理 IP——您不需要知道 VM 的 IP,ASG 成员关系会负责完成映射;动态扩展——将新 VM 添加到正确的 ASG 后,它会自动继承正确的规则;语义清晰——规则读起来很自然(“webServers → appServers,端口 8080”),而不是难以理解的 IP 范围。ASG 对于经常添加或替换 VM 的动态环境尤其有价值。

# NSG rule using ASG as source and destination
az network nsg rule create \
  --resource-group myRG \
  --nsg-name myNSG \
  --name WebToApp \
  --priority 200 \
  --direction Inbound \
  --source-asgs webServers \
  --destination-asgs appServers \
  --destination-port-ranges 8080 \
  --protocol Tcp \
  --access Allow

用于故障排查的 NSG 流日志

NSG 流日志记录通过 NSG 的所有 IP 流量信息,包括源和目标 IP、端口、协议、流量是被允许还是被拒绝,以及传输的字节数。流日志以 JSON 格式写入 Azure Storage 帐户,并可在Azure Network Watcher 的流量分析工具中可视化。流日志对于排查连接问题(“为什么这部分流量被阻止?”)、开展安全调查,以及满足需要提供流量模式证据的合规报告要求,都非常有价值。

应避免的常见 NSG 错误

以下三种常见 NSG 错误会导致连接问题:忘记评估顺序——如果存在优先级为 100 的 Deny 规则,而您的 Allow 规则优先级为 200,流量就会被拒绝,因为优先级数字越小越先生效;阻止 Azure 运行状况探测——负载均衡器运行状况探测来自 IP 168.63.129.16,阻止此源会导致负载均衡器后端显示为不正常并停止接收流量;子网 NSG 与 NIC NSG 规则重叠——流量必须通过两次 NSG 评估,即使子网 NSG 中的规则允许流量,如果 NIC NSG 拒绝该流量,它仍会被阻止。

NSG 与 Azure 防火墙的比较

NSG 和 Azure 防火墙相互补充,但有所不同:NSG——分散式,附加到子网和 NIC,执行第 3/4 层(IP 和端口)筛选,默认不记录流量,并且每个 VNet 都可免费使用;Azure 防火墙——集中式托管服务,部署在中心 VNet 中,支持第 3/4 层以及第 7 层(FQDN、URL、IDPS),通过 Azure Monitor 提供完整日志记录,费用约为每月 1,000 美元以上。请使用 NSG 实现基本的边界防护和层级隔离。当您需要通过 FQDN 筛选、威胁情报或 TLS 检查,对出站互联网访问进行集中且可审计的强制控制时,请使用 Azure 防火墙。

有效安全规则

当 NSG 同时与子网和 NIC 关联时,您可能难以确定实际应用了哪些规则。Azure 在门户中为任何 VM 的 NIC 提供有效安全规则视图,显示来自子网级和 NIC 级 NSG 的所有规则合并后的结果。这是该 VM 实际允许或拒绝的内容的权威列表。Azure Network Watcher 的IP 流验证工具可以进一步帮助您排查问题:指定源和目标 IP/端口后,该工具会立即告诉您流量会被允许还是拒绝,以及负责此结果的具体规则。

快速检查

请测试您对本课中 Microsoft Azure 基础知识(AZ-900)概念的理解。

课程回顾

本课介绍了以下内容:NSG 包含按优先级顺序评估的 Allow/Deny 规则,可筛选子网或单个网络接口的流量;服务标记通过表示动态的 Azure 服务 IP 范围组来简化规则;以及Application Security Group 支持按角色对 VM 进行分组,从而创建无需维护且可随环境扩展的 NSG 规则。接下来,我们将学习 VNet 对等互连和服务终结点,以连接不同 VNet 中的资源以及 Azure 服务。

常见问题解答

「网络安全组和应用程序安全组」课时是免费的吗?

是的 — 「网络安全组和应用程序安全组」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。

「网络安全组和应用程序安全组」这节课中我会学到什么?

使用 NSG 规则筛选入站和出站流量,并使用应用程序安全组对 VM 进行逻辑分组,从而简化规则管理。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cloud & IT Cert Prep 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「网络安全组和应用程序安全组」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?

能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 虚拟网络和子网
  2. 网络安全组和应用程序安全组
  3. VNet 对等互连和服务终结点
  4. Azure DNS 和负载均衡器基础
← 返回 Cloud & IT Cert Prep