Démarrage rapide : Bibliothèque de client de clés Azure Key Vault pour .NET

Découvrez comment démarrer avec la bibliothèque de client de clés Azure Key Vault pour .NET. Azure Key Vault est un service cloud qui fournit un magasin de clés de chiffrement sécurisé. Vous pouvez stocker des clés de chiffrement, des mots de passe, des certificats et d’autres secrets de manière sécurisée. 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 clés dans un coffre de clés Azure en utilisant la bibliothèque de client de clés .NET.

Ressources de la bibliothèque de client de clés 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 clés, 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 clés Azure Key Vault pour .NET :

dotnet add package Azure.Security.KeyVault.Keys

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 clés Azure Key Vault pour .NET vous permet de gérer des clés. La section Exemples de code montre comment créer un client et définir, récupérer et supprimer une clé.

Exemples de code

Ajouter des directives

Ajoutez les directives suivantes en haut de Program.cs :

using System;
using Azure.Identity;
using Azure.Security.KeyVault.Keys;

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.

var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = $"https://{keyVaultName}.vault.azure.net";

var client = new KeyClient(new Uri(kvUri), new DefaultAzureCredential());

Enregistrer une clé

Pour cette tâche, utilisez la méthode CreateKeyAsync. Les paramètres de la méthode acceptent un nom de clé et le type de clé.

var key = await client.CreateKeyAsync("myKey", KeyType.Rsa);

Notes

Si le nom de clé existe, ce code crée une nouvelle version de cette clé.

Récupérer une clé

Vous pouvez maintenant récupérer la clé créée précédemment à l’aide de la méthode GetKeyAsync.

var key = await client.GetKeyAsync("myKey");

Supprimer une clé

Pour finir, nous allons supprimer et purger la clé de votre coffre de clés avec les méthodes StartDeleteKeyAsync et PurgeDeletedKeyAsync.

var operation = await client.StartDeleteKeyAsync("myKey");

// You only need to wait for completion if you want to purge or recover the key.
await operation.WaitForCompletionAsync();

var key = operation.Value;
await client.PurgeDeletedKeyAsync("myKey");

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.Keys;
    
    namespace key_vault_console_app
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                const string keyName = "myKey";
                var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
                var kvUri = $"https://{keyVaultName}.vault.azure.net";
    
                var client = new KeyClient(new Uri(kvUri), new DefaultAzureCredential());
    
                Console.Write($"Creating a key in {keyVaultName} called '{keyName}' ...");
                var createdKey = await client.CreateKeyAsync(keyName, KeyType.Rsa);
                Console.WriteLine("done.");
    
                Console.WriteLine($"Retrieving your key from {keyVaultName}.");
                var key = await client.GetKeyAsync(keyName);
                Console.WriteLine($"Your key version is '{key.Value.Properties.Version}'.");
    
                Console.Write($"Deleting your key from {keyVaultName} ...");
                var deleteOperation = await client.StartDeleteKeyAsync(keyName);
                // You only need to wait for completion if you want to purge or recover the key.
                await deleteOperation.WaitForCompletionAsync();
                Console.WriteLine("done.");
    
                Console.Write($"Purging your key from {keyVaultName} ...");
                await client.PurgeDeletedKeyAsync(keyName);
                Console.WriteLine(" done.");
            }
        }
    }
    

Tester et vérifier

  1. Exécutez la commande suivante pour générer le projet :

    dotnet build
    
  2. Exécutez la commande suivante pour exécuter l’application.

    dotnet run
    
  3. Quand vous y êtes invité, entrez une valeur de secret. Par exemple, mySecretPassword.

    Une variante de la sortie suivante apparaît :

    Creating a key in mykeyvault called 'myKey' ... done.
    Retrieving your key from mykeyvault.
    Your key version is '8532359bced24e4bb2525f2d2050738a'.
    Deleting your key from jl-kv ... done
    Purging your key from <your-unique-keyvault-name> ... done.   
    

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez créé un coffre de clés, stocké une clé et récupéré cette clé.

Pour plus d’informations sur Key Vault et comment l’intégrer à vos applications, consultez les articles suivants :