Создание списков управления доступом в NNI в Операторе Azure Nexus

В Операторе Azure Nexus списки управления доступом (ACL) и Deny действия на уровне сетевого взаимодействия (NNI) Permit помогают защитить доступ Secure Shell (SSH) в виртуальной частной сети управления (VPN). Перед созданием ресурсов NNI вы создаете списки управления доступом и исходящего трафика, а затем ссылаетесь на эти списки управления доступом в полезных данных NNI. Перед подготовкой сетевой структуры необходимо создать ссылки на ingress и исходящие списки управления доступом.

Ниже приведены общие шаги по созданию ACL в NNI:

  1. Создайте входящий трафик NNI и исходящие списки управления доступом.
  2. Обновите ссылку на ресурсы Azure Resource Manager в NNI управления.
  3. Создайте NNI и подготовьте сетевую структуру.

Руководство по использованию параметров

Параметр Описание Пример или диапазон
defaultAction Действие по умолчанию, выполняемое. Если он не определен, трафик разрешен. "defaultAction": "Permit"
resource-group Группа ресурсов сетевой структуры. nfresourcegroup
resource-name Имя ACL. example-ingressACL
vlanGroups Список групп виртуальной локальной сети (VLAN).
vlans Список виртуальных ЛС, которые необходимо сопоставить.
match-configurations Имя конфигурации соответствия. example_acl. Пробелы и амперсанд (&) не поддерживаются.
matchConditions Условия, необходимые для сопоставления.
ttlValues Время жизни (TTL). 0-255
dscpMarking Маркированные маркировки точки кода служб (DSCP), которые необходимо сопоставить. 0-63
portCondition Условие порта, которое необходимо сопоставить.
portType Тип порта, который необходимо сопоставить. Пример: SourcePort. Допустимые значения: DestinationPort, SourcePort.
protocolTypes Протоколы, которые необходимо сопоставить. [tcp, udp, range[1-2, 1, 2]]. Если это номер протокола, он должен находиться в диапазоне 1-255.
vlanMatchCondition Условие соответствия виртуальной локальной сети, которое необходимо сопоставить.
layer4Protocol Протокол уровня 4. Должен быть TCP или UDP.
ipCondition Условие IP, которое необходимо сопоставить.
actions Действие, выполняемое на основе условия соответствия. Пример: permit.
configuration-type Тип конфигурации, который может быть встроенным или файлом. В настоящее время Оператор Azure Nexus поддерживает только встроенные функции. Пример: inline.

Кроме того, следует учитывать следующие ограничения:

  • Встроенные порты и встроенные виртуальные ЛС — это статический способ определения портов или виртуальных ЛС с помощью azcli.
  • portGroupNames и vlanGroupNames являются динамическими способами определения портов и виртуальных ЛС.
  • Встроенные порты и portGroupNames вместе не допускаются.
  • Встроенные виртуальные локальные сети и vlanGroupNames вместе не допускаются.
  • ipGroupNames и ipPrefixValues вместе не допускаются.
  • Исходящие списки управления доступом не поддерживают параметры IP, длину IP, фрагмент, эфир, маркировку DSCP или значения TTL.
  • Списки управления доступом входящего трафика не поддерживают параметры EtherType.

Создание ACL для входящего трафика

Чтобы создать ACL для входящего трафика, можно использовать следующую команду Azure CLI. Эта команда создает 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'}]}]"

Ожидаемые выходные данные

