如何在 Azure CLI 中创建 NSG(经典)

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

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

Important

在使用 Azure 资源之前,请务必了解 Azure 当前使用两种部署模型:资源管理器部署模型和经典部署模型。在使用任何 Azure 资源之前,请确保你了解部署模型和工具。可以通过单击本文顶部的选项卡来查看不同工具的文档。本文介绍经典部署模型。你还可以在资源管理器部署模型中创建 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 绑定流量。

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

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

如何为前端子网创建 NSG

若要基于上述方案创建名为 NSG-FrontEnd 的 NSG,请执行下面的步骤。

  1. 如果你从未使用过 Azure CLI,请参阅安装和配置 Azure CLI,并按照说明进行操作,直到选择 Azure 帐户和订阅。

  2. 运行 azure config mode 命令以切换到经典模式,如下所示。

    azure config mode asm
    

    预期输出:

    info:    New mode is asm
    
  3. 运行 azure network nsg create 命令以创建 NSG。

    azure network nsg create -l uswest -n NSG-FrontEnd
    

    预期输出:

    info:    Executing command network nsg create
    info:    Creating a network security group "NSG-FrontEnd"
    info:    Looking up the network security group "NSG-FrontEnd"
    data:    Name                            : NSG-FrontEnd
    data:    Location                        : China North
    data:    Security group rules:
    data:    Name                               Source IP           Source Port  Destination IP   Destination Port  Protocol  Type      Action  Prior
    ity  Default
    data:    ---------------------------------  ------------------  -----------  ---------------  ----------------  --------  --------  ------  -----
    ---  -------
    data:    ALLOW VNET OUTBOUND                VIRTUAL_NETWORK     *            VIRTUAL_NETWORK  *                 *         Outbound  Allow   65000
         true   
    data:    ALLOW VNET INBOUND                 VIRTUAL_NETWORK     *            VIRTUAL_NETWORK  *                 *         Inbound   Allow   65000
         true   
    data:    ALLOW AZURE LOAD BALANCER INBOUND  AZURE_LOADBALANCER  *            *                *                 *         Inbound   Allow   65001
         true   
    data:    ALLOW INTERNET OUTBOUND            *                   *            INTERNET         *                 *         Outbound  Allow   65001
         true   
    data:    DENY ALL OUTBOUND                  *                   *            *                *                 *         Outbound  Deny    65500
         true   
    data:    DENY ALL INBOUND                   *                   *            *                *                 *         Inbound   Deny    65500
         true   
    info:    network nsg create command OK
    

    参数:

    • -l(或 --location)。将在其中创建新 NSG 的 Azure 区域。对于我们的方案,为 chinanorth
    • -n(或 --name)。新 NSG 的名称。对于我们的方案,为 NSG-FrontEnd
  4. 运行 azure network nsg rule create 命令以创建允许从 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
    

    预期输出:

    info:    Executing command network nsg rule create
    info:    Looking up the network security group "NSG-FrontEnd"
    info:    Creating a network security rule "rdp-rule"
    info:    Looking up the network security group "NSG-FrontEnd"
    data:    Name                            : rdp-rule
    data:    Source address prefix           : INTERNET
    data:    Source Port                     : *
    data:    Destination address prefix      : *
    data:    Destination Port                : 3389
    data:    Protocol                        : TCP
    data:    Type                            : Inbound
    data:    Action                          : Allow
    data:    Priority                        : 100
    info:    network nsg rule create command OK
    

    参数:

    • -a(或 --nsg-name)。将在其中创建规则的 NSG 的名称。对于我们的方案,为 NSG-FrontEnd
    • -n(或 --name)。新规则的名称。对于我们的方案,为 rdp-rule
    • -c(或 --action)。规则的访问级别(拒绝或允许)。
    • -p(或 --protocol)。规则的协议(Tcp、Udp 或 *)。
    • -r(或 --type)。连接方向(入站或出站)。
    • -y(或 --priority)。规则的优先级。
    • -f(或 --source-address-prefix)。CIDR 中的源地址前缀或者使用默认标记。
    • -o(或 --source-port-range)。源端口或端口范围。
    • -e(或 --destination-address-prefix)。CIDR 中的目标地址前缀或者使用默认标记。
    • -u(或 --destination-port-range)。目标端口或端口范围。
  5. 运行 azure network nsg rule create 命令以创建允许从 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
    

    预期输出:

    info:    Executing command network nsg rule create
    info:    Looking up the network security group "NSG-FrontEnd"
    info:    Creating a network security rule "web-rule"
    info:    Looking up the network security group "NSG-FrontEnd"
    data:    Name                            : web-rule
    data:    Source address prefix           : INTERNET
    data:    Source Port                     : *
    data:    Destination address prefix      : *
    data:    Destination Port                : 80
    data:    Protocol                        : TCP
    data:    Type                            : Inbound
    data:    Action                          : Allow
    data:    Priority                        : 200
    info:    network nsg rule create command OK
    
  6. 运行 azure network nsg subnet add 命令以将 NSG 链接至前端子网。

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

    预期输出:

    info:    Executing command network nsg subnet add
    info:    Looking up the network security group "NSG-FrontEnd"
    info:    Looking up the subnet "FrontEnd"
    info:    Looking up network configuration
    info:    Creating a network security group "NSG-FrontEnd"
    info:    network nsg subnet add command OK
    

