Samouczek: używanie odwołań usługi Key Vault w aplikacji ASP.NET Core

Z tego samouczka dowiesz się, jak używać usługi konfiguracji aplikacja systemu Azure razem z usługą Azure Key Vault. Usługa App Configuration i Key Vault to usługi uzupełniające używane obok siebie w większości wdrożeń aplikacji.

Usługa App Configuration pomaga używać usług razem, tworząc klucze odwołujące się do wartości przechowywanych w usłudze Key Vault. Gdy usługa App Configuration tworzy takie klucze, przechowuje identyfikatory URI wartości usługi Key Vault, a nie same wartości.

Aplikacja używa dostawcy klienta usługi App Configuration do pobierania odwołań usługi Key Vault, podobnie jak w przypadku innych kluczy przechowywanych w usłudze App Configuration. W takim przypadku wartości przechowywane w usłudze App Configuration to identyfikatory URI odwołujące się do wartości w usłudze Key Vault. Nie są to wartości ani poświadczenia usługi Key Vault. Ponieważ dostawca klienta rozpoznaje klucze jako odwołania do usługi Key Vault, używa usługi Key Vault do pobierania ich wartości.

Aplikacja jest odpowiedzialna za prawidłowe uwierzytelnianie zarówno w usłudze App Configuration, jak i usłudze Key Vault. Obie usługi nie komunikują się bezpośrednio.

W tym samouczku pokazano, jak zaimplementować odwołania do usługi Key Vault w kodzie. Opiera się on na aplikacji internetowej wprowadzonej w przewodnikach Szybki start. Przed kontynuowaniem najpierw zakończ tworzenie aplikacji ASP.NET Core za pomocą usługi App Configuration .

Aby wykonać kroki opisane w tym samouczku, możesz użyć dowolnego edytora kodu. Na przykład program Visual Studio Code jest międzyplatformowym edytorem kodu dostępnym dla systemów operacyjnych Windows, macOS i Linux.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Utwórz klucz usługi App Configuration, który odwołuje się do wartości przechowywanej w usłudze Key Vault.
  • Uzyskaj dostęp do wartości tego klucza z aplikacji internetowej ASP.NET Core.

Wymagania wstępne

Przed rozpoczęciem tego samouczka zainstaluj zestaw .NET SDK 6.0 lub nowszy.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Tworzenie magazynu

  1. Wybierz opcję Utwórz zasób w lewym górnym rogu witryny Azure Portal:

    Zrzut ekranu przedstawia opcję Utwórz zasób w witrynie Azure Portal.

  2. W polu wyszukiwania wpisz Key Vault i wybierz pozycję Key Vault z listy rozwijanej.

  3. Z listy wyników wybierz pozycję Magazyny kluczy po lewej stronie.

  4. W obszarze Magazyny kluczy wybierz pozycję Dodaj.

  5. Po prawej stronie w obszarze Tworzenie magazynu kluczy podaj następujące informacje:

    • Wybierz pozycję Subskrypcja , aby wybrać subskrypcję.
    • W obszarze Grupa zasobów wprowadź nazwę istniejącej grupy zasobów lub wybierz pozycję Utwórz nową i wprowadź nazwę grupy zasobów.
    • W polu Nazwa magazynu kluczy wymagana jest unikatowa nazwa.
    • Z listy rozwijanej Region wybierz lokalizację.
  6. Pozostaw inne opcje Utwórz magazyn kluczy z ich wartościami domyślnymi.

  7. Kliknij pozycję Przejrzyj i utwórz.

  8. System zweryfikuje i wyświetli wprowadzone dane. Kliknij pozycję Utwórz.

Na tym etapie Twoje konto platformy Azure jest jedynym autoryzowanym do uzyskiwania dostępu do tego nowego magazynu.

Dodawanie wpisu tajnego do usługi Key Vault

Aby dodać wpis tajny do magazynu, należy wykonać kilka dodatkowych kroków. W takim przypadku dodaj komunikat, którego można użyć do przetestowania pobierania usługi Key Vault. Komunikat nosi nazwę Message (Komunikat) i przechowujesz w nim wartość "Hello from Key Vault".

  1. Na stronach właściwości usługi Key Vault wybierz pozycję Wpisy tajne.
  2. Wybierz Generuj/Import.
  3. W okienku Tworzenie wpisu tajnego wprowadź następujące wartości:
    • Opcje przekazywania: wprowadź ręczne.
    • Nazwa: wprowadź komunikat.
    • Wartość: wprowadź wartość Hello z usługi Key Vault.
  4. Pozostaw pozostałe właściwości Utwórz wpis tajny z ich wartościami domyślnymi.
  5. Wybierz pozycję Utwórz.

Dodawanie odwołania do usługi Key Vault do usługi App Configuration

  1. Zaloguj się w witrynie Azure Portal. Wybierz pozycję Wszystkie zasoby, a następnie wybierz wystąpienie sklepu App Configuration utworzone w przewodniku Szybki start.

  2. Wybierz pozycję Eksplorator konfiguracji.

  3. Wybierz pozycję + Utwórz>odwołanie do magazynu kluczy, a następnie określ następujące wartości:

    • Klucz: wybierz pozycję TestApp:Ustawienia:KeyVaultMessage.
    • Etykieta: pozostaw tę wartość pustą.
    • Subskrypcja, grupa zasobów i magazyn kluczy: wprowadź wartości odpowiadające wartościom w magazynie kluczy utworzonym w poprzedniej sekcji.
    • Wpis tajny: wybierz wpis tajny o nazwie Komunikat utworzony w poprzedniej sekcji.

Zrzut ekranu przedstawiający tworzenie nowego formularza referencyjnego usługi Key Vault

