Planejar e implementar NSGs (Network Security Groups) e ASGs (Application Security Groups)
Pode utilizar um grupo de segurança de rede do Azure para filtrar o tráfego de rede entre os recursos do Azure numa rede virtual do Azure. Os grupos de segurança de rede contêm regras de segurança que permitem ou negam o tráfego de entrada ou de saída de e para 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 contém quantas regras desejar, dentro dos limites de assinatura do Azure. Cada regra especifica as propriedades seguintes:
Propriedade | Explicação |
---|---|
Nome | Um nome exclusivo no grupo de segurança de rede. O nome pode ter até 80 caracteres. Deve começar com um caractere de palavra, e deve terminar com um caractere de palavra ou com '_'. O nome pode conter caracteres de palavra ou '.', '-', '_'. |
Prioridade | Um número entre 100 e 4096. As regras são processadas por ordem de prioridade, sendo os números mais baixos processados antes dos mais elevados, uma vez que têm uma prioridade superior. Quando o tráfego corresponder a uma regra, o processamento para. Como resultado, quaisquer regras que existam com prioridades mais baixas (números mais altos) que tenham os mesmos atributos que regras com prioridades mais altas não são processadas. As regras de segurança padrão do Azure recebem o maior número com a menor prioridade para garantir que as regras personalizadas sejam sempre processadas primeiro. |
Origem ou destino | Qualquer endereço IP ou um endereço IP individual, um bloco CIDR (Classless Inter-domain Routing) (por exemplo, 10.0.0.0/24), uma etiqueta de serviço ou um grupo de segurança de aplicação. Se especificar um endereço para um recurso do Azure, indique o endereço IP privado atribuído ao mesmo. Os grupos de segurança de rede são processados depois de o Azure traduzir um endereço IP público num privado para tráfego de entrada e antes de traduzir um endereço IP privado num público para tráfego de saída. Menos regras de segurança são necessárias quando você especifica um intervalo, uma etiqueta de serviço ou um grupo de segurança de aplicativo. A capacidade de especificar vários endereços IP individuais e intervalos (não é possível especificar várias tags de serviço ou grupos de aplicativos) em uma regra é chamada de regras de segurança aumentada. As regras de segurança aumentadas só podem ser criadas em grupos de segurança de rede gerados através do modelo de implementação do Resource Manager. Não é possível especificar vários endereços IP e intervalos de endereços IP em grupos de segurança de rede criados por meio do modelo de implantação clássico. |
Protocolo | TCP, UDP, ICMP, ESP, AH ou qualquer. Os protocolos ESP e AH não estão atualmente disponíveis através do portal do Azure, mas podem ser utilizados através de modelos do Azure Resource Manager. |
Direção | Indica se a regra se aplica a tráfego de entrada ou de saída. |
Intervalo de portas | Pode especificar uma porta individual ou um intervalo de portas. Por exemplo, pode indicar 80 ou 10000-10005. Especificar intervalos permite-lhe criar menos regras de segurança. As regras de segurança aumentadas só podem ser criadas em grupos de segurança de rede gerados através do modelo de implementação do Resource Manager. Não é possível especificar várias portas ou intervalos de portas na mesma regra de segurança em grupos de segurança de rede criados por meio do modelo de implantação clássico. |
Ação | Permitir ou negar |
As regras de segurança são avaliadas e aplicadas com base nas informações de cinco tuplas (1. fonte, 2. porta de origem, 3. destino, 4. porta de destino e 5. protocolo). Não é possível criar duas regras de segurança com a mesma prioridade e direção. É criado um registo de fluxo para as ligações existentes. A comunicação é permitida ou negada com base no estado da ligação do registo do fluxo. O registo do fluxo permite que um grupo de segurança de rede tenha monitoração de estado. Se especificar uma regra de segurança de saída para qualquer endereço através da porta 80, por exemplo, não é necessário especificar uma regra de segurança de entrada para a resposta ao tráfego de saída. Só tem de especificar uma regra de segurança de entrada se a comunicação for iniciada externamente. O oposto também se aplica. Se o tráfego de entrada for permitido numa porta, não é necessário especificar uma regra de segurança de saída para responder ao tráfego através da porta.
As conexões existentes não podem ser interrompidas quando você remove uma regra de segurança que permitiu a conexão. Modificar as regras do grupo de segurança de rede afetará apenas novas conexões. Quando uma nova regra é criada ou uma regra existente é atualizada em um grupo de segurança de rede, ela só se aplica a novas conexões. As ligações existentes não são reavaliadas com as novas regras.
Como os grupos de segurança de rede filtram o tráfego de rede
Pode implementar recursos de vários serviços do Azure numa rede virtual do Azure. Pode associar nenhum ou um grupo de segurança de rede à sub-rede e à interface de rede de cada rede virtual numa máquina virtual. O mesmo grupo de segurança de rede pode ser associado a tantas sub-redes e interfaces de rede que escolher. A imagem a seguir ilustra diferentes cenários de como os grupos de segurança de rede podem ser implantados para permitir o tráfego de rede de e para a Internet pela porta TCP 80:
Consulte 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
Para o tráfego de entrada, o Azure processa primeiro as regras em um grupo de segurança de rede associado a uma sub-rede, se houver, e, em seguida, as regras em um grupo de segurança de rede associado à interface de rede, se houver. Esse processo também inclui o tráfego intra-sub-rede.
- VM1: As regras de segurança no NSG1 são processadas, uma vez que está associado à Sub-rede 1 e 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 nega o tráfego. O tráfego não é avaliado pelo NSG2 porque está associado à interface de rede. Se o NSG1 permitir a porta 80 em sua regra de segurança, o NSG2 processará o tráfego. Para permitir a porta 80 na máquina virtual, tanto NSG1, como NSG2, têm de ter uma regra que permite a porta 80 a partir da Internet.
- VM2: As regras no NSG1 são processadas porque o VM2 também está na Sub-rede 1. Como o VM2 não tem um grupo de segurança de rede associado à sua interface de rede, ele recebe todo o tráfego permitido pelo NSG1 ou é negado todo o tráfego negado pelo NSG1. O tráfego é permitido ou negado para todos os recursos na mesma sub-rede se um grupo de segurança de rede estiver associado a uma sub-rede.
- VM3: Como não há nenhum grupo de segurança de rede associado à Sub-rede 2, o tráfego é permitido na sub-rede e processado pelo NSG2, porque o NSG2 está associado à interface de rede conectada ao VM3.
- VM4: O tráfego é permitido para VM4, porque 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 de rede é permitido através de uma sub-rede e de uma interface de rede se não houver nenhum grupo de segurança de rede associado às mesmas.
Tráfego de saída
Para o tráfego de saída, o Azure processa primeiro as regras em um grupo de segurança de rede associado a uma interface de rede, se houver, e depois as regras em um grupo de segurança de rede associado à sub-rede, se houver. 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 no NSG1 e no NSG2 permite o tráfego, a menos que você crie uma regra de segurança que negue a porta 80 de saída para a Internet. Se o NSG2 negar a porta 80 em sua regra de segurança, ele negará o tráfego e o NSG1 nunca o avaliará. Para negar a porta 80 a partir da máquina virtual, um ou ambos os grupos de segurança de rede têm de ter uma regra que negue a porta 80 para a Internet.
- VM2: Todo o tráfego é enviado através da interface de rede para a sub-rede, uma vez que a interface de rede ligada ao VM2 não tem um grupo de segurança de rede associado a ela. As regras em NSG1 são processadas.
- VM3: Se o NSG2 negar a porta 80 em 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á nenhum grupo de segurança de rede associado à Sub-rede 2.
- VM4: Todo o tráfego de rede é permitido a partir do VM4, porque um grupo de segurança de rede não está associado à interface de rede conectada à máquina virtual ou à Sub-rede 3.
Tráfego intra-sub-rede
É importante observar que as regras de segurança em um NSG associado a uma sub-rede podem afetar a conectividade entre 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 intra-sub-rede. Se você adicionar uma regra ao NSG1 que negue todo o tráfego de entrada e saída, o VM1 e o VM2 não poderão se comunicar entre si.
Pode ver as regras de segurança em vigor numa interface de rede para ver facilmente as regras agregadas que estão aplicadas à mesma. Também pode utilizar a capacidade Verificação de fluxo de IP do Observador de Rede do Azure para saber se a comunicação é permitida de ou para uma interface de rede. Você pode usar a verificação de fluxo IP para determinar se uma comunicação é permitida ou negada. Além disso, Use a verificação de fluxo IP para revelar 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 implantados no modelo de implantação clássico e a sub-redes ou interfaces de rede no modelo de implantação do Resource Manager.
A menos que você tenha um motivo específico, recomendamos que associe um grupo de segurança de rede a uma sub-rede ou a uma interface de rede, mas não a ambos. Uma vez que as regras num grupo de segurança de rede associado a uma sub-rede podem entrar em conflito com as regras num grupo associado a uma interface de rede, poderão ocorrer problemas de comunicação inesperados que exijam resolução.
Grupos de segurança de aplicativos (ASGs)
Os grupos de segurança de aplicações permitem-lhe configurar a segurança de rede como uma extensão natural da estrutura de uma aplicação, possibilitando o agrupamento de máquinas virtuais e a definição de políticas de segurança de rede com base nesses grupos. Pode reutilizar a política de segurança em escala sem a manutenção manual de endereços IP explícitos. A plataforma lida com a complexidade dos endereços IP explícitos e dos múltiplos conjuntos de regras, permitindo-lhe focar-se na lógica de negócio. Para compreender melhor os grupos de segurança de rede, considere o exemplo seguinte:
Na imagem anterior, NIC1 e NIC2 são membros do grupo de segurança de rede AsgWeb. NIC3 é membro do grupo de segurança de rede AsgLogic. NIC4 é membro do grupo de segurança de rede 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, até os Limites do Azure. Não está associado nenhum grupo de segurança de rede às interfaces de rede. NSG1 está associado a ambas as sub-redes e contém as seguintes regras:
Allow-HTTP-Inbound-Internet
Esta 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 aplicativos AsgLogic ou AsgDb .
Prioridade | Source | Portas de origem | Destino | Portos de destino | Protocolo | Acesso |
---|---|---|---|---|---|---|
100 | Internet | * | AsgWeb | 80 | TCP | Permitir |
Deny-Database-All
Uma vez que a regra de segurança predefinida AllowVNetInBound permite todas as comunicações entre recursos na mesma rede virtual, esta regra é necessária para negar o tráfego de todos os recursos.
Prioridade | Source | Portas de origem | Destino | Portos de destino | Protocolo | Acesso |
---|---|---|---|---|---|---|
120 | * | * | AsgDb | 1433 | Qualquer | Negar |
Allow-Database-BusinessLogic
Esta regra permite o tráfego do grupo de segurança de aplicações AsgLogic para o grupo de segurança de aplicações AsgDb. A prioridade desta regra é mais alta do que a da regra Deny-Database-All. Como resultado, esta regra é processada antes da regra Deny-Database-All, de modo a que o tráfego do grupo de segurança de aplicações AsgLogic seja permitido, ao passo que o restante tráfego é bloqueado.
Prioridade | Source | Portas de origem | Destino | Portos de destino | Protocolo | Acesso |
---|---|---|---|---|---|---|
110 | AsgLogic | * | AsgDb | 1433 | TCP | Permitir |
As interfaces de rede que são membros do grupo de segurança do aplicativo aplicam as regras que o especificam como origem ou destino. As regras não afetam outras interfaces de rede. Se a interface de rede não for membro de um grupo de segurança de aplicativo, 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 de aplicação 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 a grupos de segurança de aplicativos.
Todas as interfaces de rede atribuídas a um grupo de segurança de aplicações têm de existir na mesma rede virtual em que se encontra a primeira interface de rede atribuída ao grupo de segurança da aplicação. Por exemplo, se a primeira interface de rede atribuída a um grupo de segurança de aplicações denominado AsgWeb estiver na rede virtual denominada VNet1, todas interfaces de rede subsequentes atribuídas aASGWeb têm de existir em VNet1. Não é possível adicionar interfaces de rede de redes virtuais diferentes ao mesmo grupo de segurança de aplicativos.
Se especificar um grupo de segurança de aplicação como a origem e o destino numa regra de segurança, as interfaces de rede em ambos os grupos de segurança de aplicações têm de 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. Todas as interfaces de rede para os grupos de segurança de origem e de destino têm de estar na mesma rede virtual.
Para minimizar o número de regras de segurança de que precisa, bem como a necessidade de as alterar, planei os grupos de segurança de aplicações de que precisa e crie regras com etiquetas de serviço ou grupos de segurança de aplicações em vez de endereços IP individuais ou intervalos de endereços IP, sempre que possível.