Samouczek: używanie odwołań Key Vault w aplikacji Java Spring

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

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

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

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

W tym samouczku pokazano, jak zaimplementować odwołania Key Vault w kodzie. Opiera się on na aplikacji internetowej wprowadzonej w przewodnikach Szybki start. Przed kontynuowaniem ukończ najpierw tworzenie aplikacji Java Spring przy użyciu App Configuration.

Aby wykonać kroki opisane w tym samouczku, możesz użyć dowolnego edytora kodu. Na przykład Visual Studio Code to wieloplatformowy edytor kodu dostępny dla systemów operacyjnych Windows, macOS i Linux.

Ten samouczek zawiera informacje na temat wykonywania następujących czynności:

  • Utwórz klucz App Configuration, który odwołuje się do wartości przechowywanej w Key Vault.
  • Uzyskaj dostęp do wartości tego klucza z aplikacji Java Spring.

Wymagania wstępne

Tworzenie magazynu

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

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

  2. W polu wyszukiwania wprowadź magazyn kluczy.

  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 wybierz pozycję Utwórz nową i wprowadź nazwę grupy zasobów.
    • W nazwie magazynu kluczy wymagana jest unikatowa nazwa. Na potrzeby tego samouczka wprowadź ciąg Contoso-vault2.
    • Z listy rozwijanej Region wybierz lokalizację.
  6. Pozostaw inne opcje Utwórz magazyn kluczy z ich wartościami domyślnymi.

  7. Wybierz przycisk Utwórz.

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

Zrzut ekranu przedstawia magazyn kluczy.

Dodawanie wpisu tajnego do usługi Key Vault

Aby dodać wpis tajny do magazynu, należy wykonać kilka dodatkowych kroków. W tym przypadku dodaj komunikat, którego można użyć do testowania Key Vault pobierania. Komunikat jest nazywany komunikatem i przechowujesz w nim wartość "Hello from Key Vault".

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

Dodawanie odwołania Key Vault do App Configuration

  1. Zaloguj się w witrynie Azure Portal. Wybierz pozycję Wszystkie zasoby, a następnie wybierz wystąpienie magazynu 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ę /application/config.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.

Nawiązywanie połączenia z Key Vault

  1. W tym samouczku użyjesz jednostki usługi do uwierzytelniania, aby Key Vault. Aby utworzyć tę jednostkę usługi, użyj polecenia interfejsu wiersza polecenia platformy Azure az ad sp create-for-rbac :

    az ad sp create-for-rbac -n "http://mySP" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
    

    Ta operacja zwraca serię par klucz/wartość:

    {
    "clientId": "7da18cae-779c-41fc-992e-0527854c6583",
    "clientSecret": "b421b443-1669-4cd7-b5b1-394d5c945002",
    "subscriptionId": "443e30da-feca-47c4-b68f-1636b75e16b3",
    "tenantId": "35ad10f1-7799-4766-9acf-f2d946161b77",
    "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
    "resourceManagerEndpointUrl": "https://management.azure.com/",
    "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
    "galleryEndpointUrl": "https://gallery.azure.com/",
    "managementEndpointUrl": "https://management.core.windows.net/"
    }
    
  2. Uruchom następujące polecenie, aby umożliwić jednostce usługi dostęp do magazynu kluczy:

    az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get
    
  3. Uruchom następujące polecenie, aby uzyskać identyfikator obiektu, a następnie dodaj go do App Configuration.

    az ad sp show --id <clientId-of-your-service-principal>
    az role assignment create --role "App Configuration Data Reader" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name> --assignee-principal-type --assignee-object-id <objectId-of-your-service-principal> --resource-group <your-resource-group>
    
  4. Utwórz zmienne środowiskowe AZURE_CLIENT_ID, AZURE_CLIENT_SECRET i AZURE_TENANT_ID. Użyj wartości jednostki usługi, które zostały wyświetlone w poprzednich krokach. W wierszu polecenia uruchom następujące polecenia i uruchom ponownie wiersz polecenia, aby umożliwić wprowadzenie zmiany:

    setx AZURE_CLIENT_ID "clientId"
    setx AZURE_CLIENT_SECRET "clientSecret"
    setx AZURE_TENANT_ID "tenantId"
    

    Jeśli używasz Windows PowerShell, uruchom następujące polecenie:

    $Env:AZURE_CLIENT_ID = "clientId"
    $Env:AZURE_CLIENT_SECRET = "clientSecret"
    $Env:AZURE_TENANT_ID = "tenantId"
    

    Jeśli używasz systemu macOS lub Linux, uruchom następujące polecenie:

    export AZURE_CLIENT_ID ='clientId'
    export AZURE_CLIENT_SECRET ='clientSecret'
    export AZURE_TENANT_ID ='tenantId'
    

