Planejar e implementar NSGs (Grupos de Segurança de Rede) e ASGs (Grupos de Segurança de Aplicativo)
É possível usar um grupo de segurança de rede do Azure para filtrar o tráfego de rede entre os recursos do Azure em uma rede virtual do Azure. Um grupo de segurança de rede contém regras de segurança que permitem ou negam o tráfego de rede de entrada ou de saída em relação a vários tipos de recursos do Azure. Para cada regra, você pode especificar origem e destino, porta e protocolo.
Grupos de Segurança de Rede (NSGs)
Regras de segurança
Um grupo de segurança de rede pode conter quantas regras você desejar, dentro dos limites da assinatura do Azure. Cada regra especifica as seguintes propriedades:
Propriedade | Explicação |
---|---|
Nome | Um nome exclusivo dentro do Grupo de Segurança de Rede. O nome pode ter até 80 caracteres. Ele precisa começar com um caractere de palavra e terminar com um caractere de palavra ou com '_'. O nome pode conter caracteres de palavra ou '.', '-' e '_'. |
Prioridade | Um número entre 100 e 4096. As regras são processadas na ordem de prioridade, com números mais baixos processados antes de números mais altos, pois os números mais baixos têm prioridade mais alta. Depois que o tráfego corresponde a uma regra, o processamento é interrompido. Assim, as regras existentes com baixa prioridade (números mais altos) que têm os mesmos atributos das regras com prioridades mais altas não são processadas. As regras de segurança padrão do Azure recebem o número mais alto com a prioridade mais baixa para garantir que as regras personalizadas sejam sempre processadas primeiro. |
Origem ou destino | Qualquer endereço IP ou um endereço IP individual, bloco CIDR (roteamento entre domínios sem classificação) (10.0.0.0/24, por exemplo), marca de serviço ou grupo de segurança do aplicativo. Se você especificar um endereço para um recurso do Azure, especifique o endereço IP privado atribuído ao recurso. Os grupos de segurança de rede são processados depois que o Azure traduz um endereço IP público em um endereço IP privado para tráfego de entrada e antes que o Azure traduza um endereço IP privado para um endereço IP público para tráfego de saída. Menos regras de segurança são necessárias quando você especifica um intervalo, uma marca de serviço ou um grupo de segurança de aplicativo. A capacidade de especificar vários endereços IP individuais e intervalos (você não pode especificar várias marcas de serviço ou grupos de aplicativos) em uma regra é conhecida como regras de segurança aumentadas. As regras de segurança aumentadas só podem ser criadas em grupos de segurança de rede criados pelo modelo de implantação do Gerenciador de Recursos. Você não pode especificar vários endereços IP e intervalos de endereços IP em grupos de segurança de rede criados pelo modelo de implantação clássica. |
Protocolo | TCP, UDP, ICMP, ESP, AH ou Qualquer. Os protocolos ESP e AH não estão disponíveis no momento por meio do portal do Azure, mas podem ser usados por meio de modelos do Azure Resource Manager. |
Direção | Se a regra se aplica ao tráfego de entrada ou de saída. |
Intervalo de portas | Você pode especificar uma porta individual ou um intervalo de portas. Por exemplo, você pode especificar 80 ou 10000-10005. A especificação de intervalos permite que você crie menos regras de segurança. As regras de segurança aumentadas só podem ser criadas em grupos de segurança de rede criados pelo modelo de implantação do Gerenciador de Recursos. Você não pode especificar várias portas ou intervalos de porta na mesma regra de segurança em grupos de segurança de rede criados pelo modelo de implantação clássica. |
Ação | Permitir ou negar |
As regras de segurança são avaliadas e aplicadas com base nas informações de cinco tuplas (1. origem, 2. porta de origem, 3. destino, 4. porta de destino e 5. protocolo). Você não pode criar duas regras de segurança com a mesma prioridade e direção. Um registro de fluxo é criado para as conexões existentes. A comunicação é permitida ou negada com base no estado de conexão do registro de fluxo. O registro de fluxo permite que um grupo de segurança de rede seja com estado. Se você especificar uma regra de segurança de saída para algum endereço pela porta 80, por exemplo, não será necessário especificar uma regra de segurança de entrada para a resposta ao tráfego de saída. Você precisa especificar uma regra de segurança de entrada se a comunicação for iniciada externamente. O oposto também é verdadeiro. Se o tráfego de entrada é permitido por uma porta, não é necessário especificar uma regra de segurança de saída para responder ao tráfego pela porta.
As conexões existentes podem não ser interrompidas quando você remove uma regra de segurança que habilitou o fluxo. A modificação das regras do grupo de segurança de rede afetará apenas as novas conexões. Quando uma regra é criada ou uma regra existente é atualizada em um grupo de segurança de rede, ela só se aplica a novas conexões. As conexões existentes não são atualizadas com as novas regras.
Como filtrar o tráfego de rede com grupos de segurança de rede
Você pode implantar recursos de vários serviços do Azure em uma rede virtual do Azure. Você pode associar um, ou nenhum, grupo de segurança de rede a cada sub-rede e adaptador de rede de uma rede virtual em uma máquina virtual. O mesmo grupo de segurança de rede pode ser associado ao número de sub-redes e adaptadores de rede desejado. A seguinte imagem ilustra os diferentes cenários de como os grupos de segurança de rede podem ser implantados para permitir o tráfego de rede bidirecionalmente na Internet pela porta TCP 80:
Confira a imagem, juntamente com o texto a seguir, para entender como o Azure processa regras de entrada e saída para grupos de segurança de rede:
Tráfego de entrada
Em relação ao tráfego de entrada, o Azure processa as regras em um grupo de segurança de rede associado a uma sub-rede em primeiro lugar, se houver uma, e, em seguida, as regras em um grupo de segurança de rede associado ao adaptador de rede, se houver um. Esse processo também inclui o tráfego intra-sub-rede.
- VM1: as regras de segurança no NSG1 são processadas, já que estão associadas à Sub-rede 1 e a VM1 está na Sub-rede 1. A menos que você tenha criado uma regra que permita a entrada da porta 80, a regra de segurança padrão DenyAllInbound negará o tráfego. O tráfego não é avaliado pelo NSG2 porque está associado à interface de rede. Se o NSG1 permitir a porta 80 na sua regra de segurança, o NSG2 processará o tráfego. Para permitir a porta 80 para a máquina virtual, tanto NSG1 quanto NSG2 devem ter uma regra que permite a porta 80 da Internet.
- VM2: as regras no NSG1 são processadas porque a VM2 também está na Sub-rede 1. Já que a VM2 não têm um grupo de segurança de rede associado a seu adaptador de rede, ela recebe todo o tráfego permitido pelo NSG1 ou tem todo o tráfego negado por NSG1 também negado. O tráfego é permitido ou negado para todos os recursos na mesma sub-rede quando um grupo de segurança de rede está associado a uma sub-rede.
- VM3: já que não há nenhum grupo de segurança de rede associado à Sub-rede 2, o tráfego é permitido para a sub-rede e processado pelo NSG2, pois o NSG2 está associado ao adaptador de rede anexado à VM3.
- VM4: o tráfego é permitido para VM4, pois um grupo de segurança de rede não está associado à Sub-rede 3 ou à interface de rede na máquina virtual. Todo o tráfego será permitido por meio de um adaptador de rede e sub-rede se não tiver um grupo de segurança de rede associado a eles.
Tráfego de saída
Em relação ao tráfego de saída, o Azure processa as regras em um grupo de segurança de rede associado a um adaptador de rede em primeiro lugar, se houver um, e, em seguida, as regras em um grupo de segurança de rede associado à sub-rede, se houver uma. Esse processo também inclui o tráfego intra-sub-rede.
- VM1: as regras de segurança no NSG2 são processadas. A regra de segurança padrão AllowInternetOutbound em NSG1 e NSG2 permite o tráfego, a menos que você crie uma regra de segurança que negue a saída da porta 80 para a Internet. Se o NSG2 negar a porta 80 na sua regra de segurança, ele negará o tráfego e o NSG1 nunca o avaliará. Para negar a porta 80 na máquina virtual, um ou ambos os grupos de segurança da rede devem ter uma regra que nega a porta 80 para a Internet.
- VM2: todo o tráfego é enviado por meio do adaptador de rede na sub-rede, uma vez que o adaptador de rede conectado à VM2 não tem um grupo de segurança de rede associado a ele. As regras no NSG1 são processadas.
- VM3: se o NSG2 negar a porta 80 na sua regra de segurança, ele negará o tráfego. Se o NSG2 não negar a porta 80, a regra de segurança padrão AllowInternetOutbound no NSG2 permitirá o tráfego porque não há grupo de segurança de rede associado à Sub-rede 2.
- VM4: todo o tráfego de rede é permitido da VM4, porque um grupo de segurança de rede não está associado à interface de rede anexada à máquina virtual ou à Sub-rede 3.
Tráfego dentro da sub-rede
É importante observar que as regras de segurança em um NSG associado a uma sub-rede podem afetar a conectividade entre as VMs dentro dela. Por padrão, as máquinas virtuais na mesma sub-rede podem se comunicar com base em uma regra NSG padrão que permite o tráfego entre sub-redes. Se você adicionar uma regra ao NSG1 que nega todo o tráfego de entrada e saída, a VM1 e a VM2 não poderão se comunicar.
É possível exibir facilmente as regras de agregação aplicadas a um adaptador de rede exibindo as regras de segurança efetiva para determinado adaptador de rede. Você também pode usar o recurso Verificar o fluxo de IP no Observador de Rede do Azure para determinar se a comunicação é permitida na entrada ou saída de um adaptador de rede. Você pode usar a verificação de fluxo de IP para determinar se uma comunicação é permitida ou negada. Além disso, utilize a verificação de fluxo de IP para exibir a identidade da regra de segurança de rede responsável por permitir ou negar o tráfego.
Os grupos de segurança de rede estão associados a sub-redes ou a máquinas virtuais e serviços de nuvem com o modelo de implantação clássica, e a sub-redes ou interfaces da rede no modelo de implantação do Azure Resource Manager.
A menos que você tenha um motivo específico, recomendamos que você associe um grupo de segurança de rede a uma sub-rede ou a uma interface de rede, mas não a ambos. Como as regras em um grupo de segurança de rede associado a uma sub-rede podem entrar em conflito com as regras em um grupo de segurança de rede associado a um adaptador de rede, você pode ter problemas de comunicação inesperados que exigem a solução de problemas.
Grupos de segurança de aplicativo (ASGs)
Os grupos de segurança de aplicativo permitem a você configurar a segurança de rede como uma extensão natural da estrutura de um aplicativo, permitindo o agrupamento de máquinas virtuais e a definição de políticas de segurança de rede com base nesses grupos. Você pode reutilizar sua política de segurança em escala sem precisar manter endereços IP explícitos manualmente. A plataforma lida com a complexidade de endereços IP explícitos e vários conjuntos de regras, permitindo que você se concentre na sua lógica de negócios. Para entender melhor os grupos de segurança de aplicativo, considere o exemplo abaixo:
Na figura anterior, NIC1 e NIC2 são membros do grupo de segurança de aplicativo AsgWeb. NIC3 é um membro do grupo de segurança de aplicativo AsgLogic. NIC4 é um membro do grupo de segurança de aplicativo AsgDb. Embora cada interface de rede (NIC) neste exemplo seja membro de apenas um grupo de segurança de rede, uma interface de rede pode ser membro de vários grupos de segurança de aplicativos dentro dos limites do Azure. Nenhum dos adaptadores de rede tem um grupo de segurança de rede associado. NSG1 está associado a ambas as sub-redes e contém as seguintes regras:
Allow-HTTP-Inbound-Internet
Essa regra é necessária para permitir o tráfego da Internet para os servidores Web. Como o tráfego de entrada da Internet é negado pela regra de segurança padrão DenyAllInbound, nenhuma regra extra é necessária para os grupos de segurança de aplicativosAsgLogic ou AsgDb.
Prioridade | Origem | Portas de origem | Destino | Portas de destino | Protocolo | Acesso |
---|---|---|---|---|---|---|
100 | Internet | * | AsgWeb | 80 | TCP | Allow |
Deny-Database-All
Já que a regra de segurança padrão AllowVNetInBound permite toda a comunicação entre recursos na mesma rede virtual, essa regra é necessária para negar o tráfego de todos os recursos.
Prioridade | Origem | Portas de origem | Destino | Portas de destino | Protocolo | Acesso |
---|---|---|---|---|---|---|
120 | * | * | AsgDb | 1433 | Qualquer | Negar |
Allow-Database-BusinessLogic
Essa regra permite o tráfego do grupo de segurança de aplicativo AsgLogic para o grupo de segurança de aplicativo AsgDb. A prioridade para essa regra é mais alta do que a prioridade para a regra Deny-Database-All. Como resultado, essa regra é processada antes da regra Deny-Database-All e, portanto, o tráfego do grupo de segurança de aplicativo AsgLogic é permitido enquanto todos os outros tráfegos são bloqueados.
Prioridade | Origem | Portas de origem | Destino | Portas de destino | Protocolo | Acesso |
---|---|---|---|---|---|---|
110 | AsgLogic | * | AsgDb | 1433 | TCP | Allow |
As interfaces de rede membros do grupo de segurança do aplicativo aplicam as regras que as especificam como origem ou destino. As regras não afetam outros adaptadores de rede. Se a interface de rede não for membro de um grupo de segurança de aplicativos, a regra não será aplicada à interface de rede, mesmo que o grupo de segurança de rede esteja associado à sub-rede.
Os grupos de segurança do aplicativo têm as seguintes restrições:
Há limites para o número de grupos de segurança de aplicativos que você pode ter em uma assinatura e outros limites relacionados aos grupos de segurança de aplicativos.
Todas as interfaces de rede atribuídas a um grupo de segurança do aplicativo precisam existir na mesma rede virtual que a primeira interface de rede atribuída ao grupo de segurança que o aplicativo está. Por exemplo, se o primeiro adaptador de rede atribuído a um grupo de segurança de aplicativo chamado AsgWeb estiver na rede virtual denominada VNet1, todos os adaptadores de rede subsequentes atribuídos a ASGWeb deverão existir na VNet1. Não é possível adicionar interfaces de rede a partir de redes virtuais diferentes ao mesmo grupo de segurança de aplicativos.
Se você especificar um grupo de segurança do aplicativo como a origem e o destino em uma regra de segurança, as interfaces de rede em ambos os grupos de segurança do aplicativo deverão existir na mesma rede virtual.
- Um exemplo seria se AsgLogic tivesse interfaces de rede de VNet1 e AsgDb tivesse interfaces de rede de VNet2. Neste caso, seria impossível atribuir AsgLogic como a origem e AsgDb como o destino em uma regra. Todos os adaptadores de rede dos grupos de segurança de aplicativo de origem e de destino precisam existir na mesma rede virtual.
Para minimizar o número de regras de segurança necessárias e a necessidade de alterar as regras, planeje os grupos de segurança do aplicativo que serão necessários e crie regras usando marcas de serviço ou grupos de segurança de aplicativo em vez de endereços IP individuais ou intervalos de endereços IP, sempre que possível.