使用 Azure CLI 1.0 创建网络安全组(经典)

可在虚拟网络中使用 NSG 控制流向一个或多个虚拟机 (VM)、角色实例、网络适配器 (NIC) 或子网的流量。 NSG 包含根据流量方向、协议、源地址和端口以及目标地址和端口允许或拒绝流量的访问控制规则。 可以随时更改 NSG 的规则,所做的更改适用于所有关联的实例。

有关 NSG 的详细信息,请访问什么是 NSG

Important

在使用 Azure 资源之前,请务必了解 Azure 当前使用两种部署模型:Azure Resource Manager 部署模型和经典部署模型。 在使用任何 Azure 资源之前,请确保了解 部署模型和工具 。 可以通过单击本文顶部的选项卡来查看不同工具的文档。

本文介绍经典部署模型。 还可以在 Resource Manager 部署模型中创建 NSG

方案

为了更好地说明如何创建 NSG,本文档使用以下方案:

VNet 方案

在此方案中,需要为 TestVNet 虚拟网络中的每个子网创建 NSG,如下所述:

  • NSG-FrontEnd。 前端 NSG 应用于 FrontEnd 子网,并且包含以下两个规则:
    • rdp-rule。 允许将 RDP 流量传输到 FrontEnd 子网。
    • web-rule。 允许将 HTTP 流量传输到 FrontEnd 子网。
  • NSG-BackEnd。 后端 NSG 应用于 BackEnd 子网,并且包含以下两个规则:
    • sql-rule。 仅允许来自 FrontEnd 子网的 SQL 流量。
    • web-rule。 拒绝来自 BackEnd 子网的所有 Internet 入站流量。

将这些规则组合起来可创建一个与外围网络类似的方案,其中后端子网只能接收来自前端子网的 SQL 的传入流量且不能访问 Internet,而前端子网可以与 Internet 通信并只接收传入 HTTP 请求。

下面的示例 Azure CLI 命令需要一个已经基于方案创建的简单环境。 如果想要运行本文档中所显示的命令,首先通过创建 VNet 构建测试环境。

为前端子网创建 NSG

  1. 如果从未使用过 Azure CLI,请参阅安装和配置 Azure CLI
  2. 切换到经典模式:

    azure config mode asm
    
  3. 创建 NSG:

     azure network nsg create -l chinanorth -n NSG-FrontEnd
    
  4. 创建一个允许从 Internet 访问端口 3389 (RDP) 的安全规则:

    azure network nsg rule create -a NSG-FrontEnd -n rdp-rule -c Allow -p Tcp -r Inbound -y 100 -f Internet -o * -e * -u 3389
    
  5. 创建一个允许从 Internet 访问端口 80 (HTTP) 的规则:

    azure network nsg rule create -a NSG-FrontEnd -n web-rule -c Allow -p Tcp -r Inbound -y 200 -f Internet -o * -e * -u 80
    
  6. 将 NSG 关联到前端子网:

    azure network nsg subnet add -a NSG-FrontEnd --vnet-name TestVNet --subnet-name FrontEnd
    

为后端子网创建 NSG

  1. 创建 NSG:

    azure network nsg create -l chinanorth -n NSG-BackEnd
    
  2. 创建一个允许从前端子网访问端口 1433 (SQL) 的规则:

    azure network nsg rule create -a NSG-BackEnd -n sql-rule -c Allow -p Tcp -r Inbound -y 100 -f 192.168.1.0/24 -o * -e * -u 1433
    
  3. 创建一个拒绝访问 Internet 的规则:

    azure network nsg rule create -a NSG-BackEnd -n web-rule -c Deny -p Tcp -r Outbound -y 200 -f * -o * -e Internet -u 80
    
  4. 将 NSG 关联到后端子网:

    azure network nsg subnet add -a NSG-BackEnd --vnet-name TestVNet --subnet-name BackEnd