如何为后端子网创建 NSG

若要基于上述方案创建名为 NSG-BackEnd 的 NSG,请执行下面的步骤。

  1. 运行 azure network nsg create 命令以创建 NSG。

    azure network nsg create -l uswest -n NSG-BackEnd
    

    预期输出:

    info:    Executing command network nsg create
    info:    Creating a network security group "NSG-BackEnd"
    info:    Looking up the network security group "NSG-BackEnd"
    data:    Name                            : NSG-BackEnd
    data:    Location                        : China North
    data:    Security group rules:
    data:    Name                               Source IP           Source Port  Destination IP   Destination Port  Protocol  Type      Action  Prior
    ity  Default
    data:    ---------------------------------  ------------------  -----------  ---------------  ----------------  --------  --------  ------  -----
    ---  -------
    data:    ALLOW VNET OUTBOUND                VIRTUAL_NETWORK     *            VIRTUAL_NETWORK  *                 *         Outbound  Allow   65000
         true   
    data:    ALLOW VNET INBOUND                 VIRTUAL_NETWORK     *            VIRTUAL_NETWORK  *                 *         Inbound   Allow   65000
         true   
    data:    ALLOW AZURE LOAD BALANCER INBOUND  AZURE_LOADBALANCER  *            *                *                 *         Inbound   Allow   65001
         true   
    data:    ALLOW INTERNET OUTBOUND            *                   *            INTERNET         *                 *         Outbound  Allow   65001
         true   
    data:    DENY ALL OUTBOUND                  *                   *            *                *                 *         Outbound  Deny    65500
         true   
    data:    DENY ALL INBOUND                   *                   *            *                *                 *         Inbound   Deny    65500
         true   
    info:    network nsg create command OK
    

    参数:

    • -l(或 --location)。将在其中创建新 NSG 的 Azure 区域。对于我们的方案,为 chinanorth
    • -n(或 --name)。新 NSG 的名称。对于我们的方案,为 NSG-FrontEnd
  2. 运行 azure network nsg rule create 命令以创建允许从前端子网访问端口 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
    

    预期输出:

    info:    Executing command network nsg rule create
    info:    Looking up the network security group "NSG-BackEnd"
    info:    Creating a network security rule "sql-rule"
    info:    Looking up the network security group "NSG-BackEnd"
    data:    Name                            : sql-rule
    data:    Source address prefix           : 192.168.1.0/24
    data:    Source Port                     : *
    data:    Destination address prefix      : *
    data:    Destination Port                : 1433
    data:    Protocol                        : TCP
    data:    Type                            : Inbound
    data:    Action                          : Allow
    data:    Priority                        : 100
    info:    network nsg rule create command OK
    
  3. 运行 azure network nsg rule create 命令以创建拒绝访问 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
    

    预期输出:

    info:    Executing command network nsg rule create
    info:    Looking up the network security group "NSG-BackEnd"
    info:    Creating a network security rule "web-rule"
    info:    Looking up the network security group "NSG-BackEnd"
    data:    Name                            : web-rule
    data:    Source address prefix           : *
    data:    Source Port                     : *
    data:    Destination address prefix      : INTERNET
    data:    Destination Port                : 80
    data:    Protocol                        : TCP
    data:    Type                            : Outbound
    data:    Action                          : Deny
    data:    Priority                        : 200
    info:    network nsg rule create command OK
    
  4. 运行 azure network nsg subnet add 命令以将 NSG 链接至后端子网。

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

    预期输出:

    info:    Executing command network nsg subnet add
    info:    Looking up the network security group "NSG-BackEndX"
    info:    Looking up the subnet "BackEnd"
    info:    Looking up network configuration
    info:    Creating a network security group "NSG-BackEndX"
    info:    network nsg subnet add command OK