访问控制列表(ACL)是一组规则,用于调节网络内的入站和出站数据包流。 Azure 的 Nexus Network Fabric 服务提供基于 API 的机制,用于为网络到网络互连和第 3 层隔离域外部网络配置 ACL。 本指南概述了创建 ACL 的步骤。
创建访问控制列表 (ACL)
若要创建 ACL 并定义其属性,可以使用该 az networkfabric acl create 命令。 下面是涉及的步骤:
先决条件
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
出现提示时,请在首次使用时安装 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>}]}]"
| 参数 | 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-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 以供进一步引用。