Samouczek: używanie odwołań usługi Key Vault w aplikacji Java Spring
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 ukończ najpierw tworzenie aplikacji Java Spring 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 poziomu aplikacji Java Spring.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz jedną bezpłatnie
- Obsługiwany zestaw Java Development Kit (JDK) w wersji 11.
- Apache Maven w wersji 3.0 lub nowszej.
Tworzenie magazynu
Wybierz opcję Utwórz zasób w lewym górnym rogu witryny Azure Portal:
W polu wyszukiwania wprowadź magazyn kluczy.
Z listy wyników wybierz pozycję Magazyny kluczy.
W obszarze Magazyny kluczy wybierz pozycję Dodaj.
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 polu Nazwa magazynu kluczy wymagana jest unikatowa nazwa. Na potrzeby tego samouczka wprowadź wartość Contoso-vault2.
- Z listy rozwijanej Region wybierz lokalizację.
Pozostaw inne opcje Utwórz magazyn kluczy z ich wartościami domyślnymi.
Wybierz 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ć jeszcze kilka 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".
- Na stronach właściwości usługi Key Vault wybierz pozycję Wpisy tajne.
- Wybierz Generuj/Import.
- 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.
- Pozostaw pozostałe właściwości Utwórz wpis tajny z ich wartościami domyślnymi.
- Wybierz pozycję Utwórz.
Dodawanie odwołania do usługi Key Vault do usługi App Configuration
Zaloguj się w witrynie Azure Portal. Wybierz pozycję Wszystkie zasoby, a następnie wybierz wystąpienie sklepu App Configuration utworzone w przewodniku Szybki start.
Wybierz pozycję Eksplorator konfiguracji.
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 usługą Key Vault
W tym samouczku użyjesz jednostki usługi do uwierzytelniania w usłudze 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": "00001111-aaaa-2222-bbbb-3333cccc4444", "clientSecret": "aaaaaaaa-0b0b-1c1c-2d2d-333333333333", "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "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/" }
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
Uruchom następujące polecenie, aby pobrać identyfikator obiektu, a następnie dodaj go do usługi 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>
Utwórz zmienne środowiskowe AZURE_CLIENT_ID, AZURE_CLIENT_SECRET i AZURE_TENANT_ID. Użyj wartości dla jednostki usługi, która została wyświetlona w poprzednich krokach. W wierszu polecenia uruchom następujące polecenia i uruchom ponownie wiersz polecenia, aby zezwolić na wprowadzenie zmian:
setx AZURE_CLIENT_ID "clientId" setx AZURE_CLIENT_SECRET "clientSecret" setx AZURE_TENANT_ID "tenantId"
Jeśli używasz programu 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 poświadczenia usługi Key Vault są używane tylko w aplikacji. Aplikacja uwierzytelnia się bezpośrednio w usłudze Key Vault przy użyciu tych poświadczeń bez użycia usługi App Configuration. Usługa Key Vault zapewnia uwierzytelnianie zarówno dla aplikacji, jak i usługi App Configuration bez udostępniania lub udostępniania kluczy.
Aktualizowanie kodu w celu użycia odwołania do usługi Key Vault
Utwórz zmienną środowiskową o nazwie APP_CONFIGURATION_ENDPOINT. Ustaw jego wartość na punkt końcowy magazynu usługi App Configuration. Punkt końcowy można znaleźć w bloku Klucze dostępu w witrynie Azure Portal. Uruchom ponownie wiersz polecenia, aby zezwolić na wprowadzenie zmiany.
Otwórz plik konfiguracji w folderze resources . Zaktualizuj ten plik, aby użyć wartości APP_CONFIGURATION_ENDPOINT . Usuń wszystkie odwołania do parametry połączenia w tym pliku.
spring:
cloud:
azure:
appconfiguration:
stores:
- endpoint: ${APP_CONFIGURATION_ENDPOINT}
Uwaga
Możesz również użyć konfiguracji globalnych platformy Azure spring Cloud do nawiązania połączenia z usługą Key Vault.
Otwórz MessageProperties.java. Dodaj nową zmienną o nazwie keyVaultMessage:
private String keyVaultMessage; public String getKeyVaultMessage() { return keyVaultMessage; } public void setKeyVaultMessage(String keyVaultMessage) { this.keyVaultMessage = keyVaultMessage; }
Otwórz HelloController.java. Zaktualizuj metodę getMessage, aby uwzględnić komunikat pobrany z usługi Key Vault.
@GetMapping public String getMessage() { return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage(); }
Skompiluj aplikację Spring Boot za pomocą narzędzia Maven i uruchom ją, na przykład:
mvn clean package mvn spring-boot:run
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 usłudze Key Vault.
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.
- Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
- W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
- Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
- Wybierz pozycję Usuń grupę zasobów.
- 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 konfiguracji aplikacji, który odwołuje się do wartości przechowywanej w usłudze Key Vault. Aby uzyskać więcej pytań, zobacz dokumentację referencyjną, zawiera ona wszystkie szczegółowe informacje na temat działania biblioteki konfiguracji spring cloud aplikacja systemu Azure. Aby dowiedzieć się, jak używać flag funkcji w aplikacji Java Spring, przejdź do następnego samouczka.