Tutoriel : Utiliser des références Key Vault dans une application ASP.NET Core

Dans ce tutoriel, vous apprenez à utiliser le service Azure App Configuration avec Azure Key Vault. App Configuration et Key Vault sont des services complémentaires utilisés côte à côte dans la plupart des déploiements d’applications.

App Configuration vous aide à utiliser ces services ensemble en créant des clés qui référencent des valeurs stockées dans Key Vault. Lorsque le service App Configuration crée de telles clés, il stocke les URI des valeurs Key Vault plutôt que les valeurs elles-mêmes.

Votre application utilise le fournisseur client de App Configuration pour récupérer les références Key Vault, tout comme pour toutes les autres clés stockées dans App Configuration. Dans ce cas, les valeurs stockées dans App Configuration sont des URI qui référencent les valeurs dans le coffre de clés. Elles ne sont pas des valeurs de coffre de clés ou des informations d’identification. Étant donné que le fournisseur client reconnaît les clés comme des références Key Vault, il utilise Key Vault pour récupérer leurs valeurs.

Votre application est chargée de s’authentifier correctement auprès d’App Configuration et auprès de Key Vault. Les deux services ne communiquent pas directement.

Ce tutoriel vous montre comment implémenter des références Key Vault dans votre code. Il s’appuie sur l’application web introduite dans les guides de démarrage rapide. Avant de continuer, terminez d’abord l’étape Créer une application ASP.NET Core avec App Configuration.

Vous pouvez utiliser l’éditeur de code de votre choix pour exécuter les étapes de ce tutoriel. Par exemple, Visual Studio Code est un éditeur de code multiplateforme qui est disponible pour les systèmes d’exploitation Windows, macOS et Linux.

Dans ce tutoriel, vous allez apprendre à :

  • Créer une clé App Configuration qui référence une valeur stockée dans Key Vault.
  • Accéder à la valeur de cette clé à partir d’une application web ASP.NET Core.

Prérequis

Avant de commencer ce didacticiel, installez le kit de développement logiciel (SDK) .NET 6.0 ou version ultérieure.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Création d'un coffre

  1. Sélectionnez l’option Créer une ressource dans le coin supérieur gauche du Portail Azure :

    La capture d’écran montre l’option Créer une ressource dans le portail Azure.

  2. Dans la zone de recherche, tapez Coffre de clés et sélectionnez Coffre de clés dans la liste déroulante.

  3. Dans la liste des résultats, sélectionnez Coffres de clés sur la gauche.

  4. Dans Coffres de clés, sélectionnez Ajouter.

  5. Sur la droite, dans Créer un coffre de clés, renseignez les informations suivantes :

    • Sélectionnez Abonnement pour choisir un abonnement.
    • Dans Groupe de ressources, saisissez le nom d’un groupe de ressources existant ou sélectionnez Créer nouveau et entrez un nom de groupe de ressources.
    • Dans Nom du coffre de clés, un nom unique est requis.
    • Dans la liste déroulante Région, choisissez un emplacement.
  6. Conservez les valeurs par défaut des autres options Création d’un coffre de clés.

  7. Cliquez sur Vérifier + créer.

  8. Le système valide et affiche les données que vous avez entrées. Cliquez sur Créer.

À ce stade, votre compte Azure est le seul autorisé à accéder à ce nouveau coffre.

Ajouter un secret au coffre de clés

Pour ajouter un secret au coffre, vous n’avez qu’à effectuer deux autres étapes. Dans ce cas, ajoutez un message que vous pouvez utiliser pour tester la récupération de Key Vault. Le message est appelé Message et vous stockez la valeur « Hello from Key Vault » dedans.

  1. Depuis les pages des propriétés Key Vault, sélectionnez Secrets.
  2. Sélectionnez Générer/Importer.
  3. Dans le volet Créer un secret, saisissez les valeurs suivantes :
    • Options de chargement : Entrez Manuel.
    • Name : Entrez Message.
    • Valeur : Entrez Hello from Key Vault.
  4. Conservez les valeurs par défaut des autres propriétés Créer un secret.
  5. Sélectionnez Create (Créer).

Ajouter une référence Key Vault à App Configuration

  1. Connectez-vous au portail Azure. Sélectionnez Toutes les ressources, puis sélectionnez l’instance du magasin App Configuration que vous avez créée dans le guide de démarrage rapide.

  2. Sélectionnez Explorateur de configuration.

  3. Sélectionnez + Créer>Référence Key Vault, puis choisissez les valeurs suivantes :

    • Clé : Sélectionnez TestApp:Settings:KeyVaultMessage.
    • Étiquette : Laissez cette valeur vide.
    • Abonnement, Groupe de ressources et Key Vault : Entrez les valeurs correspondant au coffre de clés que vous avez créé à la section précédente.
    • Secret : Sélectionnez le secret nommé Message que vous avez créé dans la section précédente.

Capture d’écran du formulaire Créer un nouveau Key Vault de référence

Mettre à jour votre code pour utiliser une référence Key Vault

  1. Ajoutez une référence aux packages NuGet requis en exécutant la commande suivante :

    dotnet add package Azure.Identity
    
  2. Ouvrez Program.cs et ajoutez des références aux packages requis suivants :

    using Azure.Identity;
    
  3. Utilisez App Configuration en appelant la méthode AddAzureAppConfiguration. Incluez l’option ConfigureKeyVault et transmettez les informations d’identification correctes à votre coffre de clés à l’aide de la méthode SetCredential.

    var builder = WebApplication.CreateBuilder(args);
    
    // Retrieve the connection string
    string connectionString = builder.Configuration.GetConnectionString("AppConfig");
    
    // Load configuration from Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        options.Connect(connectionString);
    
        options.ConfigureKeyVault(keyVaultOptions =>
        {
            keyVaultOptions.SetCredential(new DefaultAzureCredential());
        });
    });
    

    Conseil

    Si vous avez plusieurs coffres de clés, les mêmes informations d’identification seront utilisées pour tous. Si vos coffres de clés nécessitent des informations d’identification différentes, vous pouvez les définir à l’aide de la méthode Register ou SetSecretResolver de la classe AzureAppConfigurationKeyVaultOptions.

  4. Quand vous avez initialisé la connexion à App Configuration, vous avez configuré la connexion à Key Vault en appelant la méthode ConfigureKeyVault. Après l’initialisation, vous pouvez accéder aux valeurs des références Key Vault de la même façon que vous accédez aux valeurs des clés App Configuration normales.

    Pour voir ce processus en action, ouvrez Index.cshtml dans Affichages>Dossier de base. Remplacez son contenu par le code ci-dessous :

    @page
    @using Microsoft.Extensions.Configuration
    @inject IConfiguration Configuration
    
    <style>
        body {
            background-color: @Configuration["TestApp:Settings:BackgroundColor"]
        }
        h1 {
            color: @Configuration["TestApp:Settings:FontColor"];
            font-size: @Configuration["TestApp:Settings:FontSize"]px;
        }
    </style>
    
    <h1>@Configuration["TestApp:Settings:Message"]
        and @Configuration["TestApp:Settings:KeyVaultMessage"]</h1>
    

    Vous accédez à la valeur de la référence Key Vault TestApp:Settings:KeyVaultMessage de la même façon que vous accédez à la valeur de configuration TestApp:Settings:Message.

Autoriser votre application à accéder à Key Vault

La configuration de Azure App n’accède pas à votre coffre de clés. Votre application lira directement à partir de Key Vault. vous devez donc accorder à votre application un accès aux secrets de votre coffre de clés. De cette façon, le secret reste toujours avec votre application. L’accès peut être accordé à l’aide d’une stratégie d’accès Key Vault ou d’un contrôle d’accès en fonction du rôle Azure.

Vous utilisez DefaultAzureCredential dans votre code ci-dessus. Il s’agit d’une information d’identification de jeton agrégé qui tente automatiquement un certain nombre de types d’informations d’identification, comme EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredential et VisualStudioCredential. Pour plus d’informations, consultez classe DefaultAzureCredential. Vous pouvez remplacer DefaultAzureCredential explicitement par tout type d’informations d’identification. Toutefois, l’utilisation de DefaultAzureCredential vous permet d’avoir le même code qui s’exécute dans les environnements locaux et Azure. Par exemple, vous accordez votre propre accès aux informations d’identification à votre coffre de clés. DefaultAzureCredentialrevient automatiquement à SharedTokenCacheCredential ou VisualStudioCredential lorsque vous utilisez Visual Studio pour le développement local.

Vous pouvez également définir les variables d’environnement AZURE_TENANT_ID, AZURE_CLIENT_ID et AZURE_CLIENT_SECRET, et DefaultAzureCredential utilisera la clé secrète client que vous avez via l'EnvironmentCredential pour vous authentifier auprès de votre coffre de clés. Une fois votre application déployée sur un service Azure avec une identité gérée activée, par exemple Azure App Service, Azure Kubernetes service ou Azure Container instance, vous accordez à l’identité gérée de l’autorisation de service Azure l’autorisation d’accéder à votre coffre de clés. DefaultAzureCredential utilise automatiquement ManagedIdentityCredential lorsque votre application s’exécute dans Azure. Vous pouvez utiliser la même identité gérée pour vous authentifier avec la configuration de l’application et Key Vault. Pour plus d’informations, consultez comment utiliser des identités gérées pour accéder à la configuration des applications.

Générer et exécuter l’application localement

  1. Pour générer l’application à l’aide de l’interface CLI .NET, exécutez la commande suivante dans l’interpréteur de commandes :

    dotnet build
    
  2. Une fois la génération terminée, utilisez la commande suivante pour exécuter l’application web localement :

    dotnet run
    
  3. Ouvrez une fenêtre de navigateur, puis accédez à http://localhost:5000, qui est l’URL par défaut de l’application web hébergée localement.

    Démarrage rapide du lancement d’application locale

Nettoyer les ressources

Si vous ne souhaitez plus utiliser les ressources créées dans cet article, supprimez le groupe de ressources que vous avez créé ici afin d’éviter des frais.

Important

La suppression d’un groupe de ressources est irréversible. Le groupe de ressources et toutes les ressources qu’il contient sont supprimés définitivement. Veillez à ne pas supprimer accidentellement les mauvaises ressources ou le mauvais groupe de ressources. Si vous avez créé les ressources pour cet article dans un groupe de ressources contenant d’autres ressources que vous souhaitez conserver, supprimez chaque ressource individuellement à partir de son volet, au lieu de supprimer l’intégralité du groupe de ressources.

  1. Connectez-vous au portail Azure, puis sélectionnez Groupes de ressources.
  2. Dans la zone Filtrer par nom, entrez le nom de votre groupe de ressources.
  3. Dans la liste de résultats, sélectionnez le nom du groupe de ressources pour afficher une vue d’ensemble.
  4. Sélectionnez Supprimer le groupe de ressources.
  5. Vous êtes invité à confirmer la suppression du groupe de ressources. Entrez le nom de votre groupe de ressources à confirmer, puis sélectionnez Supprimer.

Après quelques instants, le groupe de ressources et toutes ses ressources sont supprimés.

Étapes suivantes

Dans ce tutoriel, vous créez une clé dans App Configuration qui référence un secret stocké dans Key Vault. Pour savoir comment recharger automatiquement les secrets et les certificats à partir de Key Vault, passez au didacticiel suivant :

Pour savoir comment utiliser Managed Identity pour simplifier l’accès à la configuration et Key Vault de l’application, reportez-vous au didacticiel suivant :