Поделиться через


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

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

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

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

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

Параметр Description Пример или диапазон
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
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 Operator Nexus поддерживает только inline. Пример: inline.

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

  • Встроенные порты и встроенные виртуальные ЛС — это статический способ определения портов или виртуальных ЛС с помощью azcli.
  • portGroupNames и vlanGroupNames являются динамическими способами определения портов и виртуальных ЛС.
  • Встроенные порты и portGroupNames вместе не допускаются.
  • Встроенные виртуальные локальные сети и vlanGroupNames вместе не допускаются.
  • ipGroupNames и ipPrefixValues вместе не допускаются.
  • Исходящие списки управления доступом не поддерживают опции IP, длину IP, фрагмент, EtherType, маркировку DSCP или значения TTL.
  • ACLы входящего трафика (Ingress) не поддерживают параметры 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 protected]",
        "createdByType": "User",
        "createdAt": "2023-06-09T04:51:41.251Z",
        "lastModifiedBy": "UserId",
        "lastModifiedByType": "User",
        "lastModifiedAt": "2023-06-09T04:51:41.251Z"
    }
}

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

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

Следующая команда обновляет ссылку Диспетчера ресурсов для ресурса 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

Чтобы перечислить все 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 protected]",
        "createdByType": "User",
        "lastModifiedAt": "2023-09-11T10:20:20.2617941Z",
        "lastModifiedBy": "[email protected]",
        "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 protected]",
        "createdByType": "User",
        "lastModifiedAt": "2023-09-11T10:27:27.2317467Z",
        "lastModifiedBy": "[email protected]",
        "lastModifiedByType": "User"
    },
    "type": "microsoft.managednetworkfabric/accesscontrollists"
}