Creación de ACL en un NNI en Azure Operator Nexus
En Azure Operator Nexus, las listas de control de acceso (ACL) para las acciones Permit
y Deny
en un nivel de interconexión de red a red (NNI) ayudan a proteger el acceso de Secure Shell (SSH) en la red privada virtual (VPN) de administración. Las ACL de entrada y salida se crean antes de la creación de recursos de NNI y, a continuación, se hace referencia a esas ACL en la carga de NNI. Debe crear las ACL de entrada y salida a las que se hace referencia antes de aprovisionar el tejido de red.
Estos son los pasos generales para crear una ACL en una NNI:
- Cree ACL de entrada y salida de NNI.
- Actualice la referencia de recursos de Azure Resource Manager en una NNI de administración.
- Cree una NNI y aprovisione el tejido de red.
Guía de uso de parámetros
Parámetro | Descripción | Ejemplo o intervalo |
---|---|---|
defaultAction |
Acción predeterminada que se va a realizar. Si no lo define, se permite el tráfico. | "defaultAction": "Permit" |
resource-group |
Grupo de recursos del Network Fabric. | nfresourcegroup |
resource-name |
Nombre del ACL. | example-ingressACL |
vlanGroups |
Lista de grupos de red de área local virtual (VLAN). | |
vlans |
Lista de VLAN que deben coincidir. | |
match-configurations |
Nombre de la configuración de coincidencia. | example_acl . No se admiten los espacios ni la y comercial (&). |
matchConditions |
Condiciones necesarias para que coincidan. | |
ttlValues |
Período de vida (TTL). | 0 -255 |
dscpMarking |
Distintivos de punto de código de servicios (DSCP) que deben coincidir. | 0 -63 |
portCondition |
Condición del puerto con el que debe coincidir. | |
portType |
Tipo de puerto con el que debe coincidir. | Ejemplo: SourcePort . Valores permitidos: DestinationPort , SourcePort . |
protocolTypes |
Protocolos con los que debe coincidir. | [tcp, udp, range[1-2, 1, 2]] . Si es un número de protocolo, debe estar en el intervalo de 1 -255 . |
vlanMatchCondition |
Condición de VLAN con la que debe coincidir. | |
layer4Protocol |
Protocolo de nivel 4. | Debe ser TCP o UDP . |
ipCondition |
Condición IP con la que debe coincidir. | |
actions |
Acción que se realizará en función de una condición de coincidencia. | Ejemplo: permit . |
configuration-type |
Tipo de configuración, que puede ser en línea o en archivo. En este momento, Azure Operator Nexus solo admite en línea. | Ejemplo: inline . |
También debe tener en cuenta estas restricciones:
- Los puertos insertados y las VLAN insertadas son una manera estática de definir los puertos o VLAN mediante
azcli
. portGroupNames
yvlanGroupNames
son formas dinámicas de definir puertos y VLAN.- No se permiten puertos en línea ni los
portGroupNames
juntos. - No se permiten las VLAN en línea ni los
vlanGroupNames
juntos. - No se permiten
ipGroupNames
yipPrefixValues
juntos. - Las ACL de salida no admiten opciones IP, longitud IP, fragmento, EtherType, marcado DSCP ni valores TTL.
- Las ACL de entrada no admiten las opciones EtherType.
Creación de una ACL de entrada
Para crear una ACL de entrada, puede usar el siguiente comando de la CLI de Azure. Este comando crea una ACL de entrada con las configuraciones especificadas y proporciona el resultado esperado como salida. Ajuste los parámetros según sea necesario para su caso de 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'}]}]"
Salida prevista
{
"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"
}
}
Creación de una ACL de salida
Para crear una ACL de salida, puede usar el siguiente comando de la CLI de Azure. Este comando crea una ACL de salida con las configuraciones especificadas y proporciona el resultado esperado como salida. Ajuste los parámetros según sea necesario para su caso de 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']}]}]"
Salida prevista
{
"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"
}
}
Actualización de la referencia de Resource Manager
Este paso permite la creación de ACL (entrada y salida si se proporciona la referencia) durante la creación del recurso NNI. Después de crear el NNI y antes de aprovisionar el tejido de red, puede volver a colocar el NNI.
ingressAclId
: id. de referencia de la ACL de entrada.egressAclId
: id. de referencia de la ACL de salida.
Para obtener el identificador de recurso de Resource Manager, vaya al grupo de recursos de la suscripción que usa.
El siguiente comando actualiza la referencia de Resource Manager para el recurso NNI asociándola a las ACL de entrada y salida proporcionadas. Ajuste los parámetros según sea necesario para su caso de 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"
Mostrar detalles de la ACL
Para mostrar los detalles de una ACL especificada, use el siguiente comando:
az networkfabric acl show --resource-group "example-rg" --resource-name "example-acl"
Lista de ACL
Para enumerar todas las ACL dentro de un grupo de recursos especificado, use el siguiente comando:
az networkfabric acl list --resource-group "ResourceGroupName"
Creación de ACL en la red externa de ISD
Use la siguiente información para crear ACL de entrada y salida para la red externa del dominio de aislamiento (ISD). A continuación, actualice la referencia de recursos de Resource Manager para la red externa.
Creación de una ACL de salida para la red externa ISD
Para crear una ACL de salida para la red externa ISD especificada con la configuración proporcionada, use el siguiente comando. Ajuste los parámetros según sea necesario para su caso de 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}]}]"
Salida prevista
Si se ejecuta correctamente, el comando devuelve información sobre la ACL creada en el siguiente formato. Esta salida incluye detalles sobre la configuración y el estado.
{
"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"
}
Creación de una ACL de entrada para la red externa ISD
Para crear una ACL de entrada para la red externa ISD especificada con la configuración proporcionada, use el siguiente comando. Ajuste los parámetros según sea necesario para su caso de 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}]}]"
Salida prevista
Si se ejecuta correctamente, el comando devuelve información sobre la ACL creada en el siguiente formato. Esta salida incluye detalles sobre la configuración y el estado.
{
"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"
}