你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
为 NNI 和第 3 层隔离域外部网络创建访问控制列表 (ACL)
访问控制列表 (ACL) 是一组规则,用于调节网络内的入站和出站数据包流。 Azure 的关系网络结构服务提供基于 API 的机制,用于为网络到网络互连和第 3 层隔离域外部网络配置 ACL。 本指南概述了创建 ACL 的步骤。
创建访问控制列表 (ACL)
若要创建 ACL 并定义其属性,可以使用 az networkfabric acl create
命令。 相关步骤如下:
先决条件
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 中的 Bash 快速入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
- 设置订阅(如有必要):
如果你有多个订阅,并且需要将一个订阅设置为默认值,则可以执行以下操作:
az account set --subscription <subscription-id>
- 创建 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>}]}]"
参数 | 说明 |
---|---|
资源组 | 指定网络结构的资源组。 |
位置 | 定义在其中创建 ACL 的位置。 |
资源名称 | 提供 ACL 的名称。 |
注释 | (可选)添加 ACL 的说明或注释。 |
配置类型 | 指定是要以内联方式还是使用文件完成配置。 |
默认操作 | 定义找不到匹配项时要执行的默认操作。 |
匹配配置 | 定义用于流量匹配的条件和操作。 |
操作 | 指定要根据匹配条件执行的操作。 |
参数用法指南
下表提供了创建 ACL 时的参数用法指南:
参数 | 说明 | 示例或范围 |
---|---|---|
defaultAction | 定义要执行的默认操作 | "defaultAction": "Permit" |
resource-group | 网络结构的资源组 | nfresourcegroup |
resource-name | ACL 的名称 | example-ingressACL |
vlanGroups | VLAN 组的列表 | |
vlans | 需要匹配的 VLAN 列表 | |
match-configurations | 匹配配置的名称 | example_acl |
matchConditions | 需要匹配的条件 | |
ttlValues | TTL [生存时间] | 0-255 |
dscpMarking | 需要匹配的 DSCP 标记 | 0-63 |
片段 | 指定 IP 分段数据包 | 范围:1-8191 示例:[1, 5, 1250-1300, 8000-8191] |
portCondition | 需要匹配的端口条件 | |
portType | 需要匹配的端口类型 | 示例:SourcePort |
ports | 需要匹配的端口号 | 范围:0-65535 示例:[1, 10, 500, 1025-1050, 64000-65535] |
protocolTypes | 需要匹配的协议 | [tcp, udp, range[1-2, 1, 2]] |
vlanMatchCondition | 需要匹配的 VLAN 匹配条件 | |
layer4Protocol | 第 4 层协议 | 应为 TCP 或 UDP |
ipCondition | 需要匹配的 IP 条件 | |
actions | 要根据匹配条件执行的操作 | 示例:permit |
configuration-type | 配置类型(内联或文件) | 示例:inline |
注意
- 内联端口和内联 VLAN 是使用 azcli 静态定义的。
- PortGroupNames 和 VlanGroupNames 是动态定义的。
- 不允许将内联端口与 portGroupNames 组合在一起,这同样适用于内联 VLAN 和 VLANGroupNames。
- 不能将 IPGroupNames 和 IpPrefixValues 组合在一起。
- 出口 ACL 不支持某些选项,例如 IP 选项、IP 长度、片段、以太网类型、DSCP 标记和 TTL 值。
- 入口 ACL 不支持以下选项:etherType。
- 端口输入可以是
port-number
或range-of-ports
。 - 分段输入可以是
port-number
或range-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 以供进一步参考。