为 NNI 和第 3 层隔离域外部网络创建访问控制列表 (ACL) 管理

访问控制列表(ACL)是一组规则,用于调节网络内的入站和出站数据包流。 Azure 的 Nexus Network Fabric 服务提供基于 API 的机制,用于为网络到网络互连和第 3 层隔离域外部网络配置 ACL。 本指南概述了创建 ACL 的步骤。

创建访问控制列表 (ACL)

若要创建 ACL 并定义其属性,可以使用该 az networkfabric acl create 命令。 下面是涉及的步骤:

先决条件

  1. 设置订阅(如有必要):

如果有多个订阅,并且需要将一个订阅设置为默认值,则可以执行以下操作:

az account set --subscription <subscription-id>
  1. 创建 ACL:
    az networkfabric acl create --resource-group "<resource-group>" --location "<location>" --resource-name "<acl-name>" --annotation "<annotation>" --configuration-type "<configuration-type>" --default-action "<default-action>" --match-configurations "[{matchConfigurationName:<match-config-name>,sequenceNumber:<sequence-number>,ipAddressType:<IPv4/IPv6>,matchConditions:[{ipCondition:{type:<SourceIP/DestinationIP>,prefixType:<Prefix/Exact>,ipPrefixValues:['<ip-prefix1>', '<ip-prefix2>', ...]}}],actions:[{type:<Action>}]}]"
参数 Description
资源组 指定网络结构体的资源组。
位置 定义创建 ACL 的位置。
资源名称 提供 ACL 的名称。
注释 (可选)添加 ACL 的说明或注释。
配置类型 指定配置是内联还是通过文件。
默认操作 如果未找到匹配项,请定义要执行的默认操作。
匹配的配置 定义流量匹配的条件和动作。
行动 指定要根据匹配条件执行的操作。

参数使用指南

下表提供有关创建 ACL 时参数用法的指导:

参数 Description 示例或范围
defaultAction 定义要执行的默认操作 “defaultAction”: “允许”
resource-group 网络构造的资源组 nfresourcegroup
resource-name ACL 的名称 example-ingressACL
vlan组 VLAN 组列表
VLAN 需要匹配的 VLAN 列表
匹配配置 匹配配置的名称 example_acl
matchConditions 匹配所需的条件
ttl值 TTL [生存时间] 0-255
dscpMarking 需要匹配的 DSCP 标记 0-63
碎片 指定 IP 片段数据包 范围:1-8191
示例:[1、5、1250-1300、8000-8191]
portCondition 端口 需要匹配的端口条件
端口类型 需要匹配的端口类型 示例:SourcePort
ports 需要匹配的端口号 范围:0-65535
示例:[1、10、500、1025-1050、64000-65535]
协议类型 需要匹配的协议 [tcp, udp, range[1-2, 1, 2]]
vlanMatchCondition 需要匹配的 VLAN 匹配条件
layer4协议 第 4 层协议 应为 TCP 或 UDP
ip条件 需要匹配的 IP 条件
行动 基于匹配条件需要采取的行动 示例:permit
配置类型 配置类型(嵌入式或文件) 示例:内联

注释

  • 使用 azcli 静态定义内联端口和内联 VLAN。
  • PortGroupNames 和 VlanGroupNames 是动态定义的。
  • 不允许将内联端口与 portGroupNames 组合在一起,这同样适用于内联 VLAN 和 VLANGroupName。
  • 无法组合 IPGroupNames 和 IpPrefixValues。
  • 出口 ACL 不支持某些选项,例如 IP 选项、IP 长度、片段、以太网类型、DSCP 标记和 TTL 值。
  • 入口 ACL 不支持以下选项:etherType。
  • 端口输入可以是 port-numberrange-of-ports
  • 片段输入可以是 port-numberrange-of-ports
  • 不支持在永恒网络上进行动态匹配配置的 ACL。

ACL 创建示例有效载荷

az networkfabric acl create --resource-group "example-rg" --location "eastus2euap" --resource-name "example-Ipv4ingressACL" --annotation "annotation" --configuration-type "Inline" --default-action "Deny" --match-configurations "[{matchConfigurationName:example-match,sequenceNumber:1110,ipAddressType:IPv4,matchConditions:[{ipCondition:{type:SourceIP,prefixType:Prefix,ipPrefixValues:['10.18.0.124/30','10.18.0.128/30','10.18.30.16/30','10.18.30.20/30']}},{ipCondition:{type:DestinationIP,prefixType:Prefix,ipPrefixValues:['10.18.0.124/30','10.18.0.128/30','10.18.30.16/30','10.18.30.20/30']}}],actions:[{type:Count}]}]"

示例输出

{
  "administrativeState": "Disabled",
  "annotation": "annotation",
  "configurationState": "Succeeded",
  "configurationType": "Inline",
  "defaultAction": "Deny",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/Fab3LabNF-4-0/providers/Microsoft.ManagedNetworkFabric/accessControlLists/L3domain091123-Ipv4egressACL",
  "location": "eastus2euap",
  "matchConfigurations": [
    {
      "actions": [
        {
          "type": "Count"
        }
      ],
      "ipAddressType": "IPv4",
      "matchConditions": [
        {
          "ipCondition": {
            "ipPrefixValues": [
              "10.18.0.124/30",
              "10.18.0.128/30",
              "10.18.30.16/30",
              "10.18.30.20/30"
            ],
            "prefixType": "Prefix",
            "type": "SourceIP"
          }
        },
        {
          "ipCondition": {
            "ipPrefixValues": [
              "10.18.0.124/30",
              "10.18.0.128/30",
              "10.18.30.16/30",
              "10.18.30.20/30"
            ],
            "prefixType": "Prefix",
            "type": "DestinationIP"
          }
        }
      ],
      "matchConfigurationName": "example-Ipv4ingressACL ",
      "sequenceNumber": 1110
    }
  ],
  "name": "example-Ipv4ingressACL",
  "provisioningState": "Succeeded",
  "resourceGroup": "Fab3LabNF-4-0",
  "systemData": {
    "createdAt": "2023-09-11T10:20:20.2617941Z",
    "createdBy": "user@email.com",
    "createdByType": "User",
    "lastModifiedAt": "2023-09-11T10:20:20.2617941Z",
    "lastModifiedBy": "user@email.com",
    "lastModifiedByType": "User"
  },
  "type": "microsoft.managednetworkfabric/accesscontrollists"
}

注释

创建 ACL 后,请确保记下 ACL 引用 ID 以供进一步引用。

后续步骤

将访问控制列表(ACL)应用于 Azure Fabric 中的 NNI