Com mais cargas de trabalho aderindo à abordagem orientada para API para o design e o crescente número e gravidade de ameaças a aplicativos Web pela Internet, é fundamental ter uma estratégia de segurança para proteger APIs. Uma etapa em direção à segurança da API é proteger o tráfego de rede usando o padrão de Roteamento de Gateway. Use o gateway para restringir os locais de origem do tráfego e a qualidade do tráfego, além de dar suporte a regras de roteamento flexíveis. Este artigo descreve como usar o Gateway de Aplicativo do Azure e Gerenciamento de API do Azure para proteger o acesso à API.
Arquitetura
Este artigo não aborda as plataformas subjacentes do aplicativo, como o Ambiente do Serviço de Aplicativo, a Instância Gerenciada de SQL do Azure e os Serviços de Kubernetes do Azure. Essas partes do diagrama só mostram o que você pode fazer como uma solução mais ampla. Este artigo aborda especificamente as áreas sombreadas, o Gerenciamento de API e Gateway de Aplicativo.
Baixe um Arquivo Visio dessa arquitetura.
Workflow
O Gateway de Aplicativo recebe solicitações HTTP que foram permitidas pelo NSG (Grupo de segurança de rede).
O Firewall de Aplicativo Web (WAF) no Gateway de Aplicativo verifica a solicitação em relação às regras do WAF, incluindo regras personalizadas de correspondência geográfica. Se a solicitação for válida, a solicitação continuará.
O Gateway de Aplicativo configura um mecanismo de proxy de URL que envia a solicitação ao pool de back-end adequado. Por exemplo, dependendo do formato de URL da chamada à API:
As URLs formatadas como
api.<some-domain>/external/*
podem acessar o back-end para interagir com as APIs solicitadas.As chamadas formatadas como
api.<some-domain>/*
seguem para um beco sem saída (sinkpool), que é um pool de back-end sem destino.
O Gateway de Aplicativo também aceita e faz proxies de chamadas internas, que vêm de recursos na mesma rede virtual do Azure, em
api.<some-domain>/internal/*
.Por fim, no nível Gerenciamento de API, as APIs são configuradas para aceitar chamadas nos seguintes padrões:
api.<some-domain>/external/*
api.<some-domain>/internal/*
Nesse cenário, o Gerenciamento de API usa dois tipos de endereços IP, públicos e privados. Os endereços IP públicos são para comunicação interna na porta 3443 e para tráfego de API de runtime na configuração de rede virtual externa. Quando o Gerenciamento de API envia uma solicitação para um back-end público voltado para a Internet, ele mostra um endereço IP público como a origem da solicitação. Para obter mais informações, confira Endereços IP do serviço Gerenciamento de API na VNet.
Uma regra de roteamento no nível do Gateway de Aplicativo redireciona corretamente os usuários no
portal.<some-domain>/*
para o portal do desenvolvedor, para que os desenvolvedores possam gerenciar APIs e suas configurações a partir de ambientes internos e externos.
Componentes
A Rede Virtual do Microsoft Azure permite que vários tipos de recursos do Azure se comuniquem de modo privado entre si, com a Internet e com as redes locais. Nessa arquitetura, o Gateway de Aplicativo é responsável por encapsular o tráfego público da Internet nessa rede privada.
O Gateway de Aplicativo do Azure é um balanceador de carga do tráfego da Web que gerencia o tráfego para seus aplicativos Web. Esse tipo de roteamento é conhecido como balanceamento de carga da camada de aplicativo (camada OSI 7). Nessa arquitetura, o gateway não só é usado para roteamento, mas também hospeda um Firewall de Aplicativo Web (WAF) para proteger contra vetores de ataque comuns baseados na Web.
O Gerenciamento de API do Azure é uma plataforma híbrida de gerenciamento de várias nuvens para APIs em todos os ambientes. O Gerenciamento de API cria gateways de API modernos e consistentes para serviços de back-end existentes. Nessa arquitetura, o API Management é usado em um modo totalmente privado para eliminar preocupações abrangentes sobre o código e os hosts da API.
Recomendações
Essa solução se concentra em implementar toda a solução e testar o acesso à API de dentro e fora da rede virtual Gerenciamento de API. Para obter informações sobre o processo de integração de rede virtual do Gerenciamento de API, confira Integrar o Gerenciamento de API em uma VNET interna com o Gateway de Aplicativo.
Para se comunicar com recursos privados no back-end, o Gateway de Aplicativo e o Gerenciamento de API devem estar na mesma rede virtual que os recursos ou em uma rede virtual emparelhada.
O modelo de implantação interno privado permite que o Gerenciamento de API se conectem a uma rede virtual existente, tornando-a acessível por dentro desse contexto de rede. Para habilitar esse recurso, implante as camadas Desenvolvedor ou Premium do Gerenciamento de API.
Gerencie certificados do Gateway de Aplicativo no Azure Key Vault.
Para personalizar interações com os serviços, você pode usar entradas CNAME.
Alternativas
Você pode usar outros serviços para fornecer um nível semelhante de proteção de firewall e do WAF (Firewall de Aplicativo Web):
- Azure Front Door
- Firewall do Azure
- Soluções de parceiro como o Barracuda
- Outras soluções disponíveis no Azure Marketplace
Considerações
Confiabilidade
O Gateway de Aplicativo do Azure é sempre implantado com alta disponibilidade, independentemente da contagem de instâncias. Para evitar o impacto do mau funcionamento de zona, você pode configurar o Gateway de Aplicativo para abranger várias Zonas de Disponibilidade. Para obter mais informações, confira Alta disponibilidade do dimensionamento automático.
Habilite a redundância de zona para os componentes de serviço do Gerenciamento de API para fornecer resiliência e alta disponibilidade. A redundância de zona replica o gateway do Gerenciamento de API e o plano de controle entre datacenters em zonas fisicamente separadas, tornando-os resilientes à falha de zona. A camada Premium do Gerenciamento de API é necessária para dar suporte às Zonas de disponibilidade.
O Gerenciamento de API também dá suporte a implantações em várias regiões, que ajudam a aprimorar a disponibilidade caso uma região fique offline. Para obter mais informações, confira Implantação em várias regiões. Nessa topologia, é importante também ter um Gateway de Aplicativo por região, já que o Gateway de Aplicativo é um serviço regional.
Segurança
Para obter mais informações sobre a segurança do Gateway de Aplicativo, confira Linha de base de segurança do Azure para o Gateway de Aplicativo.
Para obter mais informações sobre a segurança do Gerenciamento de API, confira Linha de base de segurança do Azure para Gerenciamento de API.
A Proteção contra DDoS do Azure, combinada com as práticas recomendadas de design de aplicativos, fornece recursos aprimorados de mitigação de DDoS para fornecer mais defesa contra ataques de DDoS. Você deve habilitar a Proteção contra DDOS do Azure em qualquer rede virtual do perímetro.
Otimização de custo
O custo dessa arquitetura depende de aspectos de configuração como:
- Camadas de serviço
- Escalabilidade, ou seja, o número de instâncias alocadas dinamicamente por serviços para dar suporte a uma demanda específica
- Se essa arquitetura será executada continuamente ou apenas algumas horas por mês
Depois de avaliar esses aspectos, acesse a Calculadora de Preços do Azure para estimar os preços.
Eficiência de desempenho
O Gateway de Aplicativo é o ponto de entrada para essa arquitetura, e o recurso WAF requer poder de processamento adicional para cada análise de solicitação. Para permitir que o Gateway de Aplicativo expanda sua capacidade computacional no local, é importante habilitar o dimensionamento automático. Para obter mais informações, confira Especificar o dimensionamento automático. Siga as recomendações de documentação no tamanho da sub-rede para o Gateway de Aplicativo. Isso garante que a sub-rede seja grande o suficiente para dar suporte à expansão total.
Para dar suporte a cenários altamente simultâneos, ative o dimensionamento automático do Gerenciamento de API. O dimensionamento automático expande as funcionalidades do Gerenciamento de API em resposta ao crescente número de solicitações de entrada. Para saber mais, confira Escalar automaticamente uma instância do Gerenciamento de API do Azure.
Implantar este cenário
Esse cenário é demonstrado na publicação da galeria de Início Rápido do Azure do Gateway de Aplicativo com Gerenciamento de API interno e Aplicativo Web.
Próximas etapas
Crie suas APIs seguindo boas diretrizes de design de API Web e implemente-as usando boas práticas de Implementação da API Web.