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

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

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

  2. Dans le navigateur, connectez-vous avec les informations d’identification de votre compte.

Accorder l’accès à votre coffre de clés

Pour accorder à vos autorisations d’application sur votre coffre de clés via le contrôle d’accès en fonction du rôle (RBAC), attribuez un rôle en utilisant la commande Azure CLI création de l’attribution de rôle az.

az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Remplacez <app-id>, <subscription-id>, <resource-group-name> et <your-unique-keyvault-name> par vos valeurs réelles. <app-id> est l’ID d’application (client) de votre application enregistrée dans Azure AD.

Créer une application console .NET

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

Cette application utilise le nom de 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 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 :