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:
- Creare elenchi di controllo di accesso in ingresso e uscita NNI.
- Aggiornare il riferimento alle risorse di Azure Resource Manager in un NNI di gestione.
- 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
evlanGroupNames
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
eipPrefixValues
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"
}