Compartilhar via


Proteger os Aplicativos de Contêiner do Azure com o Firewall de Aplicativo Web no Gateway de Aplicativo

Ao hospedar seus aplicativos ou microsserviços nos Aplicativos de Contêiner do Azure, talvez você não queira publicá-los diretamente na Internet. Em vez disso, talvez você queira expô-los por meio de um proxy reverso HTTP.

Um proxy reverso é um serviço que fica na frente de um ou mais serviços. Ele intercepta e direciona o tráfego de entrada para o destino certo.

Com proxies reversos, você pode colocar serviços à frente dos seus aplicativos que dão suporte à funcionalidade transversal, incluindo:

  • Roteamento
  • Cache
  • Limitação de taxa
  • Balanceamento de carga
  • Camadas de segurança
  • Filtragem de solicitação

Este artigo mostra como proteger seus aplicativos de contêiner usando um WAF (Firewall de Aplicativo Web) no Gateway de Aplicativo do Azure com um ambiente interno de Aplicativos de Contêiner.

Para obter mais informações sobre conceitos de sistemas de rede nos Aplicativos de Contêiner, confira Ambiente de Rede nos 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 dos Aplicativos de Contêiner do Azure.

  • Certificados de segurança: se você precisar usar a criptografia TLS/SSL para o gateway de aplicativo, precisará de um certificado público válido para associar ao gateway de aplicativo.

Recuperar o domínio do seu aplicativo de contêiner

Use as seguintes etapas 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 seu aplicativo de contêiner.

  2. Na janela Visão geral do recurso de aplicativo de contêiner, selecione o link para o ambiente de Aplicativos de Contêiner.

  3. Na janela Visão geral do recurso de ambiente do seu aplicativo de contêiner, selecione Exibição JSON no canto superior direito da página para exibir a representação JSON do ambiente de aplicativos de contêiner.

  4. No modo de exibição JSON, localize a properties seção e localize os seguintes valores:

    • Domínio padrão: procure properties.defaultDomain ou properties.environmentFqdn

    • IP estático: busque properties.staticIp

  5. Copie esses valores e cole-os em um editor de texto. Use o valor de domínio padrão ao criar uma zona DNS privada na próxima seção.

Criar e configurar uma Zona DNS Privada do Azure

Para criar e configurar uma zona DNS privada do Azure, conclua as seguintes etapas:

  1. Acesse o portal do Azure.

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

  3. Selecione Zona DNS privada nos resultados da pesquisa.

  4. Selecione Criar.

  5. Insira os valores a seguir:

    Configuração Ação
    Subscrição Selecione sua assinatura do Azure.
    Grupo de recursos Selecione o grupo de recursos do seu aplicativo de contêiner.
    Nome Insira a propriedade de domínio padrão do Ambiente de Aplicativos de Contêiner da seção anterior (ou defaultDomain ou environmentFqdn).
    Localização do grupo de recursos Deixe como padrão. Você não precisa de um valor porque as Zonas DNS Privadas são globais.
  6. Selecione Examinar + criar. Depois da validação, selecione Criar.

  7. Após a criação da zona DNS privada, selecione Ir para o 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:

    Configuração Ação
    Nome Digite *.
    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 IP estática do Ambiente de Aplicativos de Contêiner da seção anterior (staticIp).
  10. Selecione OK para criar o conjunto de registros.

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

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

    Configuração Ação
    Nome Digite @.
    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 IP estática do Ambiente de Aplicativos de Contêiner da seção anterior (staticIp).
  13. Selecione OK para criar o conjunto de registros.

  14. Selecione a janela Links de rede virtual no menu à esquerda da página.

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

    Configuração Ação
    Nome do link Insira my-vnet-pdns-link.
    Conheço a ID de recurso da rede virtual Deixe desmarcado.
    Rede virtual Selecione a rede virtual com a qual seu aplicativo de contêiner está integrado.
    Habilitar o registro automático Deixe desmarcado.
  16. Selecione OK para criar o link de rede virtual.

Criar e configurar um Gateway de Aplicativo do Azure

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

  1. Acesse o portal do Azure.

  2. Na barra de pesquisa, insira Gateway de Aplicativo.

  3. Selecione Gateway de Aplicativos nos resultados da pesquisa.

