Partager via


Créer des ACL sur une NNI dans Azure Operator Nexus

Dans Azure Operator Nexus, les listes de contrôle d’accès (ACL) pour les actions Permit et Deny au niveau de l’interconnexion réseau à réseau (NNI) permettent de protéger l’accès Secure Shell (SSH) sur le réseau privé virtuel de gestion (VPN). Vous créez des ACL d’entrée et de sortie avant la création de ressources NNI, puis référencez ces ACL dans la charge utile de la NNI. Vous devez créer des ACL d’entrée et de sortie référencées avant de provisionner l’infrastructure réseau.

Voici la procédure générale de création d’une ACL sur une NNI :

  1. Créez des ACL d’entrée et de sortie NNI.
  2. Mettez à jour la référence de ressource Azure Resource Manager dans une NNI de gestion.
  3. Créez une NNI et approvisionnez l’infrastructure réseau.

Conseils relatifs à l’utilisation des paramètres

Paramètre Description Exemple ou plage
defaultAction Action par défaut à entreprendre. Si vous ne le définissez pas, le trafic est autorisé. "defaultAction": "Permit"
resource-group Groupe de ressources de la structure réseau. nfresourcegroup
resource-name Nom de la liste ACL. example-ingressACL
vlanGroups Liste des groupes de réseau local virtuel (VLAN).
vlans Liste de réseaux locaux virtuels qui doivent être mis en correspondance.
match-configurations Nom de la configuration de correspondance. example_acl. Les espaces et l’esperluette (&) ne sont pas pris en charge.
matchConditions Conditions devant être mises en correspondance.
ttlValues Durée de vie (TTL). 0-255
dscpMarking Marquages Differentiated Services Code Point (DSCP) qui doivent être mis en correspondance. 0-63
portCondition Condition de port qui doit être mise en correspondance.
portType Type de port qui doit être mis en correspondance. Exemple : SourcePort. Valeurs autorisées : DestinationPort, SourcePort.
protocolTypes Protocoles qui doivent être mis en correspondance. [tcp, udp, range[1-2, 1, 2]]. S’il s’agit d’un numéro de protocole, il doit se trouver dans la plage 1-255.
vlanMatchCondition Condition de mise en correspondance de VLAN qui doit être mise en correspondance.
layer4Protocol Protocole de couche 4. Doit être TCP ou UDP.
ipCondition Condition IP qui doit être mise en correspondance.
actions Action à entreprendre en fonction d’une condition de correspondance. Exemple : permit.
configuration-type Type de configuration, qui peut être inline ou fichier. À ce stade, Azure Operator Nexus prend uniquement en charge inline. Exemple : inline.

Vous devez également connaître ces restrictions :

  • Les ports inline et les réseaux locaux virtuels (VLAN) inline sont des moyens statiques de définir les ports ou les réseaux locaux virtuels (VLAN) à l’aide de azcli.
  • portGroupNames et vlanGroupNames sont des méthodes dynamiques permettant de définir des ports et réseaux locaux virtuels (VLAN).
  • La combinaison des ports inline et de portGroupNames n’est pas autorisée.
  • La combinaison des réseaux locaux virtuels (VLAN) inline et de vlanGroupNames n’est pas autorisée.
  • La combinaison de ipGroupNames et de ipPrefixValues n’est pas autorisée.
  • Les ACL de sortie ne prennent pas en charge les options IP, la longueur IP, le fragment, EtherType, le marquage DSCP ou les valeurs TTL.
  • Les ACL d’entrée ne prennent pas en charge les options EtherType.

Créer une ACL d’entrée

Pour créer une ACL d’entrée, vous pouvez utiliser la commande Azure CLI suivante. Cette commande crée une ACL d’entrée avec les configurations spécifiées et fournit le résultat attendu en tant que sortie. Ajustez les paramètres en fonction des besoins de votre cas d’usage.

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

Sortie attendue

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

Créer une ACL de sortie

Pour créer une ACL de sortie, vous pouvez utiliser la commande Azure CLI suivante. Cette commande crée une ACL de sortie avec les configurations spécifiées et fournit le résultat attendu en tant que sortie. Ajustez les paramètres en fonction des besoins de votre cas d’usage.

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

Sortie attendue

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

Mettre à jour la référence Resource Manager

Cette étape permet de créer des ACL (d’entrée et de sortie si une référence est fournie) lors de la création de la ressource NNI. Après avoir créé la NNI et avant d’approvisionner l’infrastructure réseau, vous pouvez effectuer un nouveau positionnement sur la NNI.

  • ingressAclId : ID de référence pour l’ACL d’entrée.
  • egressAclId : ID de référence pour l’ACL de sortie.

Pour obtenir l’ID de ressource Resource Manager, accédez au groupe de ressources de l’abonnement que vous utilisez.

La commande suivante met à jour la référence Resource Manager pour la ressource NNI en l’associant aux ACL d’entrée et de sortie fournies. Ajustez les paramètres en fonction des besoins de votre cas d’usage.

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"

Afficher les détails de l’ACL

Pour afficher les détails d’une ACL spécifiée, utilisez la commande suivante :

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

Répertorier les ACL

Pour répertorier toutes les ACL au sein d’un groupe de ressources spécifié, utilisez la commande suivante :

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

Créer des ACL sur le réseau externe ISD

Utilisez les informations suivantes pour créer des ACL d’entrée et de sortie pour le réseau externe de domaine d’isolation (ISD). Ensuite, mettez à jour la référence de ressource Resource Manager pour le réseau externe.

Créer une ACL de sortie pour le réseau externe ISD

Pour créer une ACL de sortie pour le réseau externe ISD spécifié avec la configuration fournie, utilisez la commande suivante. Ajustez les paramètres en fonction des besoins de votre cas d’usage.

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

Sortie attendue

Une fois l’exécution réussie, la commande retourne des informations sur la liste ACL créée au format suivant. Cette sortie comprend des détails sur la configuration et l’état.

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

Créer une ACL d’entrée pour le réseau externe ISD

Pour créer une ACL d’entrée pour le réseau externe ISD spécifié avec la configuration fournie, utilisez la commande suivante. Ajustez les paramètres en fonction des besoins de votre cas d’usage.

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

Sortie attendue

Une fois l’exécution réussie, la commande retourne des informations sur la liste ACL créée au format suivant. Cette sortie comprend des détails sur la configuration et l’état.

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