{
    "properties": {
        "lastSyncedTime": "2023-06-17T08:56:23.203Z",
        "configurationState": "Succeeded",
        "provisioningState": "Accepted",
        "administrativeState": "Enabled",
        "annotation": "annotation",
        "configurationType": "File",
        "aclsUrl": "https://ACL-Storage-URL",
        "matchConfigurations": [{
            "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",
                    "l4Protocol": "TCP",
                    "ports": ["1-20"],
                    "portGroupNames": ["example-portGroup"]
                },
                "protocolTypes": ["TCP"],
                "vlanMatchCondition": {
                    "vlans": ["20-30"],
                    "innerVlans": [30],
                    "vlanGroupNames": ["example-vlanGroup"]
                },
                "ipCondition": {
                    "type": "SourceIP",
                    "prefixType": "Prefix",
                    "ipPrefixValues": ["10.20.20.20/12"],
                    "ipGroupNames": ["example-ipGroup"]
                }
            }]
        }],
        "actions": [{
            "type": "Count",
            "counterName": "example-counter"
        }]
    },
    "tags": {
        "keyID": "KeyValue"
    },
    "location": "eastUs",
    "id": "/subscriptions/xxxxxx/resourceGroups/resourcegroupname/providers/Microsoft.ManagedNetworkFabric/accessControlLists/acl",
    "name": "example-Ipv4ingressACL",
    "type": "microsoft.managednetworkfabric/accessControlLists",
    "systemData": {
        "createdBy": "email@address.com",
        "createdByType": "User",
        "createdAt": "2023-06-09T04:51:41.251Z",
        "lastModifiedBy": "UserId",
        "lastModifiedByType": "User",
        "lastModifiedAt": "2023-06-09T04:51:41.251Z"
    }
}

Создание ACL исходящего трафика

Чтобы создать ACL исходящего трафика, можно использовать следующую команду Azure CLI. Эта команда создает agress 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']}]}]"

Ожидаемые выходные данные

{
    "properties": {
        "lastSyncedTime": "2023-06-17T08:56:23.203Z",
        "configurationState": "Succeeded",
        "provisioningState": "Accepted",
        "administrativeState": "Enabled",
        "annotation": "annotation",
        "configurationType": "File",
        "aclsUrl": "https://ACL-Storage-URL",
        "dynamicMatchConfigurations": [{
            "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"]
            }]
        }]
    },
    "tags": {
        "keyID": "KeyValue"
    },
    "location": "eastUs",
    "id": "/subscriptions/xxxxxx/resourceGroups/resourcegroupname/providers/Microsoft.ManagedNetworkFabric/accessControlLists/acl",
    "name": "example-Ipv4egressACL",
    "type": "microsoft.managednetworkfabric/accessControlLists",
    "systemData": {
        "createdBy": "email@address.com",
        "createdByType": "User",
        "createdAt": "2023-06-09T04:51:41.251Z",
        "lastModifiedBy": "UserId",
        "lastModifiedByType": "User",
        "lastModifiedAt": "2023-06-09T04:51:41.251Z"
    }
}

Обновление ссылки на Resource Manager

Этот шаг позволяет создавать списки управления доступом (входящий трафик и исходящий трафик, если указана ссылка) во время создания ресурса NNI. После создания NNI и перед подготовкой сетевой структуры можно выполнить повторное размещение в NNI.

  • ingressAclId: идентификатор ссылки для списка ACL для входящего трафика.
  • egressAclId: идентификатор ссылки для ACL исходящего трафика.

Чтобы получить идентификатор ресурса Resource Manager, перейдите в группу ресурсов подписки, которую вы используете.

Следующая команда обновляет ссылку Resource Manager для ресурса NNI, связав ее с предоставленными входящего трафика и исходящими списками управления доступом. Настройте параметры по мере необходимости для вашего варианта использования.

az networkfabric nni create
--resource-group "example-rg"
--fabric "example-fabric"
--resource-name "example-nniwithACL"
--nni-type "CE"
--is-management-type "True"
--use-option-b "True"
--layer2-configuration "{interfaces:['/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/networkDevices/example-networkDevice/networkInterfaces/example-interface'],mtu:1500}"
--option-b-layer3-configuration "{peerASN:28,vlanId:501,primaryIpv4Prefix:'10.18.0.124/30',secondaryIpv4Prefix:'10.18.0.128/30',primaryIpv6Prefix:'10:2:0:124::400/127',secondaryIpv6Prefix:'10:2:0:124::402/127'}"
--ingress-acl-id "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accesscontrollists/example-Ipv4ingressACL"
--egress-acl-id "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accesscontrollists/example-Ipv4egressACL"