Agora, insira os detalhes necessários na guia Básico , guia Frontends , guia Backends e guia Configuração .

Guia Básico

Execute as seguintes etapas:

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

    Configuração Ação
    Subscrição Selecione sua assinatura do Azure.
    Grupo de recursos Selecione o grupo de recursos para seu aplicativo de contêiner.
    Nome do gateway de aplicativo Insira my-container-apps-agw.
    Região Selecione o local em que você provisionou seu Aplicativo de Contêiner.
    Camada Selecione WAF V2. Você pode usar Standard V2 se não precisar do WAF.
    Habilitar o dimensionamento automático Mantenha o padrão. Para ambientes de produção, o dimensionamento automático é recomendado. Consulte Dimensionamento Automático do Gateway de Aplicativo do Azure.
    Zona de disponibilidade Selecione Nenhum. Para ambientes de produção, Zonas de Disponibilidade são recomendadas para maior disponibilidade.
    HTTP2 Mantenha o valor padrão.
    Política do WAF Selecione Criar e insira my-waf-policy para a Política do WAF. Selecione OK. Se você escolheu Standard V2 para a camada, ignore essa etapa.
    Rede virtual Selecione a rede virtual com a qual seu aplicativo de contêiner está integrado.
    Sub-rede Clique em Gerenciar a configuração da sub-rede. Se você já tiver uma sub-rede que deseja usar, selecione essa sub-rede e pule para a seção Frontends.
  2. Na janela Sub-redes do my-vnet, selecione +Sub-rede e insira os seguintes valores:

    Configuração 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 sub-rede.

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

  6. Digite os valores a seguir:

    Configuração Ação
    Sub-rede Selecione a appgateway-subnet que você criou.
  7. Selecione Avançar: Front-ends para continuar.

Guia Front-ends

Execute as seguintes etapas:

  1. Na guia Front-ends, insira os seguintes valores:

    Configuração Ação
    Tipo de endereço IP de front-end Selecione Público.
    Endereço IP público Selecione Adicionar nova. Insira my-frontend para o nome do seu front-end e selecione OK

    Observação

    Para o SKU do Gateway de Aplicativo v2, você precisa de um IP de front-end 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 Avançar: Back-ends.

Guia Back-ends

O pool de back-end roteia solicitações para os servidores de back-end apropriados. Você pode compor pools de back-end de qualquer combinação dos seguintes recursos:

  • NICs
  • Endereços IP públicos
  • Endereço IP interno
  • Conjuntos de Dimensionamento de Máquinas Virtuais
  • Nomes de domínio totalmente qualificados (FQDN)
  • Back-ends multilocatários como o Azure App Service e Container Apps

Neste exemplo, você criará um pool de back-end que direcionará seu aplicativo de contêiner.

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

  1. Selecione Adicionar um pool de back-ends.

  2. Abra uma nova aba e acesse seu app de contêiner.

  3. Na janela Visão Geral do Aplicativo de Contêiner, encontre a URL do Aplicativo e copie-a.

  4. Retorne à guia Back-ends e insira os seguintes valores na janela Adicionar um pool de back-end:

    Configuração Ação
    Nome Insira 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 do Aplicativo de Contêiner que você copiou e remova o prefixo https://. Esta localização é o FQDN do seu aplicativo de contêiner.
  5. Selecione Adicionar.

  6. Na guia Back-ends, selecione Avançar: Configuração.

Guia Configuração