Uwaga

Te Key Vault poświadczenia są używane tylko w aplikacji. Aplikacja uwierzytelnia się bezpośrednio przy użyciu Key Vault przy użyciu tych poświadczeń bez udziału usługi App Configuration. Key Vault zapewnia uwierzytelnianie zarówno dla aplikacji, jak i usługi App Configuration bez udostępniania ani ujawniania kluczy.

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

  1. Utwórz zmienną środowiskową o nazwie APP_CONFIGURATION_ENDPOINT. Ustaw jego wartość na punkt końcowy magazynu App Configuration. Punkt końcowy można znaleźć w bloku Klucze dostępu w Azure Portal. Uruchom ponownie wiersz polecenia, aby zezwolić na wprowadzenie zmiany.

  2. Otwórz plik konfiguracji w folderze resources . Zaktualizuj ten plik, aby użyć wartości APP_CONFIGURATION_ENDPOINT . Usuń wszystkie odwołania do parametrów połączenia w tym pliku.

spring:
    cloud:
        azure:
            appconfiguration:
                stores:
                    - endpoint: ${APP_CONFIGURATION_ENDPOINT}

Uwaga

Możesz również użyć globalnych konfiguracji platformy Azure spring Cloud, aby nawiązać połączenie z Key Vault.

  1. Otwórz plik MessageProperties.java. Dodaj nową zmienną o nazwie keyVaultMessage:

    private String keyVaultMessage;
    
    public String getKeyVaultMessage() {
        return keyVaultMessage;
    }
    
    public void setKeyVaultMessage(String keyVaultMessage) {
        this.keyVaultMessage = keyVaultMessage;
    }
    
  2. Otwórz plik HelloController.java. Zaktualizuj metodę getMessage, aby uwzględnić komunikat pobrany z Key Vault.

    @GetMapping
    public String getMessage() {
        return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage();
    }
    
  3. Skompiluj aplikację Spring Boot przy użyciu narzędzia Maven i uruchom ją, na przykład:

    mvn clean package
    mvn spring-boot:run
    
  4. Po uruchomieniu aplikacji użyj narzędzia curl , aby przetestować aplikację, na przykład:

    curl -X GET http://localhost:8080/
    

    Zostanie wyświetlony komunikat wprowadzony w magazynie App Configuration. Zostanie również wyświetlony komunikat wprowadzony w Key Vault.

Czyszczenie zasobów

Jeśli nie chcesz kontynuować korzystania 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 usunięto 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 indywidualnie z odpowiedniego okienka zamiast usuwania grupy zasobów.

  1. Zaloguj się do 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 App Configuration, który odwołuje się do wartości przechowywanej w Key Vault. Aby uzyskać więcej pytań, zobacz dokumentację referencyjną, zawiera ona wszystkie szczegółowe informacje na temat sposobu działania biblioteki spring cloud Azure App Configuration. Aby dowiedzieć się, jak używać flag funkcji w aplikacji Java Spring, przejdź do następnego samouczka.