Démarrage rapide : Bibliothèque de client de clés Azure Key Vault pour Java
Découvrez comment démarrer avec la bibliothèque de client de clés Azure Key Vault pour Java. Suivez les étapes suivantes pour installer le package et essayer un exemple de code pour les tâches de base.
Ressources supplémentaires :
Prérequis
- Un abonnement Azure - En créer un gratuitement
- Kit de développement Java (JDK), version 8 ou ultérieure
- Apache Maven
- Azure CLI
Ce guide de démarrage rapide suppose que vous exécutez l’interface Azure CLI et Apache Maven dans une fenêtre de terminal Linux.
Configuration
Ce guide de démarrage rapide utilise la bibliothèque Azure Identity avec Azure CLI pour authentifier l’utilisateur auprès des services Azure. Les développeurs peuvent également utiliser Visual Studio ou Visual Studio Code pour authentifier leurs appels. Pour plus d’informations, consultez Authentifier le client avec la bibliothèque de client Azure Identity.
Connexion à Azure
Exécutez la commande
login
.az login
Si l’interface CLI peut ouvrir votre navigateur par défaut, elle le fait et charge une page de connexion Azure par la même occasion.
Sinon, ouvrez une page de navigateur à l’adresse https://aka.ms/devicelogin et entrez le code d’autorisation affiché dans votre terminal.
Dans le navigateur, connectez-vous avec les informations d’identification de votre compte.
Créer une application console Java
Dans une fenêtre de console, utilisez la commande mvn
pour créer une application console Java nommée akv-keys-java
.
mvn archetype:generate -DgroupId=com.keyvault.keys.quickstart
-DartifactId=akv-keys-java
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
-DinteractiveMode=false
Le résultat de la génération du projet doit ressembler à ceci :
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.keyvault.keys.quickstart
[INFO] Parameter: artifactId, Value: akv-keys-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.keyvault.keys.quickstart
[INFO] Parameter: packageInPathFormat, Value: com/keyvault/quickstart
[INFO] Parameter: package, Value: com.keyvault.keys.quickstart
[INFO] Parameter: groupId, Value: com.keyvault.keys.quickstart
[INFO] Parameter: artifactId, Value: akv-keys-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /home/user/quickstarts/akv-keys-java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 38.124 s
[INFO] Finished at: 2019-11-15T13:19:06-08:00
[INFO] ------------------------------------------------------------------------
Changez de répertoire pour le dossier akv-keys-java/
créé.
cd akv-keys-java
Installer le package
Ouvrez le fichier pom.xml dans votre éditeur de texte. Ajoutez les éléments de dépendance suivants au groupe de dépendances.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-keys</artifactId>
<version>4.2.3</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.2.0</version>
</dependency>
Créer un groupe de ressources et un coffre de clés
Ce démarrage rapide utilise un Azure Key Vault créé au préalable. Vous pouvez créer un coffre de clés en suivant les étapes décrites dans le guide de démarrage rapide d’Azure CLI, le guide de démarrage rapide d’Azure PowerShell ou le guide de démarrage rapide du portail Azure.
Vous pouvez également exécuter ces commandes Azure CLI ou Azure PowerShell.
Important
Chaque coffre de clés doit avoir un nom unique. Remplacez <your-unique-keyvault-name> par le nom de votre coffre de clés dans les exemples suivants.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Accorder l’accès à votre coffre de clés
Pour obtenir des autorisations sur votre coffre de clés par le Contrôle d’accès en fonction du rôle (RBAC), attribuez un rôle à votre « nom d’utilisateur principal » (UPN) à l’aide de la commande Azure CLI az role assignment create.
az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Remplacez <upn>, <subscription-id>, <resource-group-name> et <your-unique-keyvault-name> par vos valeurs réelles. Votre nom d’utilisateur principal (UPN) se présente généralement sous la forme d’une adresse électronique (par exemple username@domain.com).
Définir des variables d’environnement
Cette application utilise le nom de votre coffre de clés en tant que variable d’environnement appelée KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS ou Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Modèle objet
La bibliothèque de client de clés Azure Key Vault pour Java vous permet de gérer des clés. La section Exemples de code montre comment créer un client et créer, récupérer et supprimer une clé.
L’application console entière est fournie dans l’exemple de code.
Exemples de code
Ajouter des directives
Ajoutez les directives suivantes en haut de votre code :
import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.keys.KeyClient;
import com.azure.security.keyvault.keys.KeyClientBuilder;
import com.azure.security.keyvault.keys.models.DeletedKey;
import com.azure.security.keyvault.keys.models.KeyType;
import com.azure.security.keyvault.keys.models.KeyVaultKey;
Authentifier et créer un client
Les requêtes d’application vers les Services Azure doivent être autorisées. L’utilisation de la classe DefaultAzureCredential est l’approche recommandée pour implémenter des connexions sans mot de passe aux services Azure dans votre code. DefaultAzureCredential
prend en charge plusieurs méthodes d’authentification et détermine quelle méthode doit être utilisée au moment de l’exécution. Cette approche permet à votre application d’utiliser différentes méthodes d’authentification dans différents environnements (local ou production) sans implémenter de code spécifique à l’environnement.
Dans ce guide de démarrage rapide, DefaultAzureCredential
s’authentifie auprès du coffre de clés à l’aide des informations d’identification de l’utilisateur de développement local connecté à Azure CLI. Quand l’application est déployée sur Azure, le même code DefaultAzureCredential
peut découvrir et utiliser automatiquement une identité managée affectée à un service d’application, une machine virtuelle ou d’autres services. Pour plus d’informations, consultez Vue d’ensemble des identités managées.
Dans cet exemple, le nom de votre coffre de clés est étendu à l’URI du coffre de clés, au format https://<your-key-vault-name>.vault.azure.net
. Pour plus d’informations sur l’authentification auprès du coffre de clés, consultez le Guide du développeur.
String keyVaultName = System.getenv("KEY_VAULT_NAME");
String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";
KeyClient keyClient = new KeyClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Créer une clé
Votre application étant authentifiée, vous pouvez créer une clé dans votre coffre de clés en utilisant la méthode keyClient.createKey
. Un nom pour la clé et un type de clé sont nécessaires. Nous avons attribué la valeur « myKey » à la variable keyName
et utilisons un KeyType
RSA dans cet exemple.
keyClient.createKey(keyName, KeyType.RSA);
Vous pouvez vérifier que la clé a été définie à l’aide de la commande az keyvault key show :
az keyvault key show --vault-name <your-unique-key-vault-name> --name myKey
Récupérer une clé
Vous pouvez maintenant récupérer la clé créée précédemment à l’aide de la méthode keyClient.getKey
.
KeyVaultKey retrievedKey = keyClient.getKey(keyName);
Vous pouvez maintenant accéder aux détails de la clé récupérée avec les opérations comme retrievedKey.getProperties
, retrievedKey.getKeyOperations
, etc.
Supprimer une clé
Enfin, nous allons supprimer la clé de votre coffre de clés avec la méthode keyClient.beginDeleteKey
.
La suppression de clé est une opération longue, dont vous pouvez interroger la progression ou attendre la fin.
SyncPoller<DeletedKey, Void> deletionPoller = keyClient.beginDeleteKey(keyName);
deletionPoller.waitForCompletion();
Vous pouvez vérifier que la clé a été supprimée avec la commande az keyvault key show :
az keyvault key show --vault-name <your-unique-key-vault-name> --name myKey
Nettoyer les ressources
Une fois que vous n’en avez plus besoin, vous pouvez supprimer votre coffre de clés et le groupe de ressources correspondant en utilisant Azure CLI ou Azure PowerShell.
az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"
Exemple de code
package com.keyvault.keys.quickstart;
import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.keys.KeyClient;
import com.azure.security.keyvault.keys.KeyClientBuilder;
import com.azure.security.keyvault.keys.models.DeletedKey;
import com.azure.security.keyvault.keys.models.KeyType;
import com.azure.security.keyvault.keys.models.KeyVaultKey;
public class App {
public static void main(String[] args) throws InterruptedException, IllegalArgumentException {
String keyVaultName = System.getenv("KEY_VAULT_NAME");
String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";
System.out.printf("key vault name = %s and key vault URI = %s \n", keyVaultName, keyVaultUri);
KeyClient keyClient = new KeyClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
String keyName = "myKey";
System.out.print("Creating a key in " + keyVaultName + " called '" + keyName + " ... ");
keyClient.createKey(keyName, KeyType.RSA);
System.out.print("done.");
System.out.println("Retrieving key from " + keyVaultName + ".");
KeyVaultKey retrievedKey = keyClient.getKey(keyName);
System.out.println("Your key's ID is '" + retrievedKey.getId() + "'.");
System.out.println("Deleting your key from " + keyVaultName + " ... ");
SyncPoller<DeletedKey, Void> deletionPoller = keyClient.beginDeleteKey(keyName);
deletionPoller.waitForCompletion();
System.out.print("done.");
}
}
Étapes suivantes
Dans ce guide de démarrage rapide, vous avez créé un coffre de clés et créé, récupéré, puis supprimé une clé. Pour en savoir plus sur la solution Key Vault et sur la manière de l’intégrer à vos applications, consultez ces articles.
- Lire la vue d’ensemble Azure Key Vault
- Consultez la Vue d’ensemble de la sécurité de Key Vault
- Consulter le Guide du développeur Azure Key Vault
- Découvrir comment Sécuriser l’accès à un coffre de clés