Na guia Configuração , você conecta o front-end e o pool de back-end que você criou 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. Insira os valores a seguir:

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

    Configuração Ação
    Nome do ouvinte Insira my-agw-listener.
    IP de front-end Selecione Público.
    Protocolo Selecione HTTPS. Se você não tiver um certificado que deseja usar, poderá selecionar HTTP
    Porta Inserir 443. Se você escolheu HTTP para seu protocolo, insira 80 e pule para a seção de domínio padrão/personalizado.
    Escolha um Certificado Selecione Carregar um certificado. Se o seu certificado estiver armazenado no cofre de chaves, você poderá selecionar Escolher um certificado do Key Vault.
    Nome do certificado Insira um nome para seu certificado.
    Arquivo de certificado PFX Selecione seu certificado público válido.
    Senha Insira a senha do seu certificado.

    Se você quiser usar o domínio padrão, insira os seguintes valores:

    Configuração Ação
    Tipo de Ouvinte Selecione Básico
    URL da página de erro Deixe como Não

    Alternativamente, se você quiser usar um domínio personalizado, insira os seguintes valores:

    Configuração Ação
    Tipo de Ouvinte Selecione Multi site
    Tipo de host Selecione Simples
    Nomes de Host Insira o Domínio Personalizado que você deseja usar.
    URL da página de erro Deixe como Não
  3. Selecione a guia Destinos de Back-end e insira os seguintes valores:

  4. Ativar/Desativar para a guia Destinos de Back-end e insira os seguintes valores:

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

    Configuração Ação
    Nome das configurações de back-end Insira my-agw-backend-setting.
    Protocolo de back-end Selecione HTTPS.
    Porta de back-end Inserir 443.
    Usar um Certificado de Autoridade de Certificação conhecido Selecione Sim na barra superior.
    Substituir por um novo nome do host Selecione Sim na barra superior.
    Substituir o nome do host Selecione Escolher o nome do host do destino de back-end.
    Criar investigações personalizadas Selecione Não.
  6. Em Reescrita de Cabeçalho de Solicitação, defina as seguintes configurações:

    • Habilitar reescrita de cabeçalho de solicitação: selecione Sim.
    • Adicionar um cabeçalho de solicitação:
      • Nome do cabeçalho: X-Forwarded-Host
      • Valor: {http_req_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 Avançar: Rótulos.

  10. Selecione Avançar: Examinar + criar e, em seguida, selecionar Criar.

Você pode estabelecer uma conexão segura com ambientes de aplicativos de contêiner apenas internos usando o link privado. Com o link privado, seu Gateway de Aplicativo pode se comunicar com seu Aplicativo de Contêiner no back-end por meio da rede virtual.

  1. Depois de criar o Gateway de Aplicativo, selecione Ir para o recurso.

  2. No menu à esquerda, selecione Link privado, depois selecione Adicionar.

  3. Insira os valores a seguir:

    Configuração Ação
    Nome Insira my-agw-private-link.
    Sub-rede de link privado Selecione a sub-rede que você deseja usar para criar o link privado.
    Configuração do IP front-end Selecione o IP de front-end para o seu Gateway de Aplicativo.
  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

Ao configurar o Gateway de Aplicativo do Azure como um proxy reverso e habilitar a configuração Substituir por novo nome de host, o cabeçalho Host será modificado. Modificar o cabeçalho pode interferir em aplicativos que dependem do valor original do host para gerar URLs de redirecionamento, links absolutos ou dar suporte a fluxos de autenticação do OIDC (OpenID Connect).

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

Configurar a injeção de host encaminhado por X

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

  1. Na guia Configuração, selecione a seção Configurações de Backend da regra de roteamento do Gateway de Aplicação.

    • Habilitar a reescrita do cabeçalho de solicitação.
    • Adicione um novo cabeçalho de solicitação com os seguintes valores:
      • Nome do cabeçalho: X-Forwarded-Host
      • Valor: {http_req_host}

    Seu aplicativo de back-end agora pode ler o host de solicitação original usando o cabeçalho X-Forwarded-Host.

Observação

Ao configurar regras de reescrita de cabeçalho, use a sintaxe de variável correta. As variáveis de servidor devem usar o prefixo apropriado, como http_req_ para cabeçalhos de solicitação. Para solucionar problemas de erros de configuração de regra de reescrita, consulte Reescrever cabeçalhos HTTP e URL com o Gateway de Aplicativo.

Verificar o aplicativo de contêiner

  1. Encontre o endereço IP público do gateway de aplicativo na sua página Visão geral, ou pesquise o endereço. Para pesquisar, selecione Todos os recursos e insira my-container-apps-agw-pip na caixa de pesquisa. Em seguida, selecione o IP nos resultados da pesquisa.

  2. Vá para o endereço IP público do gateway de aplicativo.

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

Limpar os recursos

Quando não precisar mais dos recursos que criou, exclua o grupo de recursos. Ao excluir o grupo de recursos, você também remove todos os recursos relacionados.

Para excluir o grupo de recursos:

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

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

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

  4. Insira my-container-apps em TYPE THE RESOURCE GROUP NAME e, em seguida, selecione Excluir.

Próximas etapas