Descrição geral do gateway autoalojado
APLICA-SE A: Developer | Prémio
O gateway auto-hospedado é uma versão opcional em contêiner do gateway gerenciado padrão incluído em cada serviço de Gerenciamento de API. É útil para cenários como a colocação de gateways nos mesmos ambientes em que você hospeda suas APIs. Use o gateway auto-hospedado para melhorar o fluxo de tráfego da API e atender aos requisitos de segurança e conformidade da API.
Este artigo explica como o recurso de gateway auto-hospedado do Gerenciamento de API do Azure habilita o gerenciamento de API híbrido e multicloud, apresenta sua arquitetura de alto nível e destaca seus recursos.
Para obter uma visão geral dos recursos nas várias ofertas de gateway, consulte API gateway em Gerenciamento de API.
Gestão de API em ambientes híbridos e multicloud
A funcionalidade do gateway autoalojado expande o suporte da Gestão de API para ambientes híbridos e multicloud e permite às organizações gerir de forma eficiente e segura as APIs alojadas no local e em clouds a partir de um único serviço Gestão de API no Azure.
Com o gateway auto-hospedado, os clientes têm a flexibilidade de implantar uma versão em contêiner do componente de gateway de Gerenciamento de API nos mesmos ambientes em que hospedam suas APIs. Todos os gateways auto-hospedados são gerenciados a partir do serviço de Gerenciamento de API com o qual são federados, fornecendo aos clientes a visibilidade e a experiência de gerenciamento unificada em todas as APIs internas e externas.
Cada serviço Gestão de API é composto pelos seguintes componentes principais:
- Plano de gestão, exposto como uma API, utilizado para configurar o serviço através do portal do Azure, do PowerShell e de outros mecanismos suportados.
- Gateway (ou plano de dados), o qual é responsável por suportar com proxy os pedidos de API, aplicar políticas e recolher telemetria
- Portal do programador utilizado pelos programadores para detetar, integrar e aprender a utilizar as APIs
Por padrão, todos esses componentes são implantados no Azure, fazendo com que todo o tráfego de API (mostrado como setas pretas sólidas na imagem a seguir) flua pelo Azure, independentemente de onde os back-ends que implementam as APIs estão hospedados. A simplicidade operacional deste modelo tem o custo de maior latência, problemas de conformidade e, em alguns casos, taxas extras de transferência de dados.
A implementação de gateways autoalojados nos mesmos ambientes em que as implementações da API de back-end estão alojadas permite que o tráfego da API flua diretamente para as APIs de back-end, o que reduz a latência, otimiza os custos da transferência de dados e permite a conformidade, ao mesmo tempo que mantém os benefícios de ter um único ponto de gestão, observabilidade e deteção de todas as APIs na organização, independentemente de onde as implementações estejam alojadas.
Packaging
O gateway autoalojado está disponível como imagem de contentor do Docker baseada no Linux a partir do Registo de Artefactos da Microsoft. Pode ser implementado no Docker, no Kubernetes ou em qualquer outra solução de orquestração de contentores em execução num cluster de servidores no local, numa infraestrutura da cloud ou para fins de avaliação e desenvolvimento, num computador pessoal. Também pode implementar o gateway autoalojado como extensão de cluster num cluster do Kubernetes compatível com o Azure Arc.
Imagens de contentor
Fornecemos uma variedade de imagens de contêiner para gateways auto-hospedados para atender às suas necessidades:
Convenção de tags | Recomendação | Exemplo | Etiqueta rolante | Recomendado para produção |
---|---|---|---|---|
{major}.{minor}.{patch} |
Use essa tag para executar sempre a mesma versão do gateway | 2.0.0 |
❌ | ✔️ |
v{major} |
Use essa tag para sempre executar uma versão principal do gateway com cada novo recurso e patch. | v2 |
✔️ | ❌ |
v{major}-preview |
Use essa tag se quiser sempre executar nossa imagem de contêiner de visualização mais recente. | v2-preview |
✔️ | ❌ |
latest |
Use essa tag se quiser avaliar o gateway auto-hospedado. | latest |
✔️ | ❌ |
beta 1 |
Use essa tag se quiser avaliar as versões de visualização do gateway auto-hospedado. | beta |
✔️ | ❌ |
Você pode encontrar uma lista completa de tags disponíveis aqui.
1 As versões de pré-visualização não são oficialmente suportadas e destinam-se apenas a fins experimentais. Consulte as políticas de suporte de gateway auto-hospedado.
Uso de tags em nossas opções oficiais de implantação
Nossas opções de implantação no portal do Azure usam a v2
tag que permite que os clientes usem a versão mais recente da imagem de contêiner do gateway auto-hospedado v2 com todas as atualizações e patches de recursos.
Nota
Nós fornecemos o comando e trechos YAML como referência, sinta-se livre para usar uma tag mais específica, se desejar.
Ao instalar com nosso gráfico Helm, a marcação de imagens é otimizada para você. A versão do aplicativo do gráfico Helm fixa o gateway para uma determinada versão e não depende latest
do .
Saiba mais sobre como instalar um gateway auto-hospedado do Gerenciamento de API no Kubernetes com o Helm.
Risco da utilização de etiquetas rolantes
Tags contínuas são tags que são potencialmente atualizadas quando uma nova versão da imagem de contêiner é lançada. Isso permite que os usuários do contêiner recebam atualizações para a imagem do contêiner sem precisar atualizar suas implantações.
Isso significa que você pode executar versões diferentes em paralelo sem perceber, por exemplo, quando executa ações de dimensionamento depois v2
que a tag foi atualizada.
Exemplo - v2
a tag foi liberada com 2.0.0
a imagem do contêiner, mas quando 2.1.0
for liberada, a v2
tag será vinculada à 2.1.0
imagem.
Importante
Considere o uso de uma tag de versão específica na produção para evitar a atualização não intencional para uma versão mais recente.
Conectividade ao Azure
Os gateways autoalojados precisam de conectividade TCP/IP de saída para o Azure na porta 443. Cada gateway autoalojado tem de estar associado a um único serviço Gestão de API e configurado através do respetivo plano de gestão. Um gateway autoalojado utiliza a conectividade ao Azure para:
- Comunicar o respetivo estado ao enviar mensagens de heartbeat a cada minuto
- Verificar regularmente (a cada 10 segundos) se existem atualizações de configuração para as aplicar sempre que estiverem disponíveis
- Enviar métricas para o Azure Monitor, se estiver configurado para o fazer
- Enviar eventos para o Application Insights, se estiver definido para o fazer
Dependências de FQDN
Para operar corretamente, cada gateway auto-hospedado precisa de conectividade de saída na porta 443 para os seguintes pontos de extremidade associados à sua instância de Gerenciamento de API baseada em nuvem:
Description | Necessário para v1 | Necessário para v2 | Notas |
---|---|---|---|
Nome do host do ponto de extremidade de configuração | <apim-service-name>.management.azure-api.net |
<apim-service-name>.configuration.azure-api.net 1 |
Nomes de host personalizados também são suportados e podem ser usados em vez do nome de host padrão. |
Endereço IP público da instância de Gerenciamento de API | ✔️ | ✔️ | O endereço IP do local principal é suficiente. |
Endereços IP públicos da marca de serviço de Armazenamento do Azure | ✔️ | Opcional2 | Os endereços IP devem corresponder ao local principal da instância de Gerenciamento de API. |
Nome do host da conta de Armazenamento de Blob do Azure | ✔️ | Opcional2 | Conta associada à instância (<blob-storage-account-name>.blob.core.windows.net ) |
Nome do host da conta do Armazenamento de Tabela do Azure | ✔️ | Opcional2 | Conta associada à instância (<table-storage-account-name>.table.core.windows.net ) |
Pontos de extremidade para o Azure Resource Manager | ✔️ | Opcional3 | Os endpoints necessários são management.azure.com . |
Pontos de extremidade para integração com o Microsoft Entra | ✔️ | Opcional4 | Os pontos finais necessários são <region>.login.microsoft.com e login.microsoftonline.com . |
Pontos de extremidade para integração do Azure Application Insights | Opcional5 | Opcional5 | Os parâmetros de avaliação mínimos necessários são:
|
Pontos de extremidade para integração de Hubs de Eventos | Opcional5 | Opcional5 | Saiba mais nos documentos dos Hubs de Eventos do Azure |
Pontos de extremidade para integração de cache externo | Opcional5 | Opcional5 | Esse requisito depende do cache externo que está sendo usado |
1 Para uma instância de Gerenciamento de API em uma rede virtual interna, consulte Conectividade em uma rede virtual interna.
2 Necessário apenas na v2 quando o inspetor de API ou as cotas são usados em políticas.
3 Necessário apenas ao usar a autenticação do Microsoft Entra para verificar as permissões RBAC.
4 Necessário apenas ao usar a autenticação do Microsoft Entra ou políticas relacionadas ao Microsoft Entra.
5 Necessário apenas quando o recurso é usado e requer informações públicas de endereço IP, porta e nome de host.
Importante
- Os nomes de host DNS devem ser resolúveis para endereços IP e os endereços IP correspondentes devem ser acessíveis.
- Os nomes de conta de armazenamento associados são listados na página Status da conectividade de rede do serviço no portal do Azure.
- Os endereços IP públicos subjacentes às contas de armazenamento associadas são dinâmicos e podem ser alterados sem aviso prévio.
Conectividade em rede virtual interna
Conectividade privada - Se o gateway auto-hospedado for implantado em uma rede virtual, habilite a conectividade privada para o ponto de extremidade de configuração v2 a partir do local do gateway auto-hospedado, por exemplo, usando um DNS privado em uma rede emparelhada.
Conectividade com a Internet - Se o gateway auto-hospedado precisar se conectar ao ponto de extremidade de configuração v2 pela Internet, configure um nome de host personalizado para o ponto de extremidade de configuração e exponha o ponto de extremidade usando o Application Gateway.
Opções de autenticação
Para autenticar a conexão entre o gateway auto-hospedado e o ponto de extremidade de configuração da instância de Gerenciamento de API baseado em nuvem, você tem as seguintes opções nas definições de configuração do contêiner de gateway.
Opção | Considerações |
---|---|
Autenticação do Microsoft Entra | Configurar um ou mais aplicativos do Microsoft Entra para acesso ao gateway Gerencie o acesso separadamente por aplicativo Configure tempos de expiração mais longos para segredos de acordo com as políticas da sua organização Use procedimentos padrão do Microsoft Entra para atribuir ou revogar permissões de usuário ou grupo para o aplicativo e para girar segredos |
Token de acesso ao gateway (também chamado de chave de autenticação) | O token expira a cada 30 dias, no máximo, e deve ser renovado nos contêineres Apoiado por uma chave de gateway que pode ser girada independentemente (por exemplo, para revogar o acesso) Regenerar a chave do gateway invalida todos os tokens de acesso criados com ela |
Falhas de conectividade
Quando a conectividade com o Azure é perdida, o gateway auto-hospedado não consegue receber atualizações de configuração, relatar seu status ou carregar telemetria.
O gateway auto-hospedado foi projetado para "falhar estático" e pode sobreviver à perda temporária de conectividade com o Azure. Ele pode ser implantado com ou sem backup de configuração local. Com o backup de configuração, os gateways auto-hospedados salvam regularmente uma cópia de backup da configuração baixada mais recente em um volume persistente anexado ao contêiner ou pod.
Quando o backup de configuração é desativado e a conectividade com o Azure é interrompida:
- A execução de gateways auto-hospedados continuará a funcionar usando uma cópia na memória da configuração
- Gateways auto-hospedados interrompidos não poderão ser iniciados
Quando o backup de configuração é ativado e a conectividade com o Azure é interrompida:
- A execução de gateways auto-hospedados continuará a funcionar usando uma cópia na memória da configuração
- Os gateways auto-hospedados interrompidos poderão começar a usar uma cópia de backup da configuração
Quando a conectividade é restaurada, cada gateway auto-hospedado afetado pela interrupção se reconecta automaticamente com seu serviço de Gerenciamento de API associado e baixa todas as atualizações de configuração que ocorreram enquanto o gateway estava "offline".
Segurança
Limitações
A seguinte funcionalidade encontrada nos gateways gerenciados não está disponível nos gateways auto-hospedados:
- Reinício da sessão TLS.
- Renegociação do certificado do cliente. Para usar a autenticação de certificado de cliente, os consumidores de API devem apresentar seus certificados como parte do handshake TLS inicial. Para garantir esse comportamento, habilite a configuração Negociar certificado de cliente ao configurar um nome de host personalizado de gateway auto-hospedado (nome de domínio).
Transport Layer Security (TLS)
Importante
Esta visão geral só é aplicável ao gateway auto-hospedado v1 & v2.
Protocolos suportados
O gateway auto-hospedado fornece suporte para TLS v1.2 por padrão.
Os clientes que usam domínios personalizados podem habilitar o TLS v1.0 e/ou v1.1 no plano de controle.
Pacotes de codificação disponíveis
Importante
Esta visão geral só é aplicável ao gateway auto-hospedado v2.
O gateway auto-hospedado usa os seguintes pacotes de codificação para conexões de cliente e servidor:
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
Gerenciando pacotes de codificação
A partir da v2.1.1 e superior, você pode gerenciar as cifras que estão sendo usadas por meio da configuração:
net.server.tls.ciphers.allowed-suites
permite definir uma lista separada por vírgulas de cifras a serem usadas para a conexão TLS entre o cliente de API e o gateway auto-hospedado.net.client.tls.ciphers.allowed-suites
permite definir uma lista separada por vírgulas de cifras a serem usadas para a conexão TLS entre o gateway auto-hospedado e o back-end.
Próximos passos
- Saiba mais sobre os vários gateways em nossa visão geral do gateway de API
- Saiba mais sobre a política de suporte para o gateway auto-hospedado
- Saiba mais sobre o Gerenciamento de API em um mundo híbrido e multicloud
- Saiba mais sobre as orientações para executar o gateway auto-hospedado no Kubernetes em produção
- Implantar gateway auto-hospedado no Docker
- Implantar gateway auto-hospedado no Kubernetes
- Implantar gateway auto-hospedado no cluster Kubernetes habilitado para Azure Arc
- Implantar gateway auto-hospedado em Aplicativos de Contêiner do Azure
- Definições de configuração de gateway auto-hospedado
- Saiba mais sobre os recursos de observabilidade no Gerenciamento de API
- Saiba mais sobre a integração do Dapr com o gateway auto-hospedado