Ideias de soluções
Este artigo descreve uma ideia de solução. Seu arquiteto de nuvem pode usar essa orientação para ajudar a visualizar os principais componentes para uma implementação típica dessa arquitetura. Use este artigo como ponto de partida para projetar uma solução bem arquitetada que se alinhe aos requisitos específicos de sua carga de trabalho.
Esta solução demonstra como integrar o AKS (Serviço de Kubernetes do Azure) e o Gerenciamento de API do Azure via mTLS (TLS mútuo) em uma arquitetura que fornece criptografia de ponta a ponta.
Conceitos
O gerenciamento de API do Azure permite acesso seguro a serviços de back-end por meio de vários mecanismos. Na camada de transporte (rede), o gerenciamento de API do Azure pode apresentar certificados de cliente ao back-end e, adicionalmente, verificar o certificado apresentado pelo servidor de back-end. Nesse cenário de autenticação TLS mútua, ocorrem as seguintes etapas:
- O gerenciamento de API do Azure se conecta ao servidor de back-end (nesse cenário, ao controlador de entrada em execução no AKS).
- O servidor back-end (o controlador de entrada no AKS) apresenta o certificado do servidor.
- O gerenciamento de API do Azure valida o certificado do servidor.
- O gerenciamento de API do Azure apresenta o certificado do cliente ao servidor (o controlador de entrada no AKS).
- O servidor (o controlador de entrada no AKS) valida o certificado apresentado pelo Gerenciamento de API do Azure.
- O servidor (o controlador de entrada no AKS) concede acesso à solicitação que está sendo enviada por proxy por meio do gerenciamento de API do Azure.
Arquitetura
Baixe um Arquivo Visio dessa arquitetura.
Fluxo de dados
- Um usuário faz uma solicitação para o ponto de extremidade do aplicativo a partir da Internet.
- O Gateway de Aplicativo do Azure recebe tráfego como HTTPS e apresenta um certificado público carregado anteriormente do Azure Key Vault para o usuário.
- O Application Gateway usa chaves privadas para descriptografar o tráfego (descarregamento SSL), executa inspeções de firewall de aplicativo Web e criptografa novamente o tráfego usando chaves públicas (criptografia de ponta a ponta).
- O Gateway de Aplicativo aplica regras e configurações de back-end com base no pool de back-end e envia tráfego para o pool de back-end de Gerenciamento de API por HTTPS.
- O Gerenciamento de API é implantado no modo de rede virtual interna (somente camada Developer ou Premium) com um endereço IP privado. Ele recebe tráfego como HTTPS com certificados PFX de domínio personalizado.
- A ID do Microsoft Entra fornece autenticação e aplica políticas de Gerenciamento de API por meio do OAuth e, opcionalmente, validação de certificado de cliente. Consulte as etapas para receber e verificar certificados de cliente no Gerenciamento de API do Azure.
- O Gerenciamento de API envia tráfego via HTTPS para um controlador de entrada para um cluster privado do AKS, usando o certificado de cliente confiável pelo controlador de entrada do AKS.
- O controlador de entrada do AKS recebe o tráfego HTTPS e verifica o certificado do cliente apresentado pelo gerenciamento de API do Azure. A maioria dos controladores de entrada em nível empresarial dão suporte ao mTLS. O controlador de entrada do AKS responde ao gerenciamento de API do Azure com o certificado de servidor SSL, que é validado pelo gerenciamento de API.
- O controlador de entrada processa segredos TLS (Segredos do Kubernetes) usando cert.pem e key.pem. O controlador de entrada descriptografa o tráfego por meio de uma chave privada (descarregada). Para gerenciamento de segredo de segurança aprimorado baseado em requisitos, a integração do driver CSI com o AKS está disponível.
- O controlador de entrada criptografa novamente o tráfego usando chaves privadas e envia o tráfego por HTTPS para pods AKS. De acordo com seus requisitos, você pode configurar a entrada do AKS como back-end HTTPS ou passagem.
Componentes
- Gateway de Aplicativo. O Gateway de Aplicativo é um balanceador de carga do tráfego da Web que permite que você gerencie o tráfego para aplicativos Web. Nesse cenário, o Gateway de Aplicativo do Azure é o WAF de Camada 7 que executa a terminação SSL e a inspeção de conteúdo.
- AKS. O AKS fornece clusters Kubernetes totalmente gerenciados para implantação, dimensionamento e gerenciamento de aplicativos em contêineres. Nesse cenário, a lógica de back-end/microsserviços é implantada no AKS.
- Registro de Contêiner do Azure. O Registro de Contêiner é um serviço de registro do Docker privado gerenciado no Azure. Você pode usar o Container Registry para armazenar imagens de contêiner privadas, que são implantadas no cluster.
- Microsoft Entra ID. Nesse cenário, as solicitações do cliente podem conter um token OAuth 2.0, que será autorizado pelo gerenciamento de API do Azure em relação à ID do Microsoft Entra usando a política de token validar do Microsoft Entra.
- Identidades gerenciadas. As identidades gerenciadas fornecem uma identidade automaticamente gerenciada no Microsoft Entra ID para os aplicativos usarem ao se conectarem a recursos que dão suporte à autenticação do Microsoft Entra. Nesse cenário, a identidade gerenciada do AKS pode ser usada para autenticar em sistemas de back-end, como o Banco de Dados SQL do Azure e o Azure Cosmos DB.
- Banco de dados SQL do Azure. O Banco de Dados SQL é um serviço de banco de dados relacional totalmente gerenciado e inteligente, criado para a nuvem. Você pode usar o Banco de Dados SQL para criar uma camada de armazenamento de dados de alto desempenho e alta disponibilidade para seus aplicativos de nuvem modernos. Nesse cenário, o banco de dados SQL do Azure é usado como a camada de persistência de dados para dados estruturados.
- Azure Cosmos DB. O Azure Cosmos DB é um serviço de banco de dados NoSQL totalmente gerenciado para criar e modernizar aplicativos escalonáveis de alto desempenho. Nesse cenário, o Azure Cosmos DB é usado como a camada de persistência de dados para dados semiestruturados.
- Gerenciamento de API. Você pode usar o Gerenciamento de API do Azure para publicar APIs para seus desenvolvedores, parceiros e funcionários. Nesse cenário, o gerenciamento de API do Azure é usado para fornecer acesso seguro e gerenciado a microsserviços e lógica de negócios hospedados no AKS.
- Link Privado do Azure. O Link Privado fornece acesso aos serviços de PaaS hospedados no Azure para que você possa manter seus dados na rede da Microsoft. Nesse cenário, a conectividade de rede do AKS com o Banco de Dados SQL do Azure, o Azure Cosmos DB e o Registro de Contêiner do Azure é por meio de links privados.
- Key Vault. O Key Vault pode fornecer segurança aprimorada para chaves e outros segredos. Nesse cenário, os certificados TLS são armazenados no Azure Key Vault.
- Defender para Nuvem. O Defender para Nuvem é uma solução para gerenciamento da postura de segurança na nuvem e proteção de cargas de trabalho da nuvem. Ele encontra pontos fracos em sua configuração de nuvem, ajuda a fortalecer a segurança do seu ambiente, e pode proteger cargas de trabalho em ambientes multinuvem e híbridos contra ameaças em evolução. Nesse cenário, as imagens de contêiner implantadas no Registro de Contêiner do Azure e no Serviço de Kubernetes do Azure são verificadas pelo Microsoft Defender para contêineres.
- Azure Monitor. Você pode usar o Monitor para coletar, analisar e agir sobre dados de telemetria de seus ambientes locais e do Azure. O Monitor ajuda você a maximizar o desempenho e a disponibilidade de seus aplicativos e a identificar problemas de forma proativa.
- Log Analytics. Você pode usar o Log Analytics para editar e executar consultas de log com dados em logs do Azure Monitor. Nesse cenário, os logs de diagnóstico do Gateway de Aplicativo do Azure, do AKS, do gerenciamento de API, do banco de dados SQL do Azure, do Azure Cosmos DB etc. podem ser enviados para o workspace do Log Analytics para que os logs possam ser analisados com base nos requisitos.
- Application Insights. O Application Insights é uma extensão do Azure Monitor. Ele oferece monitoramento de desempenho de aplicativos. O gerenciamento de API do Azure e os contêineres no Serviço de Kubernetes do Azure podem ser integrados ao Application Insights, para que os rastreamentos no nível do aplicativo possam ser obtidos e analisados.
- Microsoft Sentinel. O Microsoft Sentinel é uma plataforma de gerenciamento de eventos e informações de segurança nativo de nuvem, que usa uma IA interna para ajudá-lo a analisar grandes volumes de dados. Nesse cenário, o Microsoft Sentinel é usado como a solução SIEM para aprimorar a segurança da solução.
- Azure Bastion. O Azure Bastion é um serviço totalmente gerenciado que fornece acesso de RDP e SSH a VMs sem exposição por meio de endereços IP públicos. Você pode provisionar o serviço diretamente em sua rede virtual local ou emparelhada para obter suporte para todas as VMs nessa rede. Nesse cenário, os recursos de rede privada são acessados por meio de servidores de salto por meio do Azure Bastion.
- DNS privado do Azure. Você pode usar o DNS privado para gerenciar e resolver nomes de domínio em uma rede virtual sem adicionar uma solução DNS personalizada. Nesse cenário, as zonas DNS privadas são usadas para resolução de nomes para gerenciamento de API, Azure Cosmos DB, banco de dados SQL do Azure e Registro de Contêiner do Azure.
Detalhes do cenário
Você pode usar essa solução para integrar AKS e API Management por meio do mTLS em uma arquitetura que fornece criptografia de ponta a ponta.
Possíveis casos de uso
- Integração do AKS com API Management e Application Gateway, via mTLS.
- MTLS de ponta a ponta entre o API Management e o AKS.
- Implantações de alta segurança para organizações que precisam de TLS de ponta a ponta. Por exemplo, essa solução pode beneficiar as organizações do setor financeiro.
Você pode usar essa abordagem para gerenciar os seguintes cenários:
- Implante o API Management no modo interno e exponha APIs por meio do Gateway de Aplicativo.
- Configure o mTLS e a criptografia de ponta a ponta para alta segurança e tráfego no HTTPS.
- Conecte-se a serviços de PaaS do Azure por meio de um ponto de extremidade privado de segurança avançado.
- Implemente a segurança no Defender para contêineres.
Configuração de TLS mútuo
Consulte Serviços de back-end seguros usando a autenticação de certificado de cliente no Gerenciamento de API do Azure para obter instruções sobre como configurar certificados de back-end no gerenciamento de API do Azure.
Você também precisará configurar o mTLS no controlador de entrada do AKS gerenciado. O certificado de servidor que o AKS apresenta ao APIM pode ser importado diretamente como um segredo do Kubernetes ou pode ser acessado por meio de um segredo do Key Vault. Consulte o artigo Configurar um nome de domínio personalizado e um certificado SSL com o complemento de roteamento de aplicativo para obter detalhes sobre como configurar o certificado do servidor no controlador de entrada gerenciado do AKS. Você pode executar a autenticação de certificado do cliente no controlador de entrada para validar o certificado apresentado pelo Gerenciamento de API. Você precisará fornecer o certificado de AC ao cluster do AKS para verificar o certificado do cliente apresentado pelo Gerenciamento de API. As anotações podem precisar ser configuradas no controlador de entrada para impor a validação do certificado do cliente usando o certificado da autoridade de certificação. Para obter mais detalhes, consulte as etapas para autenticação de certificado de cliente e um arquivo YAML de entrada de amostra com anotações.
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Autor principal:
- Saswat Mohanty | Arquiteto Sênior de Soluções na Nuvem
Outros colaboradores:
- Mick Alberts | Escritor Técnico
- Arshad Azeem | Arquiteto Sênior de Soluções na Nuvem
- Raj Penchala | Arquiteto Principal de Soluções na Nuvem
Para ver perfis não públicos do LinkedIn, entre no LinkedIn.
Próximas etapas
- Gateway de Aplicativo
- Roteiro do AKS
- Documentação do AKS
- Roteiro de aprendizagem do AKS
- Roteiro de aprendizagem do API Management
- Acelerador de zona de destino do Gerenciamento de API
- Blog do Microsoft Defender para Nuvem