Proteja os Aplicativos de Contêiner do Azure com o Firewall de Aplicativo Web no Gateway de Aplicativo
Quando você hospeda seus aplicativos ou microsserviços nos Aplicativos de Contêiner do Azure, nem sempre deseja publicá-los diretamente na Internet. Em vez disso, você pode querer expô-los por meio de um proxy reverso.
Um proxy reverso é um serviço que fica na frente de um ou mais serviços, intercetando e direcionando o tráfego de entrada para o destino apropriado.
Os proxies reversos permitem-lhe colocar serviços à frente das suas aplicações que suportam funcionalidades transversais, incluindo:
- Encaminhamento
- Colocação em cache
- Rate limiting (Limitação de taxa)
- Balanceamento de carga
- Camadas de segurança
- Filtragem de pedidos
Este artigo demonstra como proteger seus aplicativos de contêiner usando um Firewall de Aplicativo Web (WAF) no Gateway de Aplicativo do Azure com um ambiente interno de Aplicativos de Contêiner.
Para obter mais informações sobre conceitos de rede em Aplicativos de Contêiner, consulte Ambiente de Rede em Aplicativos de Contêiner do Azure.
Pré-requisitos
Ambiente interno com rede virtual personalizada: tenha um aplicativo de contêiner que esteja em um ambiente interno e integrado a uma rede virtual personalizada. Para obter mais informações sobre como criar um aplicativo integrado de rede virtual personalizado, consulte Fornecer uma rede virtual para um ambiente de Aplicativos de Contêiner do Azure.
Certificados de segurança: Se você precisar usar a criptografia TLS/SSL para o gateway de aplicativo, será necessário um certificado público válido que seja usado para vincular ao gateway de aplicativo.
Recuperar o domínio do aplicativo de contêiner
Use as etapas a seguir para recuperar os valores do domínio padrão e do IP estático para configurar sua Zona DNS Privada.
Na janela Visão geral do grupo de recursos no portal, selecione seu aplicativo de contêiner.
Na janela Visão geral do recurso do aplicativo contêiner, selecione o link para Ambiente de aplicativos de contêiner
Na janela Visão geral do recurso de ambiente do aplicativo contêiner, selecione Exibição JSON no canto superior direito da página para exibir a representação JSON do ambiente de aplicativos contêiner.
Copie os valores das propriedades defaultDomain e staticIp e cole-os em um editor de texto. Você criará uma zona DNS privada usando esses valores para o domínio padrão na próxima seção.
Criar e configurar uma zona DNS Privada do Azure
No menu do portal do Azure ou na página inicial , selecione Criar um recurso.
Procure por Zona DNS Privada e selecione Zona DNS Privada nos resultados da pesquisa.
Selecione o botão Criar.
Introduza os seguintes valores:
Definição Ação Subscrição Selecione a subscrição do Azure. Grupo de recursos Selecione o grupo de recursos do seu aplicativo de contêiner. Nome Insira a propriedade defaultDomain do Container Apps Environment da seção anterior. Localização do grupo de recursos Deixe como padrão. Um valor não é necessário, pois as Zonas DNS Privadas são globais. Selecione Rever + criar. Após a conclusão da validação, selecione Criar.
Depois que a zona DNS privada for criada, selecione Ir para recurso.
Na janela Visão geral, selecione +Conjunto de registros para adicionar um novo conjunto de registros.
Na janela Adicionar conjunto de registros, insira os seguintes valores:
Definição Ação Nome Introduzir *. Type Selecione Registro de endereço A. TTL Mantenha os valores padrão. Unidade de TTL Mantenha os valores padrão. Endereço IP Insira a propriedade staticIp do Container Apps Environment da seção anterior. Selecione OK para criar o conjunto de registros.
Selecione +Conjunto de registros novamente para adicionar um segundo conjunto de registros.
Na janela Adicionar conjunto de registros, insira os seguintes valores:
Definição Ação Nome Introduzir @. Type Selecione Registro de endereço A. TTL Mantenha os valores padrão. Unidade de TTL Mantenha os valores padrão. Endereço IP Insira a propriedade staticIp do Container Apps Environment da seção anterior. Selecione OK para criar o conjunto de registros.
Selecione a janela Links de rede virtual no menu do lado esquerdo da página.
Selecione +Adicionar para criar um novo link com os seguintes valores:
Definição Ação Nome da ligação Digite my-custom-vnet-pdns-link. Sei o ID de recurso da rede virtual Deixe-o desmarcado. Rede virtual Selecione a rede virtual à qual seu aplicativo de contêiner está integrado. Ativar registo automático Deixe-o desmarcado. Selecione OK para criar o link de rede virtual.
Criar e configurar o Gateway de Aplicação do Azure
Separador Informações Básicas
Insira os seguintes valores na seção Detalhes do projeto.
Definição Ação Subscrição Selecione a subscrição do Azure. Grupo de recursos Selecione o grupo de recursos para seu aplicativo de contêiner. Nome do gateway do aplicativo Digite my-container-apps-agw. País/Região Selecione o local onde seu aplicativo de contêiner foi provisionado. Escalão de serviço Selecione WAF V2. Você pode usar o Standard V2 se não precisar de WAF. Ativar o dimensionamento automático Não altere a predefinição. Para ambientes de produção, recomenda-se o dimensionamento automático. Consulte Autoscaling Azure Application Gateway. Availability zone Selecione Nenhuma. Para ambientes de produção, as zonas de disponibilidade são recomendadas para maior disponibilidade. HTTP2 mantenha o valor predefinido. Política WAF Selecione Criar novo e insira my-waf-policy para a Política WAF. Selecione OK. Se você escolheu Standard V2 para a camada, ignore esta etapa. Rede virtual Selecione a rede virtual à qual seu aplicativo de contêiner está integrado. Sub-rede Selecione Gerenciar configuração de sub-rede. Se você já tiver uma sub-rede que deseja usar, use-a em vez disso e pule para a seção Frontends. Na janela Sub-redes de my-custom-vnet, selecione +Subnet e insira os seguintes valores:
Definição Ação Nome Insira appgateway-subnet. Intervalo de endereços da sub-rede Mantenha os valores padrão. Para o restante das configurações, mantenha os valores padrão.
Selecione Salvar para criar a nova sub-rede.
Feche a janela Sub-redes para retornar à janela Criar gateway de aplicativo.
Selecione os seguintes valores:
Definição Ação Sub-rede Selecione a sub-rede appgateway que você criou. Selecione Next: Frontends, para continuar.
Guia Frontends
Na guia Frontends, insira os seguintes valores:
Definição Ação Tipo de endereço IP frontend Selecione Público. Endereço IP público Selecione Adicionar novo. Digite my-frontend para o nome do seu frontend e selecione OK Nota
Para a SKU do Application Gateway v2, deve haver um IP de front-end público . Você pode ter uma configuração de IP de front-end pública e privada, mas uma configuração de IP de front-end somente privada sem IP público não é suportada atualmente no SKU v2. Para saber mais, leia aqui.
Selecione Next: Backends.
Guia Back-ends
O pool de back-end é usado para rotear solicitações para os servidores back-end apropriados. Os pools de back-end podem ser compostos por qualquer combinação dos seguintes recursos:
- NICs
- Endereços IP públicos
- Endereços IP internos
- Conjuntos de Dimensionamento de Máquinas Virtuais
- Nomes de domínio totalmente qualificados (FQDN)
- Back-ends multilocatário, como o Serviço de Aplicativo do Azure e os Aplicativos de Contêiner
Neste exemplo, você cria um pool de back-end direcionado ao seu aplicativo de contêiner.
Selecione Adicionar um pool de back-end.
Abra uma nova guia e navegue até seu aplicativo de contêiner.
Na janela Visão geral do aplicativo de contêiner, localize a URL do aplicativo e copie-a.
Retorne à guia Back-ends e insira os seguintes valores na janela Adicionar um pool de back-end:
Definição Ação Nome Digite my-agw-backend-pool. Adicionar pool de back-end sem destinos Selecione Não. Tipo de destino Selecione Endereço IP ou FQDN. Destino Insira a URL do aplicativo de contêiner que você copiou e remova o prefixo https://. Esse local é o FQDN do seu aplicativo de contêiner. Selecione Adicionar.
Na guia Back-ends, selecione Next: Configuration.
Separador Configuração
Na guia Configuração, você conecta o pool de front-end e back-end criado usando uma regra de roteamento.
Selecione Adicionar uma regra de roteamento. Introduza os seguintes valores:
Definição Ação Nome Insira my-agw-routing-rule. Prioridade Digite 1. Na guia Ouvinte, insira os seguintes valores:
Definição Ação Nome do cliente de escuta Digite my-agw-listener. IP de Front-end Selecione Público. Protocolo Selecione HTTPS. Se você não tiver um certificado que deseja usar, selecione HTTP Porta Digite 443. Se você escolheu HTTP para seu protocolo, digite 80 e pule para a seção de domínio padrão/personalizado. Escolha um certificado Selecione Carregar um certificado. Se o certificado estiver armazenado no Cofre de Chaves, você poderá selecionar Escolher um certificado no Cofre de Chaves. Nome do certificado Insira um nome para o seu certificado. Ficheiro de certificado PFX Selecione seu certificado público válido. Palavra-passe Introduza a palavra-passe do seu certificado. Se pretender utilizar o domínio predefinido, introduza os seguintes valores:
Definição Ação Tipo de ouvinte Selecione Básico URL da página de erro Deixar como Não Como alternativa, se você quiser usar um domínio personalizado, insira os seguintes valores:
Definição Ação Tipo de ouvinte Selecione Multi-site Host type Selecione Solteiro Nomes de host Introduza o Domínio Personalizado que pretende utilizar. URL da página de erro Deixar como Não Selecione a guia Destinos de back-end e insira os seguintes valores:
Alterne para a guia Destinos de back-end e insira os seguintes valores:
Definição Ação Tipo de destino Selecione my-agw-backend-pool que você criou anteriormente. Configurações de back-end Selecione Adicionar novo. Na janela de configuração Adicionar back-end, insira os seguintes valores:
Definição Ação Nome das configurações de back-end Insira my-agw-backend-setting. Protocolo de back-end Selecione HTTPS. Porta back-end Digite 443. Usar certificado de autoridade de certificação bem conhecido Selecione Yes (Sim). Substituir por novo nome de host Selecione Yes (Sim). Substituição do nome do host Selecione Escolher nome do host do destino de back-end. Criar testes personalizados Selecione Não. Selecione Adicionar para adicionar as configurações de back-end.
Na janela Adicionar uma regra de roteamento, selecione Adicionar novamente.
Selecione Next: Tags.
Selecione Seguinte: Rever + criar e, em seguida, selecione Criar.
Adicionar link privado ao seu Application Gateway
Você pode estabelecer uma conexão segura com ambientes de aplicativos de contêiner somente internos aproveitando o link privado, pois ele permite que seu Application Gateway se comunique com seu Container App no back-end por meio da rede virtual.
Depois que o Application Gateway for criado, selecione Ir para recurso.
No menu à esquerda, selecione Link privado e, em seguida, selecione Adicionar.
Introduza os seguintes valores:
Definição Ação Nome Digite my-agw-private-link. Sub-rede de link privado Selecione a sub-rede com a qual deseja criar o link privado. Configuração de IP de Front-end Selecione o IP frontend para seu Application Gateway. Em Configurações de endereço IP privado, selecione Adicionar.
Selecione Adicionar na parte inferior da janela.
Verificar o aplicativo de contêiner
Encontre o endereço IP público do gateway de aplicativo em sua página Visão geral ou você pode pesquisar o endereço. Para pesquisar, selecione Todos os recursos e digite my-container-apps-agw-pip na caixa de pesquisa. Em seguida, selecione o IP nos resultados da pesquisa.
Navegue até o endereço IP público do gateway de aplicativo.
Sua solicitação é roteada automaticamente para o aplicativo de contêiner, que verifica se o gateway de aplicativo foi criado com êxito.
Clean up resources (Limpar recursos)
Quando não precisar mais dos recursos criados, exclua o grupo de recursos. Ao excluir o grupo de recursos, você também remove todos os recursos relacionados.
Para eliminar o grupo de recursos:
No menu do portal do Azure, selecione Grupos de recursos ou procure e selecione Grupos de recursos.
Na página Grupos de recursos, procure e selecione my-container-apps.
Na página Grupo de recursos, selecione Excluir grupo de recursos.
Insira my-container-apps em DIGITE O NOME DO GRUPO DE RECURSOS e selecione Excluir