Démarrage rapide : Bibliothèque de client de certificats Azure Key Vault pour .NET
Découvrez comment démarrer avec la bibliothèque de client de certificats Azure Key Vault pour .NET. Azure Key Vault est un service cloud qui fournit un magasin de certificats sécurisé. Vous pouvez stocker des clés, des mots de passe, des certificats et d’autres secrets en toute sécurité. Vous pouvez créer et gérer des coffres de clés Azure grâce au portail Azure. Dans ce guide de démarrage rapide, vous allez découvrir comment créer, récupérer et supprimer des certificats dans un coffre de clés Azure en utilisant la bibliothèque de client .NET.
Ressources de la bibliothèque de client Key Vault :
Documentation de référence sur l’API | Code source de la bibliothèque | Package (NuGet)
Pour plus d’informations sur Key Vault et les certificats, consultez :
Prérequis
- Un abonnement Azure : créez-en un gratuitement
- SDK .NET 6 ou ultérieur
- Azure CLI
- Un coffre de clés. Vous pouvez en créer un en utilisant le portail Azure, Azure CLI ou Azure PowerShell
Ce guide de démarrage rapide utilise dotnet
et Azure CLI.
Programme d’installation
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.
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 Certificate 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).
Créer une application console .NET
Dans un shell de commandes, exécutez la commande suivante pour créer un projet nommé
key-vault-console-app
:dotnet new console --name key-vault-console-app
Accédez au répertoire key-vault-console-app nouvellement créé, puis exécutez la commande suivante pour générer le projet :
dotnet build
La sortie de génération ne doit contenir aucun avertissement ni erreur.
Build succeeded. 0 Warning(s) 0 Error(s)
Installer les packages
À partir de l’interpréteur de commandes, installez la bibliothèque de client de certificats Azure Key Vault pour .NET :
dotnet add package Azure.Security.KeyVault.Certificates
Pour ce guide de démarrage rapide, vous devez également installer la bibliothèque de client Azure Identity :
dotnet add package Azure.Identity
Définir des variables d’environnement
L’application obtient le nom du coffre de clés d’une 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 certificats Azure Key Vault pour .NET vous permet de gérer les certificats. La section Exemple de code montre comment créer un client et comment définir, récupérer et supprimer un certificat.
Exemples de code
Ajouter des directives
Ajoutez les directives suivantes en haut de Program.cs :
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Certificates;
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 fournie par la bibliothèque de client Azure Identity 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 = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new CertificateClient(new Uri(kvUri), new DefaultAzureCredential());
Enregistrer un certificat
Dans cet exemple, pour faire simple, vous pouvez utiliser un certificat auto-signé avec la stratégie d’émission par défaut. Pour cette tâche, utilisez la méthode StartCreateCertificateAsync. Les paramètres de la méthode acceptent un nom de certificat et la stratégie de certificat.
var operation = await client.StartCreateCertificateAsync("myCertificate", CertificatePolicy.Default);
var certificate = await operation.WaitForCompletionAsync();
Notes
Si le nom du certificat existe, le code ci-dessus crée une nouvelle version de ce certificat.
Récupérer un certificat
Vous pouvez maintenant récupérer le certificat créé précédemment à l’aide de la méthode GetCertificateAsync.
var certificate = await client.GetCertificateAsync("myCertificate");
Supprimer un certificat
Pour finir, nous allons supprimer et purger le certificat de votre coffre de clés avec les méthodes StartDeleteCertificateAsync et PurgeDeletedCertificateAsync.
var operation = await client.StartDeleteCertificateAsync("myCertificate");
// You only need to wait for completion if you want to purge or recover the certificate.
await operation.WaitForCompletionAsync();
var certificate = operation.Value;
await client.PurgeDeletedCertificateAsync("myCertificate");
Exemple de code
Modifiez l’application console .NET pour interagir avec le coffre de clés en effectuant les étapes suivantes :
Remplacez le code dans Program.cs par le code suivant :
using System; using System.Threading.Tasks; using Azure.Identity; using Azure.Security.KeyVault.Certificates; namespace key_vault_console_app { class Program { static async Task Main(string[] args) { const string certificateName = "myCertificate"; var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME"); var kvUri = $"https://{keyVaultName}.vault.azure.net"; var client = new CertificateClient(new Uri(kvUri), new DefaultAzureCredential()); Console.Write($"Creating a certificate in {keyVaultName} called '{certificateName}' ..."); CertificateOperation operation = await client.StartCreateCertificateAsync(certificateName, CertificatePolicy.Default); await operation.WaitForCompletionAsync(); Console.WriteLine(" done."); Console.WriteLine($"Retrieving your certificate from {keyVaultName}."); var certificate = await client.GetCertificateAsync(certificateName); Console.WriteLine($"Your certificate version is '{certificate.Value.Properties.Version}'."); Console.Write($"Deleting your certificate from {keyVaultName} ..."); DeleteCertificateOperation deleteOperation = await client.StartDeleteCertificateAsync(certificateName); // You only need to wait for completion if you want to purge or recover the certificate. await deleteOperation.WaitForCompletionAsync(); Console.WriteLine(" done."); Console.Write($"Purging your certificate from {keyVaultName} ..."); await client.PurgeDeletedCertificateAsync(certificateName); Console.WriteLine(" done."); } } }
Tester et vérifier
Exécutez la commande suivante pour générer le projet :
dotnet build
Une variante de la sortie suivante apparaît :
Creating a certificate in mykeyvault called 'myCertificate' ... done.
Retrieving your certificate from mykeyvault.
Your certificate version is '8532359bced24e4bb2525f2d2050738a'.
Deleting your certificate from mykeyvault ... done
Purging your certificate from mykeyvault ... done
Étapes suivantes
Dans ce guide de démarrage rapide, vous avez créé un coffre de clés, stocké un certificat et récupéré ce certificat.
Pour plus d’informations sur Key Vault et comment l’intégrer à vos applications, consultez les articles suivants :
- Lire la vue d’ensemble Azure Key Vault
- Lire la vue d’ensemble des certificats
- Consultez un Tutoriel sur l’accès à Key Vault depuis une application App Service
- Consultez un Tutoriel sur l’accès à Key Vault depuis une machine virtuelle
- Consulter le Guide du développeur Azure Key Vault
- Passer en revue la Vue d’ensemble de la sécurité de Key Vault