Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jak používat bez hesla připojení k databázím Azure v aplikacích Spring Boot nasazených v Azure Spring Apps.
V tomto kurzu provedete následující úlohy pomocí portálu Azure nebo Azure CLI. Obě metody jsou vysvětleny v následujících postupech.
- Zřízení instance Azure Spring Apps
- Sestavte a nasaďte aplikace do Azure Spring Apps.
- Spouštění aplikací připojených k Azure databázím pomocí spravované identity
Poznámka
Tento kurz nefunguje pro R2DBC.
Požadavky
- Předplatné Azure. Pokud ho ještě nemáte, vytvořte si bezplatný účet.
- Azure CLI verze 2.45.0 nebo vyšší
- Rozšíření Azure Spring Apps Nainstalujte rozšíření pomocí příkazu:
az extension add --name spring. - Java Development Kit (JDK), verze 8, 11 nebo 17.
- Klient Gitu.
- cURL nebo podobný nástroj HTTP pro testování funkčnosti.
- Klient příkazového řádku MySQL, pokud se rozhodnete spustit Azure Database for MySQL. K serveru se můžete připojit v Azure Cloud Shell pomocí oblíbeného klientského nástroje, nástroje příkazového řádku mysql.exe. Alternativně můžete použít příkazový řádek
mysqlv místním prostředí. - ovladač ODBC 18 pro SQL Server, pokud se rozhodnete použít Azure SQL Database.
Příprava pracovního prostředí
Nejprve pomocí následujících příkazů nastavte některé proměnné prostředí:
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>
Zástupné symboly nahraďte následujícími hodnotami, které se používají v tomto článku:
-
<YOUR_DATABASE_SERVER_NAME>: Název vašeho serveru Azure Database, který by měl být jedinečný v rámci Azure. -
<YOUR_AZURE_REGION>: Oblast Azure, kterou chcete použít. Ve výchozím nastavení můžete používateastus, ale nastavte si oblast, která je blíže místu, kde žijete. Úplný seznam dostupných oblastí zobrazíte pomocíaz account list-locations. -
<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>: Název instance Azure Spring Apps. Název musí mít délku 4 až 32 znaků a může obsahovat jenom malá písmena, číslice a pomlčky. První znak názvu služby musí být písmeno a poslední znak musí být písmeno nebo číslo. -
<AZ_DB_ADMIN_USERNAME>: Uživatelské jméno správce vašeho databázového serveru Azure. -
<AZ_DB_ADMIN_PASSWORD>: Heslo správce vašeho databázového serveru Azure. -
<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>: Název serveru spravované identity přiřazeného uživatelem, který by měl být jedinečný v rámci Azure.
Zřízení instance Azure Spring Apps
Pomocí následujících kroků zřiďte instanci Azure Spring Apps.
Pomocí následujícího příkazu aktualizujte Azure CLI pomocí rozšíření Azure Spring Apps:
az extension update --name springPřihlaste se k Azure CLI a zvolte své aktivní předplatné pomocí následujících příkazů:
az login az account list --output table az account set --subscription <name-or-ID-of-subscription>Pomocí následujících příkazů vytvořte skupinu prostředků, která bude obsahovat vaši službu Azure Spring Apps a instanci služby 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
Vytvoření instance databáze Azure
Ke zřízení instance služby Azure Database použijte následující postup.
Pomocí následujícího příkazu vytvořte server Azure Database for MySQL:
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
Poznámka
Pokud nezadáte parametry admin-password nebo admin-user, systém vygeneruje výchozího administrátora nebo náhodné heslo administrátora.
Pomocí následujícího příkazu vytvořte novou databázi:
az mysql flexible-server db create \ --resource-group $AZ_RESOURCE_GROUP \ --database-name $AZ_DATABASE_NAME \ --server-name $AZ_DATABASE_SERVER_NAME
Vytvoření aplikace s přiřazeným veřejným koncovým bodem
K vytvoření aplikace použijte následující příkaz.
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
Připojení Azure Spring Apps k databázi Azure
Nejprve nainstalujte rozšíření Service Connector bez hesla pro Azure CLI:
az extension add --name serviceconnector-passwordless --upgrade
Potom pomocí následujícího příkazu vytvořte spravovanou identitu přiřazenou uživatelem pro ověřování Microsoft Entra. Další informace viz Nastavení ověřování Microsoft Entra pro 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)
Důležitý
Po vytvoření identity přiřazené uživatelem požádejte globálního správce nebo správce privilegovaných rolí udělit následující oprávnění pro tuto identitu: User.Read.All, GroupMember.Read.Alla Application.Read.ALL. Další informace najdete v části
Dále pomocí následujícího příkazu vytvořte připojení bez hesla k databázi.
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
Tento příkaz konektoru služby spouští na pozadí následující úlohy:
Povolí spravovanou identitu přiřazenou systémem pro aplikaci
$AZ_SPRING_APPS_APP_NAMEhostované Azure Spring Apps.Nastaví správce Microsoft Entra na aktuálně přihlášeného uživatele.
Přidá uživatele databáze pojmenované
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAMEpro spravovanou identitu vytvořenou v kroku 1 a udělí tomuto uživateli všechna oprávnění databáze$AZ_DATABASE_NAME.Přidá do aplikace
$AZ_SPRING_APPS_APP_NAMEdvě konfigurace :spring.datasource.urlaspring.datasource.username.Poznámka
Pokud se zobrazí chybová zpráva
The subscription is not registered to use Microsoft.ServiceLinker, spusťte příkazaz provider register --namespace Microsoft.ServiceLinkerpro registraci poskytovatele prostředků konektoru služby a pak příkaz připojení spusťte znovu.
Sestavení a nasazení aplikace
Následující kroky popisují, jak stáhnout, nakonfigurovat, sestavit a nasadit ukázkovou aplikaci.
Pomocí následujícího příkazu naklonujte úložiště ukázkového kódu:
git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sampleDo souboru pom.xml přidejte následující závislost:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId> </dependency>Tato závislost přidává podporu startéru Spring Cloud Azure.
Poznámka
Další informace o tom, jak spravovat verze knihoven Spring Cloud Azure pomocí BOM, najdete v části Začínáme příručky pro vývojáře Spring Cloud Azure.
Pomocí následujícího příkazu aktualizujte soubor 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 EOFK sestavení projektu pomocí Mavenu použijte následující příkazy:
cd passwordless-sample ./mvnw clean package -DskipTestsPoužijte následující příkaz k nasazení souboru target/demo-0.0.1-SNAPSHOT.jar pro aplikaci:
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.jarPomocí následujícího příkazu odešlete dotaz na stav aplikace po nasazení:
az spring app list \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --output tableZobrazí se výstup podobný následujícímu příkladu.
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 -
Otestování aplikace
K otestování aplikace použijte cURL. Nejprve vytvořte novou položku "todo" v databázi pomocí následujícího příkazu:
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
Tento příkaz vrátí vytvořenou položku, jak je znázorněno v následujícím příkladu:
{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}
Potom načtěte data pomocí následujícího požadavku cURL:
curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Tento příkaz vrátí seznam položek "todo", včetně položky, kterou jste vytvořili, jak je znázorněno v následujícím příkladu:
[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]
Vyčištění prostředků
Pokud chcete vyčistit všechny prostředky použité v tomto kurzu, odstraňte skupinu prostředků pomocí následujícího příkazu:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes
Další kroky
- Dokumentace Spring Cloud Azure