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 inscrire le fournisseur JCA, la machine virtuelle JVM doit en savoir plus. Pour accomplir cette tâche, procédez comme suit :

  1. Effectuez une copie du fichier java.security à l’intérieur de votre installation de JVM et nommez le fichier my.java.security.

  2. Dans le fichier, recherchez la ligne security.provider.<maximum-value>. Remplacez l’espace <maximum-value> réservé par la valeur maximale à cette position parmi toutes les entrées. Par exemple : security.provider.13=SunPKCS11.

  3. Incrémentez le nombre de cette entrée de 1. Par exemple, security.provider.13 doit devenir security.provider.14.

  4. Ajoutez la ligne suivante :

    security.provider.14=com.azure.security.keyvault.jca.KeyVaultJcaProvider
    

Remarque

Assurez-vous que chaque security.provider.<X> entrée a une valeur numérique 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 :

  1. 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.

  2. Ajouter -Djava.security.properties==my.java.security à la ligne de commande.

  3. Ajoutez -Dazure.keyvault.uri=<your-keyvault-uri> à la ligne de commande pour indiquer azure Key Vault à utiliser. Par exemple : -Dazure.keyvault.uri=https://some.vault.azure.net/.

  4. 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, consultez Les objets d’application et de principal de service dans Microsoft Entra ID et Comment les identités managées pour les ressources Azure fonctionnent avec des 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, tenantpassword.

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é peut CLIENT_ID accéder au coffre de clés cible. Pour accorder l’accès, utilisez la commande suivante, en remplaçant l’espace <your-key-vault-name> réservé :

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 la page 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 cliente JCA Azure Key Vault pour Java.

Étapes suivantes