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

Bien démarrer avec la bibliothèque de client de secrets Azure Key Vault pour .NET. Azure Key Vault est un service cloud qui fournit un magasin de secrets 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 secrets dans un coffre de clés Azure à l’aide de 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 secrets, consultez :

Prérequis

Ce guide de démarrage rapide utilise dotnet et Azure CLI ou Azure PowerShell.

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 az 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 à votre application des autorisations sur votre coffre de clés via le contrôle d'accès basé sur le rôle (RBAC), attribuez un rôle à l'aide de la commande Azure CLI az attribution de rôle créer.

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

Depuis le shell de commandes, installez la bibliothèque de client de secrets Azure Key Vault pour .NET :

dotnet add package Azure.Security.KeyVault.Secrets

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

Exemples de code

Ajouter des directives

Ajoutez les directives suivantes en haut de Program.cs :

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

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 SecretClient(new Uri(kvUri), new DefaultAzureCredential());

Enregistrer un secret

Maintenant que l’application console est authentifiée, ajoutez un secret au coffre de clés. Pour cette tâche, utilisez la méthode SetSecretAsync.

Le premier paramètre de la méthode accepte un nom pour le secret. Dans cet exemple, la variable secretName stocke la chaîne « mySecret ».

Le deuxième paramètre de la méthode accepte une valeur pour le secret. Dans cet exemple, le secret est entré par l’utilisateur à l’aide de la ligne de commande et stocké dans la variable secretValue.

await client.SetSecretAsync(secretName, secretValue);

Remarque

Si le nom du secret existe, le code crée une nouvelle version de ce secret.

Récupérer un secret

Vous pouvez désormais récupérer la valeur définie avec la méthode GetSecretAsync.

var secret = await client.GetSecretAsync(secretName);

Votre secret est désormais enregistré en tant que secret.Value.

supprimer un secret

Pour terminer, nous allons supprimer le secret de votre coffre de clés avec les méthodes StartDeleteSecretAsync et PurgeDeletedSecretAsync.

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

await client.PurgeDeletedSecretAsync(secretName);

Exemple de code

Modifiez l’application console .NET pour interagir avec le coffre de clés en effectuant les étapes suivantes :

  1. Remplacez le code dans Program.cs par le code suivant :

    using System;
    using System.Threading.Tasks;
    using Azure.Identity;
    using Azure.Security.KeyVault.Secrets;
    
    namespace key_vault_console_app
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                const string secretName = "mySecret";
                var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
                var kvUri = $"https://{keyVaultName}.vault.azure.net";
    
                var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
    
                Console.Write("Input the value of your secret > ");
                var secretValue = Console.ReadLine();
    
                Console.Write($"Creating a secret in {keyVaultName} called '{secretName}' with the value '{secretValue}' ...");
                await client.SetSecretAsync(secretName, secretValue);
                Console.WriteLine(" done.");
    
                Console.WriteLine("Forgetting your secret.");
                secretValue = string.Empty;
                Console.WriteLine($"Your secret is '{secretValue}'.");
    
                Console.WriteLine($"Retrieving your secret from {keyVaultName}.");
                var secret = await client.GetSecretAsync(secretName);
                Console.WriteLine($"Your secret is '{secret.Value.Value}'.");
    
                Console.Write($"Deleting your secret from {keyVaultName} ...");
                DeleteSecretOperation operation = await client.StartDeleteSecretAsync(secretName);
                // You only need to wait for completion if you want to purge or recover the secret.
                await operation.WaitForCompletionAsync();
                Console.WriteLine(" done.");
    
                Console.Write($"Purging your secret from {keyVaultName} ...");
                await client.PurgeDeletedSecretAsync(secretName);
                Console.WriteLine(" done.");
            }
        }
    }
    

Tester et vérifier

  1. Exécutez la commande suivante pour exécuter l’application.

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

Une variante de la sortie suivante apparaît :

Input the value of your secret > mySecretPassword
Creating a secret in <your-unique-keyvault-name> called 'mySecret' with the value 'mySecretPassword' ... done.
Forgetting your secret.
Your secret is ''.
Retrieving your secret from <your-unique-keyvault-name>.
Your secret is 'mySecretPassword'.
Deleting your secret from <your-unique-keyvault-name> ... done.    
Purging your secret from <your-unique-keyvault-name> ... done.

Étapes suivantes

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