Planejar e implementar NSGs (Grupos de Segurança de Rede) e Grupos de Segurança de Aplicativos (ASGs)

Concluído

Você pode usar um grupo de segurança de rede do Azure para filtrar o tráfego de rede entre 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 tráfego de rede de saída de vários tipos de recursos do Azure. Para cada regra, você pode especificar origem e o destino, a porta e o protocolo.

NSGs (Grupos de Segurança de Rede)

Regras de segurança

Um grupo de segurança de rede contém quantas regras desejarem, dentro dos limites de 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 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 em ordem de prioridade, com números menores processados antes de números mais altos, pois números mais baixos têm prioridade mais alta. Depois que o tráfego corresponde a uma regra, o processamento é interrompido. Como resultado, todas as regras que existem com prioridades mais baixas (números mais altos) que têm os mesmos atributos que as 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 converte 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 do 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 por meio do modelo de implantação do Resource Manager. Você não pode 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 um. 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. Especificar intervalos permite criar menos regras de segurança. As regras de segurança aumentadas só podem ser criadas em grupos de segurança de rede criados por meio do modelo de implantação do Resource Manager. Você não pode 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. 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ê só 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 permitiu a conexão. Modificar regras de 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 conexõ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

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 a tantas sub-redes quanto você 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:

Diagrama mostrando um exemplo 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.

Faça referência à imagem, juntamente com o seguinte texto, 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 as regras em um grupo de segurança de rede associado a uma sub-rede primeiro, se houver uma e, em seguida, as regras em um grupo de segurança de rede associado ao adaptador de rede, se houver uma. Esse processo também inclui tráfego de intra-sub-rede.

  • VM1: as regras de segurança no NSG1 são processadas, pois ela está associada à 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 nega o tráfego. O tráfego não é avaliado pelo NSG2 porque está associado ao adaptador de rede. Se NSG1 permitir a porta 80 em sua regra de segurança, NSG2 processará o tráfego. Para permitir a porta 80 para a máquina virtual, NSG1 e NSG2 devem ter uma regra que permita a porta 80 da Internet.
  • VM2: as regras em NSG1 são processadas porque VM2 também está em Subnet 1. Como a VM2 não tem um grupo de segurança de rede associado ao adaptador de rede, ele recebe todo o tráfego permitido por meio do NSG1 ou é negado todo o tráfego negado pelo NSG1. O tráfego é permitido ou negado a todos os recursos na mesma sub-rede quando um grupo de segurança de rede é 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, pois o NSG2 está associado ao adaptador de rede anexado à VM3.
  • VM4: O tráfego tem permissão para VM4, porque um grupo de segurança de rede não está associado a Sub-rede 3 ou ao adaptador de rede na máquina virtual. Todo o tráfego de rede é permitido através de uma sub-rede e uma interface de rede se eles não tiverem um grupo de segurança de rede associado a eles.

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, em seguida, as regras em um grupo de segurança de rede associado à sub-rede, se houver. Esse processo também inclui tráfego de intra-sub-rede.

  • VM1: as regras de segurança são processadas no NSG2. 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 saída da porta 80 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 da máquina virtual, um ou ambos os grupos de segurança de rede devem ter uma regra que bloqueie o acesso da porta 80 à Internet.
  • VM2: todo o tráfego é enviado por meio do adaptador de rede para a sub-rede, já que o adaptador de rede anexado à VM2 não tem um grupo de segurança de rede associado a ele. As regras em NSG1 são processadas.
  • VM3: Se NSG2 negar a porta 80 em sua regra de segurança, ele negará o tráfego. Se 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 à Subnet 2.
  • VM4: Todo o tráfego de rede é permitido de VM4, porque um grupo de segurança de rede não está associado à interface de rede anexada à máquina virtual ou à Subnet 3.

Tráfego de sub-rede interna

É 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 nega todo o tráfego de entrada e saída, a VM1 e a VM2 não poderão se comunicar entre si.

Você pode exibir facilmente as regras de agregação aplicadas a um adaptador de rede exibindo as regras de segurança efetivas para um adaptador de rede. Você também pode usar a funcionalidade Verificação de fluxo de IP no Observador de Rede do Azure para determinar se a comunicação é permitida bidirecionalmente em 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, use 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 sã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 para isso, recomendamos que você associe um grupo de segurança de rede a uma sub-rede ou a um adaptador 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 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 solução de problemas.

ASGs (Grupos de Segurança do Aplicativo)

Os grupos de segurança de aplicativos permitem configurar a segurança de rede como uma extensão natural da estrutura de um aplicativo, permitindo que você agrupe máquinas virtuais e defina 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 do aplicativo, considere o seguinte exemplo:

Diagrama mostrando um exemplo de Grupos de Segurança de Rede do Azure e Grupos de Segurança de Aplicativo.

Na imagem anterior, NIC1 e NIC2 são membros do grupo de segurança do aplicativo AsgWeb. NIC3 é membro do grupo de segurança de aplicativos AsgLogic. NIC4 é um membro do grupo de segurança do aplicativo AsgDb. Embora cada NIC (interface de rede) 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, de acordo com os Limites do Azure. Nenhuma das interfaces 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 aplicativos AsgLogic ou AsgDb.

Prioridade Fonte portas de origem Destino portas de destino Protocolo Acesso
100 Internet * AsgWeb 80 TCP Permitir

Deny-Database-All

Como 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 Fonte portas de origem Destino portas de destino Protocolo Acesso
120 * * AsgDb 1433 Qualquer Negar

Permitir-Database-BusinessLogic

Essa regra permite o tráfego do grupo de segurança de aplicativos AsgLogic para o grupo de segurança de aplicativos AsgDb. A prioridade para essa regra é maior do que a prioridade para a regra Deny-Database-All. Como resultado, essa regra é processada antes da regra Deny-Database-All, portanto, o tráfego do grupo de segurança de aplicativos AsgLogic é permitido, enquanto todo o outro tráfego é bloqueado.

Prioridade Fonte portas de origem Destino portas 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 as especificam como origem ou destino. As regras não afetam outras interfaces de rede. Se o adaptador de rede não for membro de um grupo de segurança de aplicativo, a regra não será aplicada ao adaptador 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 a grupos de segurança de aplicativos.

  • Todas as interfaces de rede atribuídas a um grupo de segurança de aplicativo precisam existir na mesma rede virtual em que a primeira interface de rede atribuída ao grupo de segurança de aplicativo está. Por exemplo, se a primeira interface de rede atribuída a um grupo de segurança de aplicativo chamado ASGWeb estiver na rede virtual chamada VNet1, então todas as interfaces de rede subsequentes atribuídas a ASGWeb devem existir em VNet1. Você não pode adicionar interfaces de rede de redes virtuais diferentes ao mesmo grupo de segurança do aplicativo.

  • Se você especificar um grupo de segurança de 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. Nesse 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 aplicativos 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 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.