Bibliothèque de client Azure Key Vault Secret pour Java - version 4.7.1
Azure Key Vault est un service cloud qui fournit un stockage sécurisé pour les secrets, tels que les mots de passe et les chaînes de connexion de base de données.
La bibliothèque de client Azure Key Vault Secrets vous permet de stocker et de contrôler de manière sécurisée l’accès aux jetons, mots de passe, clés API et autres secrets. Cette bibliothèque offre des opérations pour créer, récupérer, mettre à jour, supprimer, vider, sauvegarder, restaurer et répertorier les secrets et leurs versions.
Utilisez la bibliothèque de client Azure Key Vault Secrets pour créer et gérer des secrets.
Code source | Documentation de référence de l’API | Documentation du produit | Exemples
Prise en main
Inclure le package
Inclure le fichier de nomenclature
Incluez le azure-sdk-bom
dans votre projet pour qu’il soit dépendant de la version en disponibilité générale de la bibliothèque. Dans l’extrait de code suivant, remplacez l’espace réservé {bom_version_to_target} par le numéro de version.
Pour en savoir plus sur la nomenclature, consultez le README BOM du KIT DE DÉVELOPPEMENT LOGICIEL AZURE.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
puis incluez la dépendance directe dans la section dépendances sans la balise de version, comme indiqué ci-dessous.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-secrets</artifactId>
</dependency>
</dependencies>
Inclure une dépendance directe
Si vous souhaitez dépendre d’une version particulière de la bibliothèque qui n’est pas présente dans la nomenclature, ajoutez la dépendance directe à votre projet comme suit.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-secrets</artifactId>
<version>4.7.1</version>
</dependency>
Prérequis
- Un Kit de développement Java (JDK), version 8 ou ultérieure.
- Un abonnement Azure.
- Un Key Vault Azure existant. Si vous devez créer un coffre de clés, vous pouvez le faire dans le portail Azure en suivant les étapes décrites dans ce document. Vous pouvez également utiliser Azure CLI en suivant les étapes décrites dans ce document.
Authentifier le client
Pour interagir avec le service Azure Key Vault, vous devez créer un instance de la SecretClient
classe, une URL de coffre et un objet d’informations d’identification. Les exemples présentés dans ce document utilisent un objet d’informations d’identification nommé DefaultAzureCredential
, qui convient à la plupart des scénarios, notamment aux environnements de développement et de production locaux. En outre, nous vous recommandons d’utiliser une identité managée pour l’authentification dans les environnements de production.
Vous trouverez plus d’informations sur les différentes méthodes d’authentification et leurs types d’informations d’identification correspondants dans la documentation Azure Identity.
Créer un client secret
Une fois que vous avez effectué la configuration d’authentification qui vous convient le mieux et que vous avez remplacé your-key-vault-url par l’URL de votre coffre de clés, vous pouvez créer le SecretClient
:
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl("<your-key-vault-url>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
REMARQUE : Pour utiliser un client asynchrone, utilisez
SecretAsyncClient
au lieu deSecretClient
et appelezbuildAsyncClient()
.
Concepts clés
Secret
Un secret est la ressource fondamentale dans Azure Key Vault. Pour les développeurs, les API Key Vault acceptent et retournent des valeurs de secret sous forme de chaînes. Les attributs suivants peuvent être spécifiés en plus des données du secret :
- enabled : spécifie si les données secrètes peuvent être récupérées.
- notBefore : identifie l’heure après laquelle le secret sera actif.
- expire : identifie l’heure d’expiration sur ou après laquelle les données secrètes ne doivent pas être récupérées.
- created : indique quand cette version du secret a été créée.
- updated : indique quand cette version du secret a été mise à jour.
Client secret :
Le client secret effectue les interactions avec le service Azure Key Vault pour obtenir, définir, mettre à jour, supprimer et répertorier les secrets et ses versions. Les clients asynchrones (SecretAsyncClient
) et synchrones (SecretClient
) existent dans le Kit de développement logiciel (SDK) ce qui permet de sélectionner un client en fonction du cas d’usage d’une application. Une fois que vous avez initialisé un secret, vous pouvez interagir avec les types de ressources principaux dans Key Vault.
Exemples
API synchrone
Les sections suivantes fournissent plusieurs extraits de code couvrant certaines des tâches azure Key Vault secret les plus courantes, notamment :
- Création d’une clé secrète
- Récupérer un secret
- Mettre à jour un secret existant
- Suppression d’une clé secrète
- Lister des secrets
Créer un secret
Créez un secret à stocker dans le Key Vault Azure.
setSecret
crée un secret dans le Key Vault Azure. Si un secret portant le nom donné existe déjà, une nouvelle version du secret est créée.
KeyVaultSecret secret = secretClient.setSecret("<secret-name>", "<secret-value>");
System.out.printf("Secret created with name \"%s\" and value \"%s\"%n", secret.getName(), secret.getValue());
Récupérer un secret
Récupérez un secret précédemment stocké en appelant getSecret
.
KeyVaultSecret secret = secretClient.getSecret("<secret-name>");
System.out.printf("Retrieved secret with name \"%s\" and value \"%s\"%n", secret.getName(), secret.getValue());
Mettre à jour un secret existant
Mettez à jour un secret existant en appelant updateSecretProperties
.
// Get the secret to update.
KeyVaultSecret secret = secretClient.getSecret("<secret-name>");
// Update the expiry time of the secret.
secret.getProperties().setExpiresOn(OffsetDateTime.now().plusDays(30));
SecretProperties updatedSecretProperties = secretClient.updateSecretProperties(secret.getProperties());
System.out.printf("Secret's updated expiry time: %s%n", updatedSecretProperties.getExpiresOn());
supprimer un secret
Supprimez un secret existant en appelant beginDeleteSecret
.
SyncPoller<DeletedSecret, Void> deletedSecretPoller = secretClient.beginDeleteSecret("<secret-name>");
// Deleted secret is accessible as soon as polling begins.
PollResponse<DeletedSecret> deletedSecretPollResponse = deletedSecretPoller.poll();
// Deletion date only works for a SoftDelete-enabled Key Vault.
System.out.printf("Deletion date: %s%n", deletedSecretPollResponse.getValue().getDeletedOn());
// Secret is being deleted on server.
deletedSecretPoller.waitForCompletion();
Afficher la liste des secrets
Répertoriez les secrets dans le Key Vault Azure en appelant listPropertiesOfSecrets
.
// List operations don't return the secrets with value information. So, for each returned secret we call getSecret to
// get the secret with its value information.
for (SecretProperties secretProperties : secretClient.listPropertiesOfSecrets()) {
KeyVaultSecret secretWithValue = secretClient.getSecret(secretProperties.getName(), secretProperties.getVersion());
System.out.printf("Retrieved secret with name \"%s\" and value \"%s\"%n", secretWithValue.getName(),
secretWithValue.getValue());
}
API asynchrone
Les sections suivantes fournissent plusieurs extraits de code couvrant certaines des tâches asynchrones azure Key Vault Secret Service les plus courantes, notamment :
- Créer un secret de manière asynchrone
- Récupérer un secret de manière asynchrone
- Mettre à jour un secret existant de façon asynchrone
- Supprimer un secret de manière asynchrone
- Répertorier les secrets de manière asynchrone
Remarque : Vous devez ajouter
System.in.read()
ouThread.sleep()
après les appels de fonction dans le main classe/thread pour permettre aux fonctions/opérations asynchrones de s’exécuter et de se terminer avant la fermeture de l’application/du thread main.
Créer un secret de manière asynchrone
Créez un secret à stocker dans le Key Vault Azure.
setSecret
crée un secret dans le Key Vault Azure. Si un secret portant le nom donné existe déjà, une nouvelle version du secret est créée.
secretAsyncClient.setSecret("<secret-name>", "<secret-value>")
.subscribe(secret -> System.out.printf("Created secret with name \"%s\" and value \"%s\"%n",
secret.getName(), secret.getValue()));
Récupérer un secret de manière asynchrone
Récupérez un secret précédemment stocké en appelant getSecret
.
secretAsyncClient.getSecret("<secret-name>")
.subscribe(secret -> System.out.printf("Retrieved secret with name \"%s\" and value \"%s\"%n",
secret.getName(), secret.getValue()));
Mettre à jour un secret existant de façon asynchrone
Mettez à jour un secret existant en appelant updateSecretProperties
.
secretAsyncClient.getSecret("<secret-name>")
.flatMap(secret -> {
// Update the expiry time of the secret.
secret.getProperties().setExpiresOn(OffsetDateTime.now().plusDays(50));
return secretAsyncClient.updateSecretProperties(secret.getProperties());
}).subscribe(updatedSecretProperties ->
System.out.printf("Secret's updated expiry time: %s%n", updatedSecretProperties.getExpiresOn()));
Supprimer un secret de manière asynchrone
Supprimez un secret existant en appelant beginDeleteSecret
.
secretAsyncClient.beginDeleteSecret("<secret-name>")
.subscribe(pollResponse -> {
System.out.printf("Deletion status: %s%n", pollResponse.getStatus());
System.out.printf("Deleted secret name: %s%n", pollResponse.getValue().getName());
System.out.printf("Deleted secret value: %s%n", pollResponse.getValue().getValue());
});
Répertorier les secrets de manière asynchrone
Répertoriez les secrets dans le Key Vault Azure en appelant listPropertiesOfSecrets
.
// The List secrets operation returns secrets without their value, so for each secret returned we call `getSecret`
// to get its value as well.
secretAsyncClient.listPropertiesOfSecrets()
.flatMap(secretProperties ->
secretAsyncClient.getSecret(secretProperties.getName(), secretProperties.getVersion()))
.subscribe(secretResponse ->
System.out.printf("Retrieved secret with name \"%s\" and value \"%s\"%n", secretResponse.getName(),
secretResponse.getValue()));
Dépannage
Consultez notre guide de résolution des problèmes pour plus d’informations sur la façon de diagnostiquer différents scénarios d’échec.
Général
Les clients Azure Key Vault Secret lèvent des exceptions. Par exemple, si vous essayez de récupérer un secret après sa suppression, une 404
erreur est retournée, indiquant que la ressource est introuvable. Dans l’extrait suivant, l’erreur est prise en charge correctement via l’interception de l’exception et l’affichage d’informations supplémentaires sur l’erreur en question.
try {
secretClient.getSecret("<deleted-secret-name>");
} catch (ResourceNotFoundException e) {
System.out.println(e.getMessage());
}
Client HTTP par défaut
Toutes les bibliothèques de client utilisent par défaut le client HTTP Netty. L’ajout de la dépendance ci-dessus configure automatiquement la bibliothèque de client pour utiliser le client HTTP Netty. La configuration ou la modification du client HTTP sont détaillées dans le wiki pour clients HTTP.
Bibliothèque SSL par défaut
Toutes les bibliothèques de client utilisent par défaut la bibliothèque BoringSSL Tomcat native pour permettre des performances de niveau natif pour les opérations SSL. La bibliothèque SSL ennuyeuse est un fichier JAR Uber contenant des bibliothèques natives pour Linux / macOS / Windows, et offre de meilleures performances par rapport à l’implémentation SSL par défaut dans le JDK. Pour plus d’informations, notamment sur la réduction de la taille des dépendances, consultez la section du wiki consacrée à l’optimisation des performances.
Étapes suivantes
Plusieurs exemples Key Vault sdk Java sont disponibles dans le référentiel GitHub du SDK. Ces exemples fournissent un exemple de code pour d’autres scénarios couramment rencontrés lors de l’utilisation d’Azure Key Vault.
Exemples d’étapes suivantes
Les exemples sont expliqués en détail ici.
Documentation complémentaire
Pour obtenir une documentation plus complète sur Azure Key Vault, consultez la documentation de référence sur l’API.
Contribution
Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.
Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.
Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.