Отображение сведений об ACL

Чтобы отобразить сведения о указанном ACL, используйте следующую команду:

az networkfabric acl show --resource-group "example-rg" --resource-name "example-acl"

Вывод списков ACL

Чтобы перечислить все списки управления доступом в указанной группе ресурсов, используйте следующую команду:

az networkfabric acl list --resource-group "ResourceGroupName"

Создание списков управления доступом в внешней сети ISD

Используйте следующие сведения для создания входящих и исходящих списков управления доступом для внешней сети (ISD). Затем обновите ссылку на ресурсы Resource Manager для внешней сети.

Создание ACL исходящего трафика для внешней сети ISD

Чтобы создать ACL исходящего трафика для указанной внешней сети ISD с предоставленной конфигурацией, используйте следующую команду. Настройте параметры по мере необходимости для вашего варианта использования.

az networkfabric acl create
--resource-group "example-rg"
--location "eastus2euap"
--resource-name "example-Ipv4egressACL"
--annotation "annotation"
--configuration-type "Inline"
--default-action "Deny"
--match-configurations "[{matchConfigurationName:'L3ISD_EXT_OPTA_EGRESS_ACL_IPV4_CE_PE',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}]}]"

Ожидаемые выходные данные

После успешного выполнения команда возвращает сведения о созданном ACL в следующем формате. Эти выходные данные содержат сведения о конфигурации и состоянии.

{
    "administrativeState": "Disabled",
    "annotation": "annotation",
    "configurationState": "Succeeded",
    "configurationType": "Inline",
    "defaultAction": "Deny",
    "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accessControlLists/example-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": "L3ISD_EXT_OPTA_EGRESS_ACL_IPV4_CE_PE",
            "sequenceNumber": 1110
        }
    ],
    "name": "example-Ipv4egressACL",
    "provisioningState": "Succeeded",
    "resourceGroup": "example-rg",
    "systemData": {
        "createdAt": "2023-09-11T10:20:20.2617941Z",
        "createdBy": "email@address.com",
        "createdByType": "User",
        "lastModifiedAt": "2023-09-11T10:20:20.2617941Z",
        "lastModifiedBy": "email@address.com",
        "lastModifiedByType": "User"
    },
    "type": "microsoft.managednetworkfabric/accesscontrollists"
}

Создание ACL входящего трафика для внешней сети ISD

Чтобы создать ACL для указанной внешней сети ISD с предоставленной конфигурацией, используйте следующую команду. Настройте параметры по мере необходимости для вашего варианта использования.

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:'L3ISD_EXT_OPTA_INGRESS_ACL_IPV4_CE_PE',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}]}]"

Ожидаемые выходные данные

После успешного выполнения команда возвращает сведения о созданном ACL в следующем формате. Эти выходные данные содержат сведения о конфигурации и состоянии.

{
    "administrativeState": "Disabled",
    "annotation": "annotation",
    "configurationState": "Succeeded",
    "configurationType": "Inline",
    "defaultAction": "Deny",
    "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accessControlLists/example-Ipv4ingressACL",
    "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": "L3ISD_EXT_OPTA_INGRESS_ACL_IPV4_CE_PE",
            "sequenceNumber": 1110
        }
    ],
    "name": "example-Ipv4ingressACL",
    "provisioningState": "Succeeded",
    "resourceGroup": "example-rg",
    "systemData": {
        "createdAt": "2023-09-11T10:20:20.2617941Z",
        "createdBy": "email@address.com",
        "createdByType": "User",
        "lastModifiedAt": "2023-09-11T10:27:27.2317467Z",
        "lastModifiedBy": "email@address.com",
        "lastModifiedByType": "User"
    },
    "type": "microsoft.managednetworkfabric/accesscontrollists"
}