存取控制清單 (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 的名稱。 |
| Annotation | 或者,新增 ACL 的說明或註解。 |
| 組態類型 | 指定組態是內嵌還是使用檔案。 |
| 默認動作 | 定義找不到相符項目時要採取的預設動作。 |
| 匹配設定 | 定義流量比對的條件和動作。 |
| 行動 | 依照匹配條件指定要採取的行動。 |
參數使用指引
下表提供建立ACL時使用引數的指引:
| 參數 | Description | 範例或範圍 |
|---|---|---|
| defaultAction | 定義要採取的預設動作 | “defaultAction”: “允許” |
| 資源群組 | 網路網狀架構的資源群組 | nfresourcegroup |
| 資源名稱 | ACL 名稱 | 範例入口ACL |
| vlan組 | VLAN組列表 | |
| VLAN | 需要匹配的VLAN清單 | |
| 匹配設定 | 比對組態的名稱 | example_acl |
| matchConditions | 需要匹配的條件 | |
| ttl值 | TTL [生存時間] | 0-255 |
| dscp標記 | 需要比對的DSCP標記 | 0-63 |
| 碎片 | 指定 IP 片段封包 | 範圍:1-8191 範例:[1, 5, 1250-1300, 8000-8191] |
| portCondition 埠 | 需要比對的連接埠條件 | |
| 埠類型 | 需要比對的埠類型 | 範例:SourcePort |
| ports | 需要比對的連接埠號碼 | 範圍:0-65535 範例:[1, 10, 500, 1025-1050, 64000-65535] |
| protocol類型 | 需要匹配的協議 | [tcp,udp,範圍[1-2,1,2]] |
| vlanMatchCondition | 需要匹配的VLAN匹配條件 | |
| layer4協定 | 第 4 層協議 | 應該是 TCP 或 UDP |
| ip條件 | 需要比對的IP條件 | |
| 行為 | 根據匹配條件應採取的行動 | 預設動作:允許 其他可能行動:PoliceRate、Drop、Count PoliceRate 動作在本頁稍後會有詳細說明。 |
| 組態類型 | 配置類型(內嵌或檔案) | 範例:內嵌 |
備註
- 內嵌埠和內嵌 VLAN 是使用 azcli 靜態定義。
- PortGroupNames和VlanGroupNames是動態定義的。
- 不允許將內聯埠與 portGroupNames 合併,內聯 VLAN 和 VLANGroupNames 亦然。
- IPGroupNames 和 IpPrefixValues 無法合併。
- 出口 ACL 不支援某些選項,如 IP 選項、IP 長度、片段、以太類型、DSCP 標記和 TTL 值。
- Ingress 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以供進一步參考。
透過流量政策進行頻寬限制
從支援的 NF 版本開始,ACL 支援透過流量政策框架進行速率限制。 根據匹配的條件,此操作將 ACL 行為從簡單的允許/拒絕模式轉換為更細緻的流量控制機制。 這使得 IPv4 和 IPv6 流量的頻寬規範成為可能。
主要功能
- 可選配置:預設不設速率限制;必須明確設定。
- 範圍:適用於——
- 網路對網路互連(NNI)
- 外部網路選項A與選項B子介面
- 支援的 ACL 類型:ControlPlaneTrafficPolicy、租戶與管理
參數
速率:持續流量吞吐量
單位:bps、kbps、mbps、gbps、pps
突發大小:超出定義速率
的臨時允許額度 單位:位元組、kbytes、mbytes、封包
API 範例:
"actions": [
{
"type": "PoliceRate",
"policeRateConfiguration":
{
"bitRate":
{
"rate": 1000,
"unit": "Kbps"
},
"burstSize":
{
"size": 10,
"unit": "KBytes"
} } } ]
Configuration:
traffic-policies
cpu traffic-policy <NF-Name>-cptp-police-rate-acl vrf all
traffic-policy <NF-Name>-cptp-police-rate-acl
match <NF-Name>-cptp-police-rate-match ipv4
protocol neighbors bgp
!
actions
police rate 1000 kbps burst-size 10 kbytes
!
match ipv4-all-default ipv4
!
match ipv6-all-default ipv6
備註
當 NNI ACL 定義警察速率時,突發大小是必須的。