Criando o gerenciamento de ACL (Lista de Controle de Acesso) para redes externas de domínio de isolamento NNI e camada 3
As Listas de Controle de Acesso (ACLs) são um conjunto de regras que regulam o fluxo de pacotes de entrada e saída dentro de uma rede. O serviço de Malha de Rede do Nexus do Azure oferece um mecanismo baseado em API para configurar ACLs para interconexões entre redes e redes externas de domínios de isolamento da camada 3. Este guia descreve as etapas para criar ACLs.
Criando ACLs (listas de controle de acesso)
Para criar uma ACL e definir suas propriedades, você pode utilizar o comando az networkfabric acl create
. Abaixo estão as etapas envolvidas:
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Início Rápido para Bash no Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
- Definir assinatura (se necessário):
Se você tiver várias assinaturas e precisar definir uma como padrão, poderá fazer isso com:
az account set --subscription <subscription-id>
- Criar ACL:
az networkfabric acl create --resource-group "<resource-group>" --location "<location>" --resource-name "<acl-name>" --annotation "<annotation>" --configuration-type "<configuration-type>" --default-action "<default-action>" --match-configurations "[{matchConfigurationName:<match-config-name>,sequenceNumber:<sequence-number>,ipAddressType:<IPv4/IPv6>,matchConditions:[{ipCondition:{type:<SourceIP/DestinationIP>,prefixType:<Prefix/Exact>,ipPrefixValues:['<ip-prefix1>', '<ip-prefix2>', ...]}}],actions:[{type:<Action>}]}]"
Parâmetro | Descrição |
---|---|
Grupo de recursos | Especifique o grupo de recursos da malha de rede. |
Localidade | Defina o local onde a ACL será criada. |
Nome do recurso | Forneça um nome para a ACL. |
Annotation | Opcionalmente, adicione uma descrição ou anotação para a ACL. |
Tipo de Configuração | Especifique se a configuração está embutida ou usando um arquivo. |
Ação Padrão | Defina a ação padrão a ser executada se nenhuma correspondência for encontrada. |
Configurações de Correspondência | Defina as condições e as ações para correspondência de tráfego. |
Ações | Especifique a ação a ser tomada com base nas condições de correspondência. |
Diretrizes de uso de parâmetros
A tabela a seguir fornece diretrizes sobre o uso de parâmetros ao criar ACLs:
Parâmetro | Descrição | Exemplo ou intervalo |
---|---|---|
defaultAction | Define a ação padrão a ser tomada | "defaultAction": "Permit" |
resource-group | Grupo de recursos da malha de rede | nfresourcegroup |
resource-name | Nome da ACL | example-ingressACL |
vlanGroups | Lista de grupos de VLAN | |
vlans | Lista de VLANs que precisam ser correspondidas | |
configurações de correspondência | Nome da configuração de correspondência | example_acl |
matchConditions | Condições necessárias para serem correspondidas | |
ttlValues | TTL (vida útil) | 0-255 |
dscpMarking | Marcações DSCP que precisam ser correspondidas | 0-63 |
fragmentos | Especificar os pacotes de fragmento de IP | Intervalo: 1-8191 Exemplo: [1, 5, 1250-1300, 8000-8191] |
portCondition | Condição de porta que precisa ser correspondida | |
portType | Tipo de porta que precisa ser correspondido | Exemplo: SourcePort |
ports | Número da porta que precisa ser correspondido | Intervalo: 0-65535 Exemplo: [1, 10, 500, 1025-1050, 64000-65535] |
protocolTypes | Protocolos que precisam ser correspondidos | [tcp, udp, range[1-2, 1, 2]] |
vlanMatchCondition | Condição de correspondência de VLAN que precisa ser correspondida | |
layer4Protocol | Protocolo da Camada 4 | Deve ser TCP ou UDP |
ipCondition | Condição de IP que precisa ser correspondida | |
ações | Ação a ser tomada com base na condição de correspondência | Exemplo: permissão |
configuration-type | Tipo de configuração (embutido ou arquivo) | Exemplo: embutido |
Observação
- Portas embutidas e VLANs embutidas são definidas estaticamente usando a azcli.
- PortGroupNames e VlanGroupNames são definidos dinamicamente.
- A combinação de portas embutidas com portGroupNames não é permitida, da mesma forma para VLANs embutidos e VLANGroupNames.
- IPGroupNames e IpPrefixValues não podem ser combinados.
- As ACLs de saída não dão suporte a determinadas opções, como opções de IP, comprimento de IP, fragmento, tipo de éter, marcação DSCP e valores TTL.
- As ACLs de entrada não dão suporte às seguintes opções: etherType.
- As entradas de portas podem ser
port-number
ourange-of-ports
. - As entradas de fragmentos podem ser
port-number
ourange-of-ports
. - Não há suporte para ACL com configuração de correspondência dinâmica em redes eternas.
Conteúdo de exemplo para a criação de ACL
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:example-match,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}]}]"
Saída de exemplo
{
"administrativeState": "Disabled",
"annotation": "annotation",
"configurationState": "Succeeded",
"configurationType": "Inline",
"defaultAction": "Deny",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/Fab3LabNF-4-0/providers/Microsoft.ManagedNetworkFabric/accessControlLists/L3domain091123-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": "example-Ipv4ingressACL ",
"sequenceNumber": 1110
}
],
"name": "example-Ipv4ingressACL",
"provisioningState": "Succeeded",
"resourceGroup": "Fab3LabNF-4-0",
"systemData": {
"createdAt": "2023-09-11T10:20:20.2617941Z",
"createdBy": "user@email.com",
"createdByType": "User",
"lastModifiedAt": "2023-09-11T10:20:20.2617941Z",
"lastModifiedBy": "user@email.com",
"lastModifiedByType": "User"
},
"type": "microsoft.managednetworkfabric/accesscontrollists"
}
Observação
Depois de criar a ACL, anote a ID de referência de ACL para obter mais referências.
Próximas etapas
Aplicar listas de controle de acesso (ACLs) ao NNI no Azure Fabric