Tutoriel : Utiliser des références Key Vault dans une application Java Spring
Dans ce tutoriel, vous apprenez à utiliser le service Azure App Configuration avec Azure Key Vault. App Configuration et Key Vault sont des services complémentaires utilisés côte à côte dans la plupart des déploiements d’applications.
App Configuration vous aide à utiliser ces services ensemble en créant des clés qui référencent des valeurs stockées dans Key Vault. Lorsque le service App Configuration crée de telles clés, il stocke les URI des valeurs Key Vault plutôt que les valeurs elles-mêmes.
Votre application utilise le fournisseur client de App Configuration pour récupérer les références Key Vault, tout comme pour toutes les autres clés stockées dans App Configuration. Dans ce cas, les valeurs stockées dans App Configuration sont des URI qui référencent les valeurs dans le coffre de clés. Elles ne sont pas des valeurs de coffre de clés ou des informations d’identification. Étant donné que le fournisseur client reconnaît les clés comme des références Key Vault, il utilise Key Vault pour récupérer leurs valeurs.
Votre application est chargée de s’authentifier correctement auprès d’App Configuration et auprès de Key Vault. Les deux services ne communiquent pas directement.
Ce tutoriel vous montre comment implémenter des références Key Vault dans votre code. Il s’appuie sur l’application web introduite dans les guides de démarrage rapide. Avant de continuer, suivez d’abord Créer une application Java Spring avec App Configuration.
Vous pouvez utiliser l’éditeur de code de votre choix pour exécuter les étapes de ce tutoriel. Par exemple, Visual Studio Code est un éditeur de code multiplateforme qui est disponible pour les systèmes d’exploitation Windows, macOS et Linux.
Dans ce tutoriel, vous allez apprendre à :
- Créer une clé App Configuration qui référence une valeur stockée dans Key Vault.
- Accéder à la valeur de cette clé à partir d’une application Java Spring.
Prérequis
- Abonnement Azure : créez-en un gratuitement
- Kit de développement Java (JDK) pris en charge avec version 11.
- Apache Maven version 3.0 ou ultérieure
Création d'un coffre
Sélectionnez l’option Créer une ressource dans le coin supérieur gauche du Portail Azure :
Dans la zone de recherche, entrez Key Vault.
Dans la liste des résultats, sélectionnez Coffres de clés sur la gauche.
Dans Coffres de clés, sélectionnez Ajouter.
Sur la droite, dans Créer un coffre de clés, renseignez les informations suivantes :
- Sélectionnez Abonnement pour choisir un abonnement.
- Dans Groupe de ressources, sélectionnez Créer un nouveau et entrez un nom de groupe de ressources.
- Dans Nom du coffre de clés, un nom unique est requis. Pour ce tutoriel, entrez Contoso-vault2.
- Dans la liste déroulante Région, choisissez un emplacement.
Conservez les valeurs par défaut des autres options Création d’un coffre de clés.
Sélectionnez Create (Créer).
À ce stade, votre compte Azure est le seul autorisé à accéder à ce nouveau coffre.
Ajouter un secret au coffre de clés
Pour ajouter un secret au coffre, vous n’avez qu’à effectuer deux autres étapes. Dans ce cas, ajoutez un message que vous pouvez utiliser pour tester la récupération de Key Vault. Le message est appelé Message et vous stockez la valeur « Hello from Key Vault » dedans.
- Depuis les pages des propriétés Key Vault, sélectionnez Secrets.
- Sélectionnez Générer/Importer.
- Dans le volet Créer un secret, saisissez les valeurs suivantes :
- Options de chargement : Entrez Manuel.
- Name : Entrez Message.
- Valeur : Entrez Hello from Key Vault.
- Conservez les valeurs par défaut des autres propriétés Créer un secret.
- Sélectionnez Create (Créer).
Ajouter une référence Key Vault à App Configuration
Connectez-vous au portail Azure. Sélectionnez Toutes les ressources, puis sélectionnez l’instance du magasin App Configuration que vous avez créée dans le guide de démarrage rapide.
Sélectionnez Explorateur de configuration.
Sélectionnez + Créer>Référence Key Vault, puis choisissez les valeurs suivantes :
- Clé : Sélectionnez /application/config.keyvaultmessage
- Étiquette : Laissez cette valeur vide.
- Abonnement, Groupe de ressources et Key Vault : Entrez les valeurs correspondant aux valeurs du coffre de clés que vous avez créé à la section précédente.
- Secret : Sélectionnez le secret nommé Message que vous avez créé dans la section précédente.
Se connecter à Key Vault
Dans ce tutoriel, vous utilisez un principal de service pour l’authentification auprès de KeyVault. Pour créer ce principal de service, utilisez la commande Azure CLI az ad sp create-for-rbac :
az ad sp create-for-rbac -n "http://mySP" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
Cette opération retourne une série de paires clé/valeur :
{ "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444", "clientSecret": "aaaaaaaa-0b0b-1c1c-2d2d-333333333333", "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "activeDirectoryEndpointUrl": "https://login.microsoftonline.com", "resourceManagerEndpointUrl": "https://management.azure.com/", "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/", "galleryEndpointUrl": "https://gallery.azure.com/", "managementEndpointUrl": "https://management.core.windows.net/" }
Exécutez la commande suivante pour autoriser le principal du service à accéder à votre coffre de clés :
az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get
Exécutez la commande suivante pour récupérer votre ID d’objet, puis ajoutez-le à App Configuration.
az ad sp show --id <clientId-of-your-service-principal> az role assignment create --role "App Configuration Data Reader" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name> --assignee-principal-type --assignee-object-id <objectId-of-your-service-principal> --resource-group <your-resource-group>
Créez les variables d’environnement AZURE_CLIENT_ID, AZURE_CLIENT_SECRET et AZURE_TENANT_ID. Utilisant les valeurs du principal de service affichées à l’étape précédente. Sur la ligne de commande, exécutez la commandes suivantes et redémarrez l’invite de commandes pour que la modification soit prise en compte :
setx AZURE_CLIENT_ID "clientId" setx AZURE_CLIENT_SECRET "clientSecret" setx AZURE_TENANT_ID "tenantId"
Si vous utilisez Windows PowerShell, exécutez la commande suivante :
$Env:AZURE_CLIENT_ID = "clientId" $Env:AZURE_CLIENT_SECRET = "clientSecret" $Env:AZURE_TENANT_ID = "tenantId"
Si vous utilisez macOS ou Linux, exécutez la commande suivante :
export AZURE_CLIENT_ID ='clientId' export AZURE_CLIENT_SECRET ='clientSecret' export AZURE_TENANT_ID ='tenantId'
Notes
Ces informations d’identification Key Vault sont utilisées uniquement dans votre application. Votre application s’authentifie directement auprès de Key Vault à l’aide de ces informations d’identification sans impliquer le service App Configuration. Le coffre de clés fournit l’authentification pour votre application et votre service App Configuration sans partager ni exposer les clés.
Mettre à jour votre code pour utiliser une référence Key Vault
Créez une variable d’environnement appelée APP_CONFIGURATION_ENDPOINT. Définissez sa valeur sur le point de terminaison de votre magasin App Configuration. Vous trouverez le point de terminaison dans le panneau Clés d’accès dans le portail Azure. Redémarrez l’invite de commandes pour que la modification soit prise en compte.
Ouvrez votre fichier de configuration dans le dossier resources . Mettez à jour ce fichier pour utiliser la valeur APP_CONFIGURATION_ENDPOINT. Supprimez toutes les références à une chaîne de connexion dans ce fichier.
spring:
cloud:
azure:
appconfiguration:
stores:
- endpoint: ${APP_CONFIGURATION_ENDPOINT}
Notes
Vous pouvez également utiliser les configurations globales Spring Cloud Azure pour vous connecter à Key Vault.
Ouvrez MessageProperties.java. Ajoutez une nouvelle variable appelée keyVaultMessage :
private String keyVaultMessage; public String getKeyVaultMessage() { return keyVaultMessage; } public void setKeyVaultMessage(String keyVaultMessage) { this.keyVaultMessage = keyVaultMessage; }
Ouvrez HelloController.java. Mettez à jour la méthode getMessage pour inclure le message récupéré à partir de Key Vault.
@GetMapping public String getMessage() { return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage(); }
Générez votre application Spring Boot avec Maven, puis exécutez-la. Par exemple :
mvn clean package mvn spring-boot:run
Lorsque votre application s’exécute, utilisez curl pour la tester. Par exemple :
curl -X GET http://localhost:8080/
Vous voyez le message que vous avez entré dans le magasin App Configuration. Vous voyez également le message que vous avez entré dans Key Vault.
Nettoyer les ressources
Si vous ne souhaitez plus utiliser les ressources créées dans cet article, supprimez le groupe de ressources que vous avez créé ici afin d’éviter des frais.
Important
La suppression d’un groupe de ressources est irréversible. Le groupe de ressources et toutes les ressources qu’il contient sont supprimés définitivement. Veillez à ne pas supprimer accidentellement les mauvaises ressources ou le mauvais groupe de ressources. Si vous avez créé les ressources pour cet article dans un groupe de ressources contenant d’autres ressources que vous souhaitez conserver, supprimez chaque ressource individuellement à partir de son volet, au lieu de supprimer l’intégralité du groupe de ressources.
- Connectez-vous au portail Azure, puis sélectionnez Groupes de ressources.
- Dans la zone Filtrer par nom, entrez le nom de votre groupe de ressources.
- Dans la liste de résultats, sélectionnez le nom du groupe de ressources pour afficher une vue d’ensemble.
- Sélectionnez Supprimer le groupe de ressources.
- Vous êtes invité à confirmer la suppression du groupe de ressources. Entrez le nom de votre groupe de ressources à confirmer, puis sélectionnez Supprimer.
Après quelques instants, le groupe de ressources et toutes ses ressources sont supprimés.
Étapes suivantes
Dans ce tutoriel, vous créez une clé App Configuration qui référence une valeur stockée dans Key Vault. Pour trouver les réponses à d’autres questions, consultez la documentation de référence qui contient tous les détails sur le fonctionnement de la bibliothèque Spring Cloud Azure App Configuration. Pour savoir comment utiliser les indicateurs de fonctionnalités dans votre application Java Spring, passez au tutoriel suivant.