Partager via


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

Dans ce tutoriel, vous utilisez 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.

Votre application peut utiliser le fournisseur client App Configuration pour récupérer les références Key Vault, tout comme pour les autres clés stockées dans App Configuration. Lorsque vous ajoutez une référence Key Vault à App Configuration, App Configuration crée une clé qui référence la valeur stockée dans Key Vault. La valeur que App Configuration stocke n’est pas une valeur ou des informations d’identification Key Vault. Au lieu de cela, il s’agit d’un URI qui référence la valeur dans Key Vault. Étant donné que le fournisseur client reconnaît la clé comme référence Key Vault, il utilise Key Vault pour récupérer sa valeur.

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 présentée dans le démarrage rapide d’ASP.NET Core répertorié dans les prérequis ci-dessous. Avant de continuer, suivez ce guide de démarrage rapide.

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 :

  • 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

Terminez le guide de démarrage rapide Créer une application ASP.NET Core avec App Configuration .

Créer un coffre de clés

  1. Accédez au portail Azure, puis sélectionnez Créer une ressource.

    Capture d’écran du portail Azure. Sous services Azure, créer une ressource est mise en surbrillance et les icônes de plusieurs types de ressources sont illustrés.

  2. Dans la zone de recherche, entrez Key Vault. Dans la liste des résultats, sélectionnez Key Vault.

  3. Dans la page Key Vault , sélectionnez Créer.

  4. Dans la page Créer un coffre de clés , entrez les informations suivantes :

    • Pour l’abonnement : sélectionnez un abonnement.
    • Pour le groupe de ressources : entrez le nom d’un groupe de ressources existant ou sélectionnez Créer et entrez un nom de groupe de ressources.
    • Pour le nom du coffre de clés : entrez un nom unique.
    • Pour la région : sélectionnez un emplacement.
  5. Pour les autres options, utilisez les valeurs par défaut.

  6. Sélectionnez Vérifier + créer.

  7. Une fois le système validé et affiché vos entrées, sélectionnez 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 tester la récupération de Key Vault dans votre application, commencez par ajouter un secret dans le coffre-fort en suivant les étapes ci-dessous. Le secret que vous ajoutez est appelé Message et sa valeur est « Hello from Key Vault ».

  1. Dans le menu de la ressource Key Vault, sélectionnez Objets>Secrets.

  2. Sélectionnez Générer/Importer.

  3. Dans la boîte de dialogue Créer un secret , entrez les valeurs suivantes :

    • Pour les options de chargement : Entrer Manual.
    • Nom : entrez le message.
    • Pour la valeur secrète : entrez Bonjour depuis Key Vault.
  4. Pour les autres options, utilisez les valeurs par défaut.

  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 le magasin App Configuration que vous créez dans le guide de démarrage rapide.

  2. Sélectionnez l’Explorateur de configuration.

  3. Sélectionnez Créer une>référence Key Vault, puis entrez les valeurs suivantes :

    • Pour Clé : entrez TestApp :Settings :KeyVaultMessage.
    • Pour l’étiquette : laissez la valeur vide.
    • Pour l’abonnement, le groupe de ressources et Key Vault : entrez les valeurs que vous utilisez lorsque vous créez le coffre de clés précédemment dans ce didacticiel.
    • Pour secret : sélectionnez le secret nommé Message que vous créez dans la section précédente.

    Capture d’écran de la boîte de dialogue permettant de créer une référence Key Vault. Les champs Clé, Abonnement, Groupe de ressources, Coffre de clés et Secret sont renseignés.

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

  1. Accédez au dossier qui contient le projet d’application web core ASP.NET que vous avez créé dans le guide de démarrage rapide.

  2. Depuis une invite de commandes, exécutez la commande suivante. Cette commande ajoute la référence du Azure.Identity package NuGet à votre fichier projet ou la met à jour.

    dotnet add package Azure.Identity
    
  3. Ouvrez Program.cs. Dans la section de directive using, ajoutez la ligne suivante pour importer les types à partir de l’espace de noms Azure.Identity :

    using Azure.Identity;
    
  4. Dans Program.cs, remplacez l’appel à la AddAzureAppConfiguration méthode par l’appel dans le code suivant. L’appel mis à jour inclut l’option ConfigureKeyVault . Cette option utilise la méthode SetCredential pour transmettre les identifiants nécessaires à l’authentification auprès de votre coffre de clés.

    var builder = WebApplication.CreateBuilder(args);
    
    // Retrieve the App Configuration endpoint.
    string endpoint = builder.Configuration.GetValue<string>("Endpoints:AppConfiguration")
    
    // Load the configuration from App Configuration.
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        options.Connect(new Uri(endpoint), new DefaultAzureCredential());
    
        options.ConfigureKeyVault(keyVaultOptions =>
        {
            keyVaultOptions.SetCredential(new DefaultAzureCredential());
        });
    });
    

    Conseil

    Si vous avez plusieurs coffres de clés, le système utilisera les mêmes informations d’identification pour tous. Si vos coffres de clés nécessitent des informations d’identification différentes, vous pouvez les définir en utilisant les méthodes Register ou SetSecretResolver de la classe AzureAppConfigurationKeyVaultOptions.

  5. Pour accéder aux valeurs des références Key Vault dans votre code, accédez au dossier Pages de votre projet. Ouvrez Index.cshtml et remplacez son contenu par le code suivant. Le code du bloc précédent initialise la connexion App Configuration et configure la connexion Key Vault. Par conséquent, dans Index.cshtml, vous pouvez accéder aux valeurs des références Key Vault de la même manière que vous accédez aux valeurs des clés de configuration d'application régulières.

    @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>
    

    Ce code accède à la valeur de la référence TestApp:Settings:KeyVaultMessage Key Vault de la même façon qu’il accède à la valeur de configuration de TestApp:Settings:Message.