Aktualizowanie kodu w celu użycia odwołania do usługi Key Vault

  1. Dodaj odwołanie do wymaganych pakietów NuGet, uruchamiając następujące polecenie:

    dotnet add package Azure.Identity
    
  2. Otwórz Program.cs i dodaj odwołania do następujących wymaganych pakietów:

    using Azure.Identity;
    
  3. Użyj usługi App Configuration, wywołując metodę AddAzureAppConfiguration . ConfigureKeyVault Dołącz opcję i przekaż poprawne poświadczenia do usługi Key Vault przy użyciu SetCredential metody .

    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());
        });
    });
    

    Napiwek

    Jeśli masz wiele magazynów kluczy, to samo poświadczenie będzie używane dla wszystkich z nich. Jeśli magazyny kluczy wymagają różnych poświadczeń, możesz ustawić je przy użyciu metod Register lub SetSecretResolver z AzureAppConfigurationKeyVaultOptions klasy .

  4. Po zainicjowaniu połączenia z usługą App Configuration skonfigurujesz połączenie z usługą Key Vault, wywołując metodę ConfigureKeyVault . Po zainicjowaniu można uzyskać dostęp do wartości odwołań usługi Key Vault w taki sam sposób, jak w przypadku uzyskiwania dostępu do wartości zwykłych kluczy konfiguracji aplikacji.

    Aby wyświetlić ten proces w akcji, otwórz plik Index.cshtml w folderze Views>Home. Zastąp zawartość poniższym kodem:

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

    Uzyskujesz dostęp do wartości odwołania do usługi Key Vault TestApp:Ustawienia:KeyVaultMessage w taki sam sposób, jak w przypadku wartości konfiguracji elementu TestApp:Ustawienia:Message.

Udzielanie aplikacji dostępu do usługi Key Vault

aplikacja systemu Azure Configuration nie będzie uzyskiwać dostępu do magazynu kluczy. Aplikacja będzie odczytywać bezpośrednio z usługi Key Vault, więc musisz udzielić aplikacji dostępu do wpisów tajnych w magazynie kluczy. Dzięki temu wpis tajny zawsze pozostaje w aplikacji. Dostęp można udzielić przy użyciu zasad dostępu usługi Key Vault lub kontroli dostępu opartej na rolach platformy Azure.

Używasz DefaultAzureCredential w powyższym kodzie. Jest to zagregowane poświadczenie tokenu, które automatycznie próbuje liczbą typów poświadczeń, takich jak EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredentiali VisualStudioCredential. Aby uzyskać więcej informacji, zobacz DefaultAzureCredential Class (Klasa DefaultAzureCredential). Możesz jawnie zastąpić DefaultAzureCredential dowolnym typem poświadczeń. Jednak użycie DefaultAzureCredential umożliwia posiadanie tego samego kodu, który działa zarówno w środowiskach lokalnych, jak i platformy Azure. Na przykład przyznasz własny dostęp poświadczeń do magazynu kluczy. DefaultAzureCredential automatycznie wraca do SharedTokenCacheCredential programu Visual Studio lub VisualStudioCredential gdy używasz programu Visual Studio do programowania lokalnego.

Alternatywnie możesz ustawić AZURE_TENANT_ID, AZURE_CLIENT_ID i AZURE_CLIENT_SECRET zmiennych środowiskowych oraz DefaultAzureCredential użyć klucza tajnego klienta, który należy wykonać za pośrednictwem polecenia EnvironmentCredential , aby uwierzytelnić się w magazynie kluczy. Po wdrożeniu aplikacji w usłudze platformy Azure z włączoną tożsamością zarządzaną, na przykład aplikacja systemu Azure Service, Azure Kubernetes Service lub Azure Container Instance, przyznasz tożsamość zarządzaną usługi Azure w celu uzyskania dostępu do magazynu kluczy. DefaultAzureCredential automatycznie używa ManagedIdentityCredential funkcji , gdy aplikacja jest uruchomiona na platformie Azure. Możesz użyć tej samej tożsamości zarządzanej do uwierzytelniania zarówno za pomocą usługi App Configuration, jak i usługi Key Vault. Aby uzyskać więcej informacji, zobacz How to use managed identities to access App Configuration (Jak używać tożsamości zarządzanych do uzyskiwania dostępu do usługi App Configuration).

Lokalne kompilowanie i uruchamianie aplikacji

  1. Aby skompilować aplikację przy użyciu interfejsu wiersza polecenia platformy .NET, uruchom następujące polecenie w powłoce poleceń:

    dotnet build
    
  2. Po zakończeniu kompilacji użyj następującego polecenia, aby uruchomić aplikację internetową lokalnie:

    dotnet run
    
  3. Otwórz okno przeglądarki i przejdź do http://localhost:5000adresu , który jest domyślnym adresem URL aplikacji internetowej hostowanej lokalnie.

    Uruchamianie aplikacji lokalnej w przewodniku Szybki start

Czyszczenie zasobów

Jeśli nie chcesz nadal korzystać z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.

Ważne

Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przypadkowo nieprawidłowej grupy zasobów ani zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.

Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.

Następne kroki

W tym samouczku utworzono klucz w usłudze App Configuration, który odwołuje się do wpisu tajnego przechowywanego w usłudze Key Vault. Aby dowiedzieć się, jak automatycznie ponownie ładować wpisy tajne i certyfikaty z usługi Key Vault, przejdź do następnego samouczka:

Aby dowiedzieć się, jak za pomocą tożsamości zarządzanej usprawnić dostęp do usługi App Configuration i Key Vault, zapoznaj się z następującym samouczkiem: