Proteger as comunicações de ponta a ponta para aplicativos Spring Boot em um ambiente de Confiança Zero

Observação

Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.

O plano Standard de consumo e dedicado será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano Standard de consumo e dedicado dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.

Este artigo descreve como proteger as comunicações de ponta a ponta para aplicativos Spring Boot em um ambiente de Confiança Zero. É possível proteger as comunicações de ponta a ponta ou terminar a segurança em nível de transporte em qualquer ponto de comunicação para aplicativos Spring Boot. Também é possível automatizar o provisionamento e a configuração de todos os recursos do Azure necessários para proteger as comunicações.

Implementar comunicações seguras como parte da arquitetura da solução pode ser um desafio. Muitos clientes alternam manualmente os certificados ou criam suas próprias soluções para automatizar o provisionamento e a configuração. Mesmo assim, ainda há risco de exfiltração dos dados como cópia ou transferência de dados não autorizada de sistemas de servidor. Com o Azure Spring Apps, esses detalhes são tratados. O Azure Spring Apps abstrai a maior parte da complexidade, deixando as comunicações seguras como opções configuráveis e automatizáveis no serviço.

Comunicações seguras com a Internet

O protocolo TLS/SSL estabelece identidade e confiança e criptografa comunicações de todos os tipos. O TLS/SSL possibilita comunicações seguras, principalmente o tráfego da Web que transporta dados comerciais e de clientes.

É possível usar qualquer tipo de certificado TLS/SSL. Por exemplo, você pode usar certificados emitidos por uma autoridade de certificação, certificados de validação estendida, certificados curinga com suporte para qualquer número de subdomínios ou certificados autoassinados para ambientes de desenvolvimento e teste.

Carregar segurança de certificados com Confiança Zero

Confiança Zero é baseado no princípio de "nunca confie, sempre verifique e sem credenciais". Confiança Zero ajuda a proteger todas as comunicações eliminando certificados desconhecidos e não gerenciados. Confiança Zero envolve confiar apenas em certificados que são compartilhados verificando a identidade antes de conceder acesso a esses certificados. Para obter mais informações, consulte o Centro de Diretrizes para Confiança Zero.

Para carregar os certificados do Azure Key Vault com segurança, os aplicativos Spring Boot usam identidades gerenciadas e RBAC (controle de acesso baseado em função do Azure). O Azure Spring Apps usa uma entidade de serviço do provedor e um controle de acesso baseado em função do Azure. Esse carregamento seguro é desenvolvido usando o provedor de JCA (Arquitetura de criptografia Java) do Azure Key Vault. Para obter mais informações, consulte Biblioteca de clientes de JCA do Azure Key Vault para Java.

Com o Azure Key Vault, você controla o armazenamento e a distribuição de certificados para reduzir os vazamentos acidentais. Aplicativos e serviços podem acessar certificados com segurança. O Key Vault usa o controle de acesso baseado em função do Azure para bloquear acesso somente àqueles que exigem acesso, como um administrador, mas também aplicativos, usando o princípio de privilégios mínimos. Os aplicativos e os serviços autenticam e autorizam, usando o Microsoft Entra ID e o controle de acesso baseado em função do Azure, para acessarem certificados. É possível monitorar o acesso e o uso de certificados no Key Vault por meio da trilha de auditoria completa.

Proteger as comunicações de ponta a ponta ou terminar o TLS a qualquer momento

Conforme ilustrado no diagrama abaixo, há vários segmentos de comunicação através dos seguintes componentes:

  • Pontos de acesso à rede como o Azure Front Door
  • Gateway de Aplicativo do Azure
  • Gerenciador de Tráfego Local BIG-IP da F5
  • Gerenciamento de API do Azure
  • Aplicativos Spring Boot de Gerenciamento de API da Apigee e sistemas de Back-end como bancos de dados, sistemas de eventos e mensagens e cache de aplicativos.

É possível proteger as comunicações de ponta a ponta ou terminar a segurança em nível de transporte em qualquer ponto de comunicação para aplicativos Spring Boot.

Diagrama mostrando a arquitetura de comunicações seguras de ponta a ponta para aplicativos Spring Boot.

As seções a seguir descrevem essa arquitetura com mais detalhes.

Segmento 1: proteger as comunicações no Azure Spring Apps

O primeiro segmento (segmento 1 no diagrama) representa as comunicações dos consumidores para o controlador de entrada no Azure Spring Apps. Esses consumidores incluem navegadores, celulares, desktops, quiosques ou pontos de acesso de rede como Azure Front Door, Gateway de Aplicativo do Azure, Gerenciador de Tráfego Local BIG-IP da F5, Gerenciamento de API do Azure e Gerenciamento de API da Apigee.

Por padrão, esse segmento é protegido usando um certificado SSL/TLS fornecido pela Microsoft para o domínio *.azuremicroservices.io. Você pode aplicar seu próprio certificado SSL/TLS no Azure Key Vault associando um domínio personalizado ao aplicativo no Azure Spring Apps. Nenhum código é necessário. Para obter mais informações, confira Tutorial: Mapear um domínio personalizado existente para o Azure Spring Apps.

Segmento 2: proteger as comunicações do controlador de entrada para os aplicativos

O próximo segmento (segmento 2 no diagrama) representa as comunicações do controlador de entrada do Azure Spring Apps para qualquer aplicativo no Azure Spring Apps. É possível habilitar o TLS/SSL para proteger o tráfego do controlador de entrada para um aplicativo que dá suporte a HTTPS. Para obter mais informações, consulte Habilitar TLS de entrada a aplicativo para um aplicativo.

Um aplicativo Spring Boot pode usar a abordagem do Spring para habilitar HTTPS, ou o aplicativo pode proteger as comunicações usando o Iniciador do Spring Boot para Certificados do Azure Key Vault. Para obter mais informações, consulte Tutorial: Proteger aplicativos Spring Boot usando certificados do Azure Key Vault.

As três etapas de configuração a seguir serão necessárias para proteger as comunicações usando um certificado SSL/TLS de um Azure Key Vault. Nenhum código é necessário.

  1. Inclua a seguinte dependência do Iniciador do Spring Boot para Certificados do Azure Key Vault no arquivo pom.xml:

    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>azure-spring-boot-starter-keyvault-certificates</artifactId>
    </dependency>
    
  2. Adicione as seguintes propriedades para configurar um aplicativo para carregar um certificado SSL/TLS do Azure Key Vault. Especifique o URI do Azure Key Vault e o nome do certificado.

    azure:
      keyvault:
        uri: ${KEY_VAULT_URI}
    
    server:
      ssl:
        key-alias: ${SERVER_SSL_CERTIFICATE_NAME}
        key-store-type: AzureKeyVault
    
  3. Habilite a identidade gerenciada do aplicativo e, em seguida, conceda à identidade gerenciada o acesso "Get" e "List" para o Azure Key Vault. Para obter mais informações, consulte Habilitar a identidade gerenciada atribuída pelo sistema em um aplicativo no Azure Spring Apps e Controle de Acesso de Certificado.

Segmento 3: proteger as comunicações do aplicativo para o middleware gerenciado

O próximo segmento (segmento 3 no diagrama) representa as comunicações de qualquer aplicativo para o Config Server do Spring Cloud gerenciado e o Registro de Serviço do Spring Cloud no Azure Spring Apps. Por padrão, esse segmento é protegido usando um certificado SSL/TLS fornecido pela Microsoft.

Segmento 4: proteger as comunicações entre os aplicativos

O próximo segmento (segmento 4 no diagrama) representa as comunicações entre um aplicativo e outro aplicativo no Azure Spring Apps. Você pode usar o Iniciador do Spring Boot para Certificados do Azure Key Vault para configurar o aplicativo chamador para confiar no certificado SSL/TLS fornecido por um aplicativo chamado habilitado para HTTPS. O aplicativo Spring Boot do receptor poderá usar a abordagem do Spring para habilitar HTTPS ou o aplicativo poderá proteger as comunicações usando o Iniciador do Spring Boot para Certificados do Azure Key Vault. Para obter mais informações, consulte Tutorial: Proteger aplicativos Spring Boot usando certificados do Azure Key Vault.

Segmento 5: proteger o aplicativo para comunicações externas do sistema

O próximo segmento (segmento 5 no diagrama) representa as comunicações entre um aplicativo em execução no Azure Spring Apps e sistemas externos. Você pode usar o Iniciador do Spring Boot para Certificados do Azure Key Vault para configurar o aplicativo em execução no Azure Spring Apps para confiar no certificado SSL/TLS fornecido por qualquer sistema externo. Para obter mais informações, consulte Tutorial: Proteger aplicativos Spring Boot usando certificados do Azure Key Vault.

Carregar implicitamente certificados SSL/TLS do Key Vault em um aplicativo

Se o código Spring, o código Java ou as bibliotecas de códigos abertos, como OpenSSL, dependerem da cadeia JCA padrão da JVM para carregar os certificados implicitamente no repositório confiável da JVM, você poderá importar os certificados SSL/TLS do Key Vault no Azure Spring Apps e usar esses certificados dentro do aplicativo. Para obter mais informações, consulte Usar certificados SSL/TLS do aplicativo no Azure Spring Apps.

Carregar certificados SSL/TLS públicos conhecidos para sistemas de back-end

Para que um aplicativo estabeleça comunicação com os serviços de back-end na nuvem ou em sistemas locais, ele poderá exigir o uso de certificados SSL/TLS públicos para proteger a comunicação. Você poderá carregar esses certificados SSL/TLS para proteger as comunicações de saída. Para obter mais informações, consulte Usar certificados SSL/TLS do aplicativo no Azure Spring Apps.

Automatizar o provisionamento e a configuração para proteger as comunicações

Usando um modelo do ARM, Bicep ou Terraform, será possível automatizar o provisionamento e a configuração de todos os recursos do Azure mencionados acima para proteger as comunicações.

Criar soluções e comunicações seguras

Azure Spring Apps é um serviço totalmente gerenciado para aplicativos Spring Boot. O Azure Spring Apps abstrai a complexidade da infraestrutura e do gerenciamento de middleware do Spring Cloud dos usuários. Você poderá se concentrar na construção da lógica de negócios e deixar o Azure cuidar do dimensionamento dinâmico, dos patches, da segurança, da conformidade e da alta disponibilidade. Com algumas etapas, será possível provisionar o Azure Spring Apps, criar aplicativos, implantar e dimensionar os aplicativos Spring Boot e começar a proteger as comunicações em minutos.

O Azure Spring Apps é criado, operado e com suporte conjunto pela Microsoft e pelo VMware.

Próximas etapas