Utiliser Azure Key Vault pour remettre des certificats TLS/SSL à la machine virtuelle JVM
Cet article explique comment intégrer Azure Key Vault dans la machine virtuelle JVM pour fournir des certificats TLS/SSL.
Ajouter le fournisseur JCA au fichier java.security
Pour enregistrer le fournisseur JCA, la machine virtuelle JVM doit en être informée. Pour accomplir cette tâche, procédez comme suit :
Effectuez une copie du fichier java.security
à l’intérieur de votre installation de JVM et nommez le fichier my.java.security .Dans le fichier, recherchez la ligne
security.provider.<maximum-value>
. Remplacez le symbole<maximum-value>
par la valeur maximale à cet emplacement parmi toutes les entrées. Par exemple :security.provider.13=SunPKCS11
.Incrémentez le nombre de cette entrée de 1. Par exemple,
security.provider.13
doit devenirsecurity.provider.14
.Ajoutez la ligne suivante :
security.provider.14=com.azure.security.keyvault.jca.KeyVaultJcaProvider
Remarque
Assurez-vous que chaque entrée de security.provider.<X>
a une valeur de nombre différente pour <X>
, et conservez-les triées de manière incrémentielle à partir de 1.
Comment exécuter votre application
Pour exécuter votre application, procédez comme suit et remplacez les espaces réservés <...>
par vos propres valeurs :
Ajoutez le fichier azure-security-keyvault-jca-X.Y.Z.jar au classpath. Par exemple, si vous souhaitez intégrer Tomcat 9, vous devez ajouter le chemin complet du fichier azure-security-keyvault-jca-X.Y.Z.jar au classpath Java à l’aide de tomcat9w.exe.
Ajoutez
-Djava.security.properties==my.java.security
à la ligne de commande.Ajoutez
-Dazure.keyvault.uri=<your-keyvault-uri>
à la ligne de commande pour indiquer le coffre de clés Azure à utiliser. Par exemple :-Dazure.keyvault.uri=https://some.vault.azure.net/
.Ajoutez les arguments indiqués dans la liste suivante, en fonction de votre scénario :
Si vous vous authentifiez à l’aide d’un principal de service, ajoutez les arguments suivants :
-Dazure.keyvault.tenant-id=<your-tenant-id>
-Dazure.keyvault.client-id=<your-client-id>
-Dazure.keyvault.client-secret=<your-client-secret>
Si vous vous authentifiez à l’aide d’une identité managée affectée par le système, aucun autre argument n’est nécessaire.
Si vous vous authentifiez à l’aide d’une identité managée affectée par l’utilisateur, ajoutez l’argument suivant :
-Dazure.keyvault.managed-identity=<object-id-of-your-user-managed-identity>
Pour plus d’informations sur ces scénarios d’authentification, veuillez consulter la section Objets d’application et de principal de service dans Microsoft Entra ID et Fonctionnement des identités managées pour les ressources Azure avec les machines virtuelles Azure.
Utiliser un principal de service
Pour créer un ID client Azure et une clé secrète client Azure, utilisez la commande suivante, en remplaçant les espaces réservés <...>
par vos propres valeurs. Veillez à stocker les valeurs retournées, telles que appId
, password
et tenant
.
export CLIENT_NAME=<your-client-name>
az ad sp create-for-rbac --skip-assignment --name ${CLIENT_NAME}
export CLIENT_ID=$(az ad sp list --display-name ${CLIENT_NAME} | jq -r '.[0].appId')
az ad app credential reset --id ${CLIENT_ID}
Stockez les valeurs retournées pour pouvoir les utiliser ultérieurement.
Vérifiez que le client spécifié par CLIENT_ID
peut accéder au coffre de clés cible. Pour accorder l’accès, utilisez la commande suivante, en remplaçant le <your-key-vault-name>
:
az keyvault set-policy \
--name <your-key-vault-name> \
--spn ${CLIENT_ID} \
--secret-permissions get list \
--certificate-permissions get list \
--key-permissions get list
Utiliser une identité managée
Pour activer une identité managée affectée par le système ou créer une identité managée affectée par l’utilisateur, suivez les instructions de Configurer des identités managées pour les ressources Azure sur une machine virtuelle Azure à l’aide d’Azure CLI
Après avoir obtenu l’ID d’objet de l’identité managée, utilisez la commande suivante pour créer la stratégie d’accès de votre coffre de clés pour votre identité managée :
az keyvault set-policy \
--name <your-key-vault-name> \
--object-id <object-id-of-your-managed-identity> \
--secret-permissions get list \
--certificate-permissions get list \
--key-permissions get list
Remarque
L’ID d’objet de l’identité managée est également appelé ID principal lors de l’utilisation d’une identité managée affectée par l’utilisateur.
Exemples TLS/SSL côté client/serveur
Pour obtenir des exemples de TLS/SSL côté client/serveur, consultez la section Exemples de la bibliothèque de client JCA Azure Key Vault pour Java.