Partilhar via


Proteja as Aplicações de Contêiner do Azure com um Firewall de Aplicações Web no Gateway de Aplicações

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
  • Limitação de velocidade
  • 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: tenha um aplicativo de contêiner que esteja em um ambiente interno e integrado a uma rede virtual. Para obter mais informações sobre como criar um aplicativo integrado de rede virtual, consulte Fornecer uma rede virtual para um ambiente interno 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.

  1. Na janela Visão geral do grupo de recursos no portal, selecione o seu aplicativo de contêiner.

  2. Na janela Visão geral do recurso de aplicação de contentor, selecione o link para Ambiente de aplicações de contentores

  3. 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.

  4. 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

Para criar e configurar uma zona DNS Privada do Azure, execute as seguintes etapas:

  1. Vá para o portal do Azure.

  2. Na barra de pesquisa, introduza Zona DNS Privada.

  3. Selecione Zona DNS Privada nos resultados da pesquisa.

  4. Selecione o botão Criar.

  5. Introduza os seguintes valores:

    Cenário 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 de um Ambiente de Aplicações em Contentores 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.
  6. Selecione Rever + criar. Após a conclusão da validação, selecione Criar.

  7. Depois que a zona DNS privada for criada, selecione Ir para recurso.

  8. Na janela Visão geral, selecione +Conjunto de registros para adicionar um novo conjunto de registros.

  9. Na janela Adicionar conjunto de registros, insira os seguintes valores:

    Cenário Ação
    Nome Insira *.
    Tipo 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 Ambiente de Aplicações de Contêiner da secção anterior.
  10. Selecione OK para criar o conjunto de registros.

  11. Selecione novamente +Conjunto de registros para adicionar um segundo conjunto de registros.

  12. Na janela Adicionar conjunto de registros, insira os seguintes valores:

    Cenário Ação
    Nome Insira @.
    Tipo 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 Ambiente de Aplicações de Contêiner da secção anterior.
  13. Selecione OK para criar o conjunto de registros.

  14. Selecione a janela ligações de rede virtual no menu do lado esquerdo da página.

  15. Selecione +Adicionar para criar um novo link com os seguintes valores:

    Cenário Ação
    Nome da ligação Digite my-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.
  16. Selecione OK para criar o link de rede virtual.

Criar e configurar o Gateway de Aplicação do Azure

Para criar e configurar um Gateway de Aplicativo do Azure, execute as seguintes etapas:

  1. Vá para o portal do Azure.

  2. Na barra de pesquisa, digite Application Gateway.

  3. Selecione Application Gateway nos resultados da pesquisa.

Agora, insira os detalhes necessários na guia Noções básicas , Guia Front-ends , Guia Back-ends e Guia Configuração .

Separador Informações Básicas

Execute as seguintes etapas:

  1. Insira os seguintes valores na seção Detalhes do projeto.

    Cenário 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.
    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 Deixe como predefinido. Para ambientes de produção, recomenda-se o dimensionamento automático. Consulte Autoscaling Azure Application Gateway.
    Zona de Disponibilidade 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 Gerir 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.
  2. Na janela Sub-redes de my-vnet, selecione +Sub-rede e insira os seguintes valores:

    Cenário Ação
    Nome Insira appgateway-subnet.
    Intervalo de endereços da sub-rede Mantenha os valores padrão.
  3. Para o restante das configurações, mantenha os valores padrão.

  4. Selecione Salvar para criar a nova sub-rede.

  5. Feche a janela Sub-redes para retornar à janela Criar gateway de aplicativo.

  6. Selecione os seguintes valores:

    Cenário Ação
    Sub-rede Selecione a sub-rede appgateway que você criou.
  7. Selecione Next: Frontends, para continuar.

Aba de frontends

Execute as seguintes etapas:

  1. Na guia Frontends, insira os seguintes valores:

    Cenário Ação
    Tipo de endereço IP da interface de 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 frontend público. Para obter mais informações, consulte Suporte a endereços IP públicos e privados e Gerenciar um endereço IP público com um Gateway de Aplicativo do Azure.

  2. 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:

  • Placas de Interface de Rede (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ários, 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.

Para criar um pool de back-end, execute as seguintes etapas:

  1. Selecione Adicionar um pool de back-end.

  2. Abra uma nova guia e navegue até seu aplicativo de contêiner.

  3. Na janela Visão geral do aplicativo de contêiner, localize a URL do aplicativo e copie-a.

  4. Volte à guia Backends e insira os seguintes valores na janela Adicionar um pool de back-end:

    Cenário Ação
    Nome Digite my-agw-backend-pool.
    Adicionar um pool de back-end sem alvos Selecione Não.
    Tipo de destino Selecione Endereço IP ou FQDN.
    Objetivo 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.
  5. Selecione Adicionar.

  6. Na guia Back-ends, selecione Next: Configuration.

Aba de Configuração

Na guia Configuração, você conecta o pool de front-end e back-end criado usando uma regra de roteamento.

Para conectar o pool de front-end e back-end, execute as seguintes etapas:

  1. Selecione Adicionar uma regra de roteamento. Introduza os seguintes valores:

    Cenário Ação
    Nome Insira my-agw-routing-rule.
    Prioridade Digite 1.
  2. Na guia Ouvinte, insira os seguintes valores:

    Cenário Ação
    Nome do ouvinte 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:

    Cenário 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:

    Cenário Ação
    Tipo de ouvinte Selecione Multi-site
    Tipo de host Selecione Solteiro
    Nomes de host Introduza o Domínio Personalizado que pretende utilizar.
    URL da página de erro Deixar como Não
  3. Selecione o separador Backend targets e insira os seguintes valores:

  4. Alterne para o separador Destinos de Backend e insira os seguintes valores:

    Cenário Ação
    Tipo de destino Selecione my-agw-backend-pool que você criou anteriormente.
    Configurações de back-end Selecione Adicionar novo.
  5. Na janela Adicionar back-end de configuração, insira os seguintes valores:

    Cenário Ação
    Nome das configurações de back-end Insira my-agw-backend-setting.
    Protocolo de back-end Selecione HTTPS.
    Porta traseira Digite 443.
    Usar certificado CA conhecido Selecione Yes (Sim).
    Substituir por novo nome de host Selecione Yes (Sim).
    Substituição do nome do host Selecione Escolha o nome do host a partir do alvo de back-end.
    Criar sondas personalizadas Selecione Não.
  6. Em Reescrita de Cabeçalho de Solicitação, configure o seguinte:

    • Ativar regravação de cabeçalho de solicitação: selecione Sim.
    • Adicione um cabeçalho de solicitação:
      • Nome do cabeçalho: X-Forwarded-Host
      • Valor: {host}

    Essa ação garante que o cabeçalho original Host da solicitação do cliente seja preservado e acessível pelo aplicativo de back-end.

  7. Selecione Adicionar para adicionar as configurações de back-end.

  8. Na janela Adicionar uma regra de roteamento, selecione Adicionar novamente.

  9. Selecione Next: Tags.

  10. Selecione Seguinte: Rever + criar e, em seguida, selecione Criar.

Você pode estabelecer uma conexão segura com ambientes de aplicativos de contêiner que são exclusivamente internos usando ligação privada. O link privado permite que seu Application Gateway se comunique com seu aplicativo de contêiner no back-end por meio da rede virtual.

  1. Depois de o Application Gateway ser criado, selecione Ir para recurso.

  2. No menu à esquerda, selecione Link privado e, em seguida, selecione Adicionar.

  3. Introduza os seguintes valores:

    Cenário Ação
    Nome Digite my-agw-private-link.
    Sub-rede de ligação privada 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.
  4. Em Configurações de endereço IP privado, selecione Adicionar.

  5. Selecione Adicionar na parte inferior da janela.

Preservar o cabeçalho do host original para redirecionamentos e SSO

Quando o Gateway de Aplicação do Azure é configurado como um proxy reverso e a configuração Substituir com novo nome de host está habilitada, o Host cabeçalho é modificado. Modificar o cabeçalho pode interferir com aplicativos que dependem do valor original do host para gerar URLs de redirecionamento, links absolutos ou suportar fluxos de autenticação OpenID Connect (OIDC).

Para encaminhar o cabeçalho de host original, você pode injetá-lo no cabeçalho usando o X-Forwarded-Host recurso de regravação de cabeçalho de solicitação do Application Gateway.

Configurar injeção de X-Forwarded-Host

Para ativar a X-Forwarded-Host injeção:

  1. Na guia Configuração , selecione a seção Configurações de back-end da regra de roteamento do Application Gateway:

    • Habilite a regravação do cabeçalho da solicitação.
    • Adicione um novo cabeçalho de solicitação com os seguintes valores:
      • Nome do cabeçalho: X-Forwarded-Host
      • Valor: {host}

    O seu aplicativo de back-end agora pode ler o host do pedido original usando o cabeçalho X-Forwarded-Host.

Verificar o aplicativo de contêiner

  1. 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.

  2. Navegue até o endereço IP público do gateway de aplicativo.

  3. Sua solicitação é roteada automaticamente para o aplicativo de contêiner, que verifica se o gateway de aplicativo foi criado com êxito.

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:

  1. No menu do portal do Azure, selecione Grupos de recursos ou procure e selecione Grupos de recursos.

  2. Na página Grupos de recursos, procure e selecione my-container-apps.

  3. Na página Grupo de recursos, selecione Excluir grupo de recursos.

  4. Insira my-container-apps em DIGITE O NOME DO GRUPO DE RECURSOS e selecione Excluir

Próximos passos