Autoriser votre application à accéder à Key Vault

App Configuration n’accède pas à votre coffre de clés. Au lieu de cela, votre application lit directement à partir de Key Vault. Vous devez donc accorder à votre application l’accès aux secrets dans votre coffre de clés. Ainsi, les secrets restent toujours avec votre application. Vous pouvez utiliser une stratégie d’accès Key Vault ou un contrôle d’accès en fonction du rôle Azure pour accorder l’accès.

Le code de ce didacticiel utilise la classe pour l’authentification DefaultAzureCredential . Ces informations d’identification de jeton agrégées essaient automatiquement plusieurs types d’informations d’identification, tels que EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredentialet VisualStudioCredential. Pour plus d’informations, consultez classe DefaultAzureCredential.

Vous pouvez remplacer DefaultAzureCredential par n’importe quel type d’informations d’identification explicite. Toutefois, lorsque vous utilisez DefaultAzureCredential, votre code peut s’exécuter dans des environnements locaux et Azure. Par exemple, lorsque votre application s’exécute dans Azure, DefaultAzureCredential utilise ManagedIdentityCredential. Mais lorsque vous utilisez Visual Studio pour le développement local, DefaultAzureCredential revient automatiquement à SharedTokenCacheCredential ou VisualStudioCredential.

Vous pouvez également définir les variables d’environnement AZURE_TENANT_ID, AZURE_CLIENT_ID, et AZURE_CLIENT_SECRET. Lorsque vous l’effectuez, DefaultAzureCredential utilise ces variables et EnvironmentCredential pour vous authentifier auprès de votre coffre de clés.

Après avoir déployé votre application sur un service Azure avec une identité managée activée, telle qu’Azure App Service, Azure Kubernetes Service ou Azure Container Instance, vous accordez l’identité managée du service Azure pour 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 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 à l’invite 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. Dans la sortie de la dotnet run commande, recherchez une URL sur laquelle l’application web écoute, par exemple http://localhost:5292. Ouvrez un navigateur et accédez à cette URL.

    Capture d’écran d’un navigateur ouvert à localhost:5292. Le texte de la page indique : Données de Azure App Configuration et Hello de Key Vault.

    Le texte de la page web comprend les composants suivants :

    • Valeur associée à la clé TestApp:Settings:Message dans votre magasin App Configuration
    • Valeur du secret Message stocké dans votre coffre à clés

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