Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak używać połączeń bez hasła z bazami danych platformy Azure w aplikacjach Spring Boot wdrożonych w usłudze Azure Spring Apps.
W tym samouczku wykonasz następujące zadania za pomocą portalu Azure lub interfejsu wiersza polecenia platformy Azure (Azure CLI). Obie metody zostały wyjaśnione w poniższych procedurach.
- Utwórz instancję usługi Azure Spring Apps.
- Tworzenie i wdrażanie aplikacji w usłudze Azure Spring Apps.
- Uruchamianie aplikacji połączonych z bazami danych Azure przy użyciu tożsamości zarządzanej.
Notatka
Ten samouczek nie działa dla R2DBC.
Warunki wstępne
- Subskrypcja platformy Azure. Jeśli jeszcze go nie masz, utwórz bezpłatne konto.
- Azure CLI w wersji 2.45.0 lub nowszej.
- Rozszerzenie Azure Spring Apps. Zainstaluj rozszerzenie przy użyciu polecenia :
az extension add --name spring. - Java Development Kit (JDK)w wersji 8, 11 lub 17.
- Klient Git.
- cURL lub podobne narzędzie HTTP do testowania funkcjonalności.
- Klient wiersza polecenia MySQL, jeśli zdecydujesz się uruchomić Azure Database for MySQL. Połączenie z serwerem można nawiązać za pomocą Azure Cloud Shell przy użyciu popularnego narzędzia klienckiego, narzędzia wiersza polecenia mysql.exe. Alternatywnie możesz użyć wiersza polecenia
mysqlw środowisku lokalnym. - sterownik ODBC 18 dla programu SQL Server, jeśli zdecydujesz się korzystać z usługi Azure SQL Database.
Przygotowywanie środowiska roboczego
Najpierw skonfiguruj niektóre zmienne środowiskowe przy użyciu następujących poleceń:
export AZ_RESOURCE_GROUP=passwordless-tutorial-rg
export AZ_DATABASE_SERVER_NAME=<YOUR_DATABASE_SERVER_NAME>
export AZ_DATABASE_NAME=demodb
export AZ_LOCATION=<YOUR_AZURE_REGION>
export AZ_SPRING_APPS_SERVICE_NAME=<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
export AZ_SPRING_APPS_APP_NAME=hellospring
export AZ_DB_ADMIN_USERNAME=<YOUR_DB_ADMIN_USERNAME>
export AZ_DB_ADMIN_PASSWORD=<YOUR_DB_ADMIN_PASSWORD>
export AZ_USER_IDENTITY_NAME=<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>
Zastąp symbole zastępcze następującymi wartościami, które są używane w tym artykule:
-
<YOUR_DATABASE_SERVER_NAME>: nazwa serwera usługi Azure Database, który powinien być unikatowy na platformie Azure. -
<YOUR_AZURE_REGION>: region platformy Azure, którego chcesz użyć. Możesz użyćeastusdomyślnie, ale skonfigurować region bliżej miejsca, w którym mieszkasz. Zobacz pełną listę dostępnych regionów przy użyciu poleceniaaz account list-locations. -
<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>: nazwa wystąpienia usługi Azure Spring Apps. Nazwa musi mieć długość od 4 do 32 znaków i może zawierać tylko małe litery, cyfry i łączniki. Pierwszy znak nazwy usługi musi być literą, a ostatni znak musi być literą lub cyfrą. -
<AZ_DB_ADMIN_USERNAME>: nazwa użytkownika administratora serwera bazy danych platformy Azure. -
<AZ_DB_ADMIN_PASSWORD>: hasło administratora serwera bazy danych platformy Azure. -
<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>: nazwa serwera tożsamości zarządzanej przypisanej przez użytkownika, która powinna być unikatowa na platformie Azure.
Skonfiguruj wystąpienie Aplikacji Azure Spring
Wykonaj poniższe kroki, aby wdrożyć instancję Azure Spring Apps.
Zaktualizuj interfejs wiersza polecenia platformy Azure za pomocą rozszerzenia Azure Spring Apps, używając następującego polecenia:
az extension update --name springZaloguj się do interfejsu wiersza polecenia platformy Azure i wybierz aktywną subskrypcję przy użyciu następujących poleceń:
az login az account list --output table az account set --subscription <name-or-ID-of-subscription>Użyj następujących poleceń, aby utworzyć grupę zasobów zawierającą usługę Azure Spring Apps i wystąpienie usługi Azure Spring Apps:
az group create \ --name $AZ_RESOURCE_GROUP \ --location $AZ_LOCATION az spring create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_SPRING_APPS_SERVICE_NAME
Tworzenie wystąpienia bazy danych platformy Azure
Wykonaj poniższe kroki, aby utworzyć wystąpienie bazy danych Azure.
Utwórz serwer usługi Azure Database for MySQL przy użyciu następującego polecenia:
az mysql flexible-server create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_DATABASE_SERVER_NAME \ --location $AZ_LOCATION \ --admin-user $AZ_DB_ADMIN_USERNAME \ --admin-password $AZ_DB_ADMIN_PASSWORD \ --yes
Notatka
Jeśli nie podasz parametrów admin-password lub admin-user, system wygeneruje domyślnego użytkownika administratora lub losowe hasło administratora.
Utwórz nową bazę danych przy użyciu następującego polecenia:
az mysql flexible-server db create \ --resource-group $AZ_RESOURCE_GROUP \ --database-name $AZ_DATABASE_NAME \ --server-name $AZ_DATABASE_SERVER_NAME
Tworzenie aplikacji z przypisanym publicznym punktem końcowym
Użyj następującego polecenia, aby utworzyć aplikację.
az spring app create \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--name $AZ_SPRING_APPS_APP_NAME \
--runtime-version=Java_17
--assign-endpoint true
Łączenie usługi Azure Spring Apps z bazą danych platformy Azure
Najpierw zainstaluj rozszerzenie Service Connector bez hasła dla interfejsu wiersza polecenia platformy Azure:
az extension add --name serviceconnector-passwordless --upgrade
Następnie użyj następującego polecenia, aby utworzyć tożsamość zarządzaną przypisaną przez użytkownika na potrzeby uwierzytelniania firmy Microsoft Entra. Aby uzyskać więcej informacji, zobacz Skonfiguruj uwierzytelnianie Microsoft Entra dla Azure Database for MySQL – Flexible Server.
export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
--name $AZ_USER_IDENTITY_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--query id \
--output tsv)
Ważny
Po utworzeniu tożsamości przypisanej przez użytkownika poproś administratora globalnego lub administratora ról uprzywilejowanych o udzielenie następujących uprawnień dla tej tożsamości: User.Read.All, GroupMember.Read.Alli Application.Read.ALL. Aby uzyskać więcej informacji, zobacz sekcję Permissions w temacie Active Directory authentication.
Następnie użyj następującego polecenia, aby utworzyć połączenie bez hasła z bazą danych.
az spring connection create mysql-flexible \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--app $AZ_SPRING_APPS_APP_NAME \
--target-resource-group $AZ_RESOURCE_GROUP \
--server $AZ_DATABASE_SERVER_NAME \
--database $AZ_DATABASE_NAME \
--system-identity mysql-identity-id=$AZ_IDENTITY_RESOURCE_ID
To polecenie łącznika usługi uruchamia następujące zadania w tle:
Włącza tożsamość zarządzaną przypisaną przez system dla aplikacji
$AZ_SPRING_APPS_APP_NAMEhostowanej przez Azure Spring Apps.Ustawia administratora Microsoft Entra jako aktualnie zalogowanego użytkownika.
Dodaje użytkownika bazy danych o nazwie
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAMEdla tożsamości zarządzanej utworzonej w kroku 1 i przyznaje temu użytkownikowi wszystkie uprawnienia do bazy danych$AZ_DATABASE_NAME.Dodaje dwie konfiguracje do aplikacji
$AZ_SPRING_APPS_APP_NAME:spring.datasource.urlispring.datasource.username.Notatka
Jeśli zostanie wyświetlony komunikat
The subscription is not registered to use Microsoft.ServiceLinkero błędzie , uruchom polecenieaz provider register --namespace Microsoft.ServiceLinker, aby zarejestrować dostawcę zasobów łącznika usługi, a następnie ponownie uruchom polecenie połączenia.
Kompilowanie i wdrażanie aplikacji
W poniższych krokach opisano sposób pobierania, konfigurowania, kompilowania i wdrażania przykładowej aplikacji.
Użyj następującego polecenia, aby sklonować przykładowe repozytorium kodu:
git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sampleDodaj następującą zależność do pliku pom.xml:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId> </dependency>Ta zależność dodaje obsługę dla startera Spring Cloud Azure.
Notatka
Aby uzyskać więcej informacji na temat zarządzania wersjami bibliotek Spring Cloud Azure przy użyciu zestawienia materiałowego (BOM), zobacz sekcję Wprowadzenie w przewodniku dla deweloperów Spring Cloud Azure.
Użyj następującego polecenia, aby zaktualizować plik application.properties.
cat << EOF > passwordless-sample/src/main/resources/application.properties logging.level.org.springframework.jdbc.core=DEBUG spring.datasource.azure.passwordless-enabled=true spring.sql.init.mode=always EOFUżyj następujących poleceń, aby skompilować projekt przy użyciu narzędzia Maven:
cd passwordless-sample ./mvnw clean package -DskipTestsUżyj następującego polecenia, aby wdrożyć plik target/demo-0.0.1-SNAPSHOT.jar dla aplikacji:
az spring app deploy \ --name $AZ_SPRING_APPS_APP_NAME \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --artifact-path target/demo-0.0.1-SNAPSHOT.jarWykonaj zapytanie o stan aplikacji po wdrożeniu przy użyciu następującego polecenia:
az spring app list \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --output tableZobaczysz dane wyjściowe podobne do poniższego przykładu.
Name Location ResourceGroup Production Deployment Public Url Provisioning Status CPU Memory Running Instance Registered Instance Persistent Storage ----------------- ---------- --------------- ----------------------- --------------------------------------------------- --------------------- ----- -------- ------------------ --------------------- -------------------- <app name> eastus <resource group> default Succeeded 1 2 1/1 0/1 -
Testowanie aplikacji
Aby przetestować aplikację, użyj narzędzia cURL. Najpierw utwórz nowy element "todo" w bazie danych przy użyciu następującego polecenia:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done": "true"}' \
https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
To polecenie zwraca utworzony element, jak pokazano w poniższym przykładzie:
{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}
Następnie pobierz dane przy użyciu następującego żądania cURL:
curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
To polecenie zwraca listę elementów "todo", w tym utworzony element, jak pokazano w poniższym przykładzie:
[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]
Czyszczenie zasobów
Aby wyczyścić wszystkie zasoby wykorzystywane w tym samouczku, usuń grupę zasobów przy użyciu następującego polecenia:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes