NNI とレイヤー 3 分離ドメイン外部ネットワークのアクセス制御リスト (ACL) 管理の作成
アクセス制御リスト (ACL) は、ネットワーク内の受信および送信パケット フローを規制する一連の規則です。 Azure の Nexus Network Fabric サービスでは、ネットワーク間相互接続とレイヤー 3 分離ドメイン外部ネットワークの ACL を構成する API ベースのメカニズムが提供されます。 このガイドでは、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 を実行します。
- サブスクリプションを設定する (必要な場合):
複数のサブスクリプションがあり、1 つを既定値として設定する必要がある場合は、以下を使用して行うことができます。
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 の名前を指定します。 |
Annotation | 必要に応じて、ACL の説明または注釈を追加します。 |
[構成の種類] | 構成をインラインにするか、ファイルを使用するかを指定します。 |
既定の動作 | 一致するものが見つからない場合に実行する既定のアクションを定義します。 |
一致構成 | 一致するトラフィックの条件とアクションを定義します。 |
アクション | 一致条件に基づいて実行されるアクションを指定します。 |
パラメーターの使用に関するガイダンス
以下の表には、ACL を作成するときのパラメーターの使用方法に関するガイダンスが示されています。
パラメーター | 説明 | 例または範囲 |
---|---|---|
defaultAction | 実行される既定のアクションを定義します | "defaultAction": "Permit" |
resource-group | ネットワーク ファブリックのリソース グループ | nfresourcegroup |
resource-name | ACL の名前 | example-ingressACL |
vlanGroups | VLAN グループの一覧 | |
vlans | 一致する必要がある VLAN の一覧 | |
match-configurations | 一致構成の名前 | example_acl |
matchConditions | 一致する必要がある条件 | |
ttlValues | TTL [Time To Live] | 0 - 255 |
dscpMarking | 一致する必要がある DSCP マーキング | 0-63 |
fargments | 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 条件 | |
アクション | 一致条件に基づいて実行されるアクション | 例: permit |
configuration-type | 構成の種類 (インラインまたはファイル) | 例: inline |
Note
- インライン ポートとインライン VLAN は、azcli を使用して静的に定義されます。
- PortGroupNames と VlanGroupNames は動的に定義されます。
- インライン ポートと portGroupNames の組み合わせは許可されません。インライン VLAN と VLANGroupName の場合も同様です。
- IPGroupNames と IpPrefixValues を組み合わせることはできません。
- エグレス ACL では、IP オプション、IP の長さ、フラグメント、Ether の種類、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"
}
Note
ACL を作成した後、さらに参照するために ACL 参照 ID を必ずメモしておいてください。