Condividi tramite


Creare elenchi di controllo di accesso in un NNI in Azure Operator Nexus

In Azure Operator Nexus gli elenchi di controllo di accesso (ACL) per Permit le azioni e Deny a livello di interconnessione da rete a rete (NNI) consentono di proteggere l'accesso Secure Shell (SSH) nella rete privata virtuale di gestione (VPN). È possibile creare elenchi di controllo di accesso in ingresso e in uscita prima della creazione di risorse NNI e quindi fare riferimento a tali elenchi di controllo di accesso nel payload NNI. Prima di effettuare il provisioning dell'infrastruttura di rete, è necessario creare ACL in ingresso e in uscita a cui si fa riferimento.

Questi sono i passaggi generali per la creazione di un ACL in un NNI:

  1. Creare elenchi di controllo di accesso in ingresso e uscita NNI.
  2. Aggiornare il riferimento alle risorse di Azure Resource Manager in un NNI di gestione.
  3. Creare un NNI ed effettuare il provisioning dell'infrastruttura di rete.

Indicazioni sull'utilizzo dei parametri

Parametro Descrizione Esempio o intervallo
defaultAction Azione predefinita da eseguire. Se non lo si definisce, il traffico è consentito. "defaultAction": "Permit"
resource-group Gruppo di risorse dell'infrastruttura di rete. nfresourcegroup
resource-name Nome dell'elenco di controllo di accesso. example-ingressACL
vlanGroups Elenco di gruppi VLAN (Virtual Local Area Network).
vlans Elenco di VLAN che devono essere abbinate.
match-configurations Nome della configurazione della corrispondenza. example_acl. Gli spazi e il carattere di e commerciale (&) non sono supportati.
matchConditions Condizioni che devono essere soddisfatte.
ttlValues Durata (TTL). 0-255
dscpMarking Contrassegni DSCP (Differentiated Services Code Point) che devono essere confrontati. 0-63
portCondition Condizione di porta che deve essere trovata in corrispondenza.
portType Tipo di porta che deve essere confrontato. Esempio: SourcePort. Valori consentiti: DestinationPort, SourcePort.
protocolTypes Protocolli che devono essere confrontati. [tcp, udp, range[1-2, 1, 2]]. Se si tratta di un numero di protocollo, deve essere compreso nell'intervallo di 1-255.
vlanMatchCondition Condizione di corrispondenza VLAN che deve essere trovata.
layer4Protocol Protocollo di livello 4. Deve essere TCP o UDP.
ipCondition Condizione IP che deve essere trovata.
actions Azione da eseguire in base a una condizione di corrispondenza. Esempio: permit.
configuration-type Tipo di configurazione, che può essere inline o file. Al momento, Azure Operator Nexus supporta solo inline. Esempio: inline.

È anche necessario tenere presente queste restrizioni:

  • Le porte inline e le VLAN inline sono un modo statico per definire le porte o le VLAN usando azcli.
  • portGroupNames e vlanGroupNames sono modi dinamici per definire porte e VLAN.
  • Le porte inline e portGroupNames insieme non sono consentite.
  • Le VLAN inline e vlanGroupNames insieme non sono consentite.
  • ipGroupNames e ipPrefixValues insieme non sono consentiti.
  • Gli ACL in uscita non supportano opzioni IP, lunghezza IP, frammento, EtherType, contrassegno DSCP o valori TTL.
  • Gli ACL in ingresso non supportano le opzioni EtherType.

Creare un elenco di controllo di accesso in ingresso

Per creare un ACL in ingresso, è possibile usare il comando seguente dell'interfaccia della riga di comando di Azure. Questo comando crea un ACL in ingresso con le configurazioni specificate e fornisce il risultato previsto come output. Modificare i parametri in base alle esigenze per il caso d'uso.

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

Output previsto

{
    "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"
    }
}

Creare un ACL in uscita

Per creare un ACL in uscita, è possibile usare il comando seguente dell'interfaccia della riga di comando di Azure. Questo comando crea un ACL in uscita con le configurazioni specificate e fornisce il risultato previsto come output. Modificare i parametri in base alle esigenze per il caso d'uso.

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

Output previsto

{
    "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"
    }
}

Aggiornare le informazioni di riferimento su Resource Manager

Questo passaggio abilita la creazione di elenchi di controllo di accesso (ingresso e uscita se viene fornito un riferimento) durante la creazione della risorsa NNI. Dopo aver creato l'NNI e prima di effettuare il provisioning dell'infrastruttura di rete, è possibile eseguire di nuovo il ripristino dell'NNI.

  • ingressAclId: ID di riferimento per l'ACL in ingresso.
  • egressAclId: ID di riferimento per l'ACL in uscita.

Per ottenere l'ID risorsa di Resource Manager, passare al gruppo di risorse della sottoscrizione in uso.

Il comando seguente aggiorna il riferimento di Resource Manager per la risorsa NNI associandolo agli ACL in ingresso e in uscita forniti. Modificare i parametri in base alle esigenze per il caso d'uso.

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"

Visualizzare i dettagli dell'elenco di controllo di accesso

Per visualizzare i dettagli di un elenco di controllo di accesso specificato, usare il comando seguente:

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

Elencare gli elenchi di controllo di accesso

Per elencare tutti gli elenchi di controllo di accesso all'interno di un gruppo di risorse specificato, usare il comando seguente:

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

Creare elenchi di controllo di accesso nella rete esterna ISD

Usare le informazioni seguenti per creare elenchi di controllo di accesso in ingresso e in uscita per la rete esterna del dominio di isolamento (ISD). Aggiornare quindi il riferimento alle risorse di Resource Manager per la rete esterna.

Creare un ACL in uscita per la rete esterna ISD

Per creare un ACL in uscita per la rete esterna ISD specificata con la configurazione specificata, usare il comando seguente. Modificare i parametri in base alle esigenze per il caso d'uso.

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}]}]"

Output previsto

Al termine dell'esecuzione, il comando restituisce informazioni sull'ACL creato nel formato seguente. Questo output include informazioni dettagliate sulla configurazione e sullo stato.

{
    "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"
}

Creare un ACL in ingresso per la rete esterna ISD

Per creare un ACL di ingresso per la rete esterna ISD specificata con la configurazione specificata, usare il comando seguente. Modificare i parametri in base alle esigenze per il caso d'uso.

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}]}]"

Output previsto

Al termine dell'esecuzione, il comando restituisce informazioni sull'ACL creato nel formato seguente. Questo output include informazioni dettagliate sulla configurazione e sullo stato.

{
    "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"
}