你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

访问控制列表创建和配置示例

本文提供了有关如何创建和更新访问控制列表(ACLS)的示例。

ACL 创建流的概述

创建与网络到网络互连(NNI)关联的访问控制列表(ACL)涉及以下步骤:

  • 创建 Network Fabric 资源并向其添加 NNI 子资源。

  • 使用 az networkfabric acl create 命令创建入口和出口 ACL 资源。 可以为 ACL 提供匹配配置和默认操作。 还可以提供内联或存储在 Azure 存储帐户 Blob 容器中的文件中的动态匹配配置。

  • 使用 az networkfabric nni update 命令使用入口和出口 ACL ID 更新 NNI 资源。 需要在参数--egress-acl-id--ingress-acl-id提供有效的 ACL 资源 ID。

  • 使用 az networkfabric fabric provision 命令预配 Network Fabric 资源。 这会生成 ACL 的基本配置和动态匹配配置,并将其发送到设备。

ACL 更新流的概述

  • 使用上一部分所述创建 az networkfabric acl create 入口和出口 ACL 资源。

  • 使用 az networkfabric acl update 命令更新入口或出口 ACL。

  • 验证 ACL 的配置状态是否为 accepted

  • 验证构造的配置状态。accepted

  • 执行构造提交以更新 ACL。

示例命令

访问控制网络到网络互连上的列表

此示例演示如何创建包含两个 ACL 的 NNI - 一个用于入口,一个用于出口。

预配网络结构之前,必须应用 ACL。 此限制是暂时性的,将在将来的版本中删除。 在 NNI 资源之前创建入口和出口 ACL,并在创建 NNI 时引用,这也会触发 ACL 的创建。 在预配网络构造之前,必须完成此配置。

创建入口 ACL:示例命令

az networkfabric acl create \
    --resource-group "example-rg"
    --location "eastus2euap" \
    --resource-name "example-Ipv4ingressACL" \
    --configuration-type "Inline" \
    --default-action "Permit" \
    --dynamic-match-configurations "[{ipGroups:[{name:'example-ipGroup',ipAddressType:IPv4,ipPrefixes:['10.20.3.1/20']}],vlanGroups:[{name:'example-vlanGroup',vlans:['20-30']}],portGroups:[{name:'example-portGroup',ports:['100-200']}]}]" \
    --match-configurations "[{matchConfigurationName:'example-match',sequenceNumber:123,ipAddressType:IPv4,matchConditions:[{etherTypes:['0x1'],fragments:['0xff00-0xffff'],ipLengths:['4094-9214'],ttlValues:[23],dscpMarkings:[32],portCondition:{flags:[established],portType:SourcePort,layer4Protocol:TCP,ports:['1-20']},protocolTypes:[TCP],vlanMatchCondition:{vlans:['20-30'],innerVlans:[30]},ipCondition:{type:SourceIP,prefixType:Prefix,ipPrefixValues:['10.20.20.20/12']}}],actions:[{type:Count,counterName:'example-counter'}]}]"

创建出口 ACL:示例命令

az networkfabric acl create \
    --resource-group "example-rg" \
    --location "eastus2euap" \
    --resource-name "example-Ipv4egressACL" \
    --configuration-type "File" \
    --acls-url "https://ACL-Storage-URL" \
    --default-action "Permit" \
    --dynamic-match-configurations "[{ipGroups:[{name:'example-ipGroup',ipAddressType:IPv4,ipPrefixes:['10.20.3.1/20']}],vlanGroups:[{name:'example-vlanGroup',vlans:['20-30']}],portGroups:[{name:'example-portGroup',ports:['100-200']}]}]"

访问控制隔离域外部网络上的列表

az networkfabric acl create使用命令为外部网络创建入口和出口 ACL。 在此示例中,我们指定资源组、名称、位置、网络结构 ID、外部网络 ID 和其他参数。 还可以使用 --match 和参数为 ACL 规则指定匹配条件和 --action 操作。

此命令创建一个名为 acl-ingress 允许从任何源到外部网络的 ICMP 流量的入口 ACL:

az networkfabric acl create \
    --resource-group myResourceGroup \
    --name acl-ingress \
    --location eastus \
    --network-fabric-id /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.NetworkFabric/networkFabrics/myNetworkFabric \
    --external-network-id /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.NetworkFabric/externalNetworks/ext-net \
    --match "ip protocol icmp" \
    --action allow

使用 az networkfabric externalnetwork update 命令使用资源组、名称和网络结构 ID 更新外部网络。 还需要使用 --ingress-acl-id--egress-acl-id 参数指定入口和出口 ACL ID。 例如,以下命令更新名为 ext-net 引用入口 ACL acl-ingress的外部网络:

az networkfabric externalnetwork update \
    --resource-group myResourceGroup \
    --name ext-net \
    --network-fabric-id /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.NetworkFabric/networkFabrics/myNetworkFabric \
    --ingress-acl-id /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.NetworkFabric/acls/acl-ingress

更多示例方案和命令

若要为拒绝除 HTTP 和 HTTPS 以外的所有流量的 NNI 创建出口 ACL,可以使用以下命令:

az networkfabric acl create \
    --name acl-egress \
    --resource-group myResourceGroup \
    --nni-id /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.NetworkFabric/networkInterfaces/myNni \
    --match "ip protocol tcp destination port 80 or 443" \
    --action allow \
    --default-action deny

若要更新现有 ACL 以添加新的匹配条件和操作,可以使用以下命令:

az networkfabric acl update \
    --name acl-ingress \
    --resource-group myResourceGroup \
    --match "ip protocol icmp" \
    --action allow \
    --append-match-configurations

若要列出资源组中的所有 ACL,可以使用以下命令:

az networkfabric acl list --resource-group myResourceGroup

若要显示特定 ACL 的详细信息,可以使用以下命令:

az networkfabric acl show \
    --name acl-ingress \
    --resource-group myResourceGroup

若要删除 ACL,可以使用以下命令:

az networkfabric acl delete \
    --name acl-egress \
    --resource-group myResourceGroup