Sécuriser les communications de bout en bout pour les applications Spring Boot dans un environnement Confiance nulle

Cet article explique comment sécuriser les communications de bout en bout pour les applications Spring Boot dans un environnement Confiance nulle. Vous pouvez sécuriser les communications de bout en bout ou mettre fin à la sécurité au niveau du transport à tout point de communication pour les applications Spring Boot. Vous pouvez également automatiser l’approvisionnement et la configuration pour toutes les ressources Azure nécessaires à la sécurisation des communications.

L’implémentation de communications sécurisées dans le cadre de votre architecture de solution peut être difficile. De nombreux clients font pivoter manuellement leurs certificats ou créent leurs propres solutions pour automatiser l’approvisionnement et la configuration. Même ensuite, il existe toujours des risques d’exfiltration des données, tels que la copie ou le transfert non autorisé de données à partir de systèmes serveurs. Avec Azure Spring Apps, ces détails sont gérés pour vous. Azure Spring Apps extrait la plupart de la complexité, ce qui laisse les communications sécurisées comme des options configurables et automatisables dans le service.

Sécuriser les communications Internet

Le protocole TLS/SSL établit l’identité et l’approbation et chiffre les communications de tous les types. TLS/SSL permet des communications sécurisées, en particulier le trafic web qui transporte des données commerciales et des clients.

Vous pouvez utiliser n’importe quel type de certificat TLS/SSL. Par exemple, vous pouvez utiliser des certificats émis par une autorité de certification, des certificats de validation étendus, des certificats génériques prenant en charge n’importe quel nombre de sous-domaines ou des certificats auto-signés pour les environnements de développement et de test.

Charger la sécurité des certificats avec Confiance nulle

Confiance nulle est basé sur le principe « jamais confiance, toujours vérifier et sans informations d’identification ». Confiance nulle permet de sécuriser toutes les communications en éliminant les certificats inconnus et non managés. Confiance nulle implique d’approuver uniquement les certificats partagés en vérifiant l’identité avant d’accorder l’accès à ces certificats. Pour plus d'informations, voir le Centre d'orientation sur la confiance zéro.

Pour charger en toute sécurité des certificats à partir d’Azure Key Vault, les applications Spring Boot utilisent des identités managées et un contrôle d’accès en fonction du rôle (RBAC) Azure. Azure Spring Apps utilise un principal de service de fournisseur et un contrôle d’accès en fonction du rôle Azure. Ce chargement sécurisé est alimenté à l’aide du fournisseur JCA (Java Cryptography Architecture) Azure Key Vault. Pour plus d'informations, voir la bibliothèque client Azure Key Vault JCA pour Java.

Avec Azure Key Vault, vous contrôlez le stockage et la distribution des certificats pour réduire les fuites accidentelles. Les applications et services peuvent accéder en toute sécurité aux certificats. Key Vault utilise le contrôle d’accès en fonction du rôle Azure pour verrouiller l’accès uniquement à ceux nécessitant un accès, comme un administrateur, mais aussi des applications, en utilisant le principe du privilège minimum. Les applications et services authentifient et autorisent, à l’aide de l’ID Microsoft Entra et du contrôle d’accès en fonction du rôle Azure, pour accéder aux certificats. Vous pouvez surveiller l’accès et l’utilisation de certificats dans Key Vault via sa piste d’audit complète.

Sécuriser les communications de bout en bout ou arrêter TLS à tout moment

Comme illustré dans le diagramme ci-dessous, il existe plusieurs segments de communications par le biais des composants suivants :

  • Points d’accès réseau tels qu’Azure Front Door
  • Azure Application Gateway
  • F5 BIG-IP Local Traffic Manager
  • Gestion des API Azure
  • Apigee Gestion des API applications Spring Boot et systèmes back-end tels que les bases de données, les systèmes de messagerie et d’événements et le cache d’applications.

Vous pouvez sécuriser les communications de bout en bout ou mettre fin à la sécurité au niveau du transport à tout point de communication pour les applications Spring Boot.

Diagram showing the architecture of end-to-end secure communications for Spring Boot apps.

Les sections suivantes décrivent cette architecture plus en détail.

Segment 1 : Sécuriser les communications dans Azure Spring Apps

Le premier segment (segment 1 dans le diagramme) représente les communications des consommateurs vers le contrôleur d’entrée dans Azure Spring Apps. Ces consommateurs incluent des navigateurs, des téléphones mobiles, des bureaux, des kiosques ou des points d’accès réseau tels qu’Azure Front Door, Azure App Gateway, F5 BIG-IP Local Traffic Manager, Azure Gestion des API et Apigee Gestion des API.

Par défaut, ce segment est sécurisé à l’aide d’un certificat TLS/SSL fourni par Microsoft pour le domaine *.azuremicroservices.io. Vous pouvez appliquer votre propre certificat TLS/SSL dans Azure Key Vault en liant un domaine personnalisé à votre application dans Azure Spring Apps. Aucun code n’est nécessaire. Pour plus d’informations, consultez Tutoriel : Mappage d’un domaine personnalisé existant à Azure Spring Apps.

Segment 2 : Sécuriser les communications du contrôleur d’entrée vers les applications

Le segment suivant (segment 2 dans le diagramme) représente les communications du contrôleur d’entrée Azure Spring Apps vers n’importe quelle application sur Azure Spring Apps. Vous pouvez activer TLS/SSL pour sécuriser le trafic du contrôleur d’entrée vers une application prenant en charge HTTPS. Pour plus d’informations, consultez Activer le protocole TLS d’entrée à application pour une application.

Une application Spring Boot peut utiliser l’approche de Spring pour activer HTTPS, ou l’application peut sécuriser les communications à l’aide d’Azure Key Vault Certificates Spring Boot Starter. Pour plus d'informations, voir Tutoriel : Sécuriser les applications Spring Boot à l'aide des certificats Azure Key Vault.

Vous avez besoin des trois étapes de configuration suivantes pour sécuriser les communications à l’aide d’un certificat TLS/SSL à partir d’un Key Vault Azure. Aucun code n’est nécessaire.

  1. Incluez la dépendance Azure Key Vault Certificates Spring Boot Starter suivante dans votre fichier pom.xml :

    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>azure-spring-boot-starter-keyvault-certificates</artifactId>
    </dependency>
    
  2. Ajoutez les propriétés suivantes pour configurer une application pour charger un certificat TLS/SSL à partir d’Azure Key Vault. Veillez à spécifier l’URI du Key Vault Azure et le nom du certificat.

    azure:
      keyvault:
        uri: ${KEY_VAULT_URI}
    
    server:
      ssl:
        key-alias: ${SERVER_SSL_CERTIFICATE_NAME}
        key-store-type: AzureKeyVault
    
  3. Activez l’identité managée de l’application, puis accordez l’identité managée avec « Obtenir » et « Répertorier » l’accès au Key Vault Azure. Pour plus d’informations, consultez Activer l’identité managée affectée par le système pour une application dans Azure Spring Apps et le certificat Access Control.

Segment 3 : Sécuriser les communications entre l’application et le middleware managé

Le segment suivant (segment 3 dans le diagramme) représente les communications de n’importe quelle application vers le serveur de configuration Spring Cloud managé et le Registre spring cloud service dans Azure Spring Apps. Par défaut, ce segment est sécurisé par un certificat TLS/SSL fourni par Microsoft.

Segment 4 : Sécuriser l’application aux communications d’application

Le segment suivant (segment 4 dans le diagramme) représente les communications entre une application vers une autre application dans Azure Spring Apps. Vous pouvez utiliser Azure Key Vault Certificates Spring Boot Starter pour configurer l’application appelante pour approuver le certificat TLS/SSL fourni par une application appelée HTTPS. L'application Spring Boot réceptrice peut utiliser l'approche de Spring pour activer HTTPS, ou l'application peut sécuriser les communications en utilisant les certificats Azure Key Vault Spring Boot Starter. Pour plus d'informations, voir Tutoriel : Sécuriser les applications Spring Boot à l'aide des certificats Azure Key Vault.

Segment 5 : Sécuriser l’application dans les communications système externes

Le segment suivant (segment 5 dans le diagramme) représente les communications entre une application exécutée dans Azure Spring Apps et des systèmes externes. Vous pouvez utiliser Azure Key Vault Certificates Spring Boot Starter pour configurer l’application s’exécutant dans Azure Spring Apps pour approuver le certificat TLS/SSL fourni par tous les systèmes externes. Pour plus d'informations, voir Tutoriel : Sécuriser les applications Spring Boot à l'aide des certificats Azure Key Vault.

Charger implicitement des certificats TLS/SSL à partir de Key Vault dans une application

Si votre code Spring, code Java ou bibliothèques open source, telles que OpenSSL, reposez sur la chaîne JCA par défaut JVM pour charger implicitement des certificats dans le magasin d’approbation de JVM, vous pouvez importer vos certificats TLS/SSL à partir de Key Vault dans Azure Spring Apps et utiliser ces certificats dans l’application. Pour plus d'informations, voir Utiliser des certificats TLS/SSL dans votre application dans Azure Spring Apps.

Charger des certificats TLS/SSL publics connus pour les systèmes principaux

Pour qu’une application communique avec les services principaux dans le cloud ou dans les systèmes locaux, elle peut nécessiter l’utilisation de certificats TLS/SSL publics pour sécuriser la communication. Vous pouvez charger ces certificats TLS/SSL pour sécuriser les communications sortantes. Pour plus d'informations, voir Utiliser des certificats TLS/SSL dans votre application dans Azure Spring Apps.

Automatiser l’approvisionnement et la configuration pour sécuriser les communications

À l’aide d’un modèle ARM, bicep ou Terraform, vous pouvez automatiser l’approvisionnement et la configuration de toutes les ressources Azure mentionnées ci-dessus pour sécuriser les communications.

Créer vos solutions et sécuriser les communications

Azure Spring Apps est un service entièrement géré pour les applications Spring Boot. Azure Spring Apps extrait la complexité de la gestion de l’infrastructure et du middleware Spring Cloud des utilisateurs. Vous pouvez vous concentrer sur la création de votre logique métier et permettre à Azure de prendre soin de la mise à l’échelle dynamique, des correctifs, de la sécurité, de la conformité et de la haute disponibilité. Avec quelques étapes, vous pouvez provisionner Azure Spring Apps, créer des applications, déployer et mettre à l’échelle des applications Spring Boot et commencer à sécuriser les communications en quelques minutes.

Azure Spring Apps est construit, exploité et soutenu conjointement par Microsoft et VMware.

Étapes suivantes