Självstudie: Distribuera ett Spring-program till Azure Spring Apps med en lösenordslös anslutning till en Azure-databas
Den här artikeln visar hur du använder lösenordslösa anslutningar till Azure-databaser i Spring Boot-program som distribuerats till Azure Spring Apps.
I den här självstudien utför du följande uppgifter med hjälp av Azure-portalen eller Azure CLI. Båda metoderna beskrivs i följande procedurer.
- Etablera en instans av Azure Spring Apps.
- Skapa och distribuera appar till Azure Spring Apps.
- Kör appar som är anslutna till Azure-databaser med hjälp av hanterad identitet.
Kommentar
Den här självstudien fungerar inte för R2DBC.
Förutsättningar
- En Azure-prenumeration. Om du inte redan har ett skapar du ett kostnadsfritt konto innan du börjar.
- Azure CLI 2.45.0 eller senare krävs.
- Azure Spring Apps-tillägget. Du kan installera tillägget med hjälp av kommandot :
az extension add --name spring
. - Java Development Kit (JDK), version 8, 11 eller 17.
- En Git-klient.
- cURL eller ett liknande HTTP-verktyg för att testa funktioner.
- MySQL-kommandoradsklient om du väljer att köra Azure Database for MySQL. Du kan ansluta till servern med Azure Cloud Shell med hjälp av ett populärt klientverktyg, kommandoradsverktyget mysql.exe . Du kan också använda kommandoraden
mysql
i din lokala miljö. - ODBC Driver 18 för SQL Server om du väljer att köra Azure SQL Database.
Förbereda arbetsmiljön
Konfigurera först några miljövariabler med följande kommandon:
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>
Ersätt platshållarna med följande värden, som används i hela artikeln:
<YOUR_DATABASE_SERVER_NAME>
: Namnet på din Azure Database-server, som ska vara unik i Hela Azure.<YOUR_AZURE_REGION>
: Den Azure-region som du vill använda. Du kan användaeastus
som standard, men vi rekommenderar att du konfigurerar den region som är närmast dig. Du kan se den fullständiga listan över tillgängliga regioner med hjälpaz account list-locations
av .<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
: Namnet på din Azure Spring Apps-instans. Namnet måste vara mellan 4 och 32 tecken långt och får endast innehålla gemener, siffror och bindestreck. Det första tecknet i tjänstnamnet måste vara en bokstav och det sista tecknet måste vara antingen en bokstav eller ett tal.<AZ_DB_ADMIN_USERNAME>
: Administratörsanvändarnamnet för din Azure-databasserver.<AZ_DB_ADMIN_PASSWORD>
: Administratörslösenordet för din Azure-databasserver.<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>
: Namnet på den användartilldelade hanterade identitetsservern, som ska vara unik i Hela Azure.
Etablera en instans av Azure Spring Apps
Använd följande steg för att etablera en instans av Azure Spring Apps.
Uppdatera Azure CLI med Azure Spring Apps-tillägget med hjälp av följande kommando:
az extension update --name spring
Logga in på Azure CLI och välj din aktiva prenumeration med hjälp av följande kommandon:
az login az account list --output table az account set --subscription <name-or-ID-of-subscription>
Använd följande kommandon för att skapa en resursgrupp som innehåller din Azure Spring Apps-tjänst och en instans av Azure Spring Apps-tjänsten:
az group create \ --name $AZ_RESOURCE_GROUP \ --location $AZ_LOCATION az spring create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_SPRING_APPS_SERVICE_NAME
Skapa en Azure-databasinstans
Använd följande steg för att etablera en Azure Database-instans.
Skapa en Azure Database for MySQL-server med hjälp av följande kommando:
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
Kommentar
Om du inte anger admin-user
eller admin-password
parametrar genererar systemet en standardadministratörsanvändare eller ett slumpmässigt administratörslösenord som standard.
Skapa en ny databas med hjälp av följande kommando:
az mysql flexible-server db create \ --resource-group $AZ_RESOURCE_GROUP \ --database-name $AZ_DATABASE_NAME \ --server-name $AZ_DATABASE_SERVER_NAME
Skapa en app med en offentlig slutpunkt tilldelad
Använd följande kommando för att skapa appen.
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
Anslut Azure Spring Apps till Azure-databasen
Installera först tillägget Service Anslut eller passwordless för Azure CLI:
az extension add --name serviceconnector-passwordless --upgrade
Använd sedan följande kommando för att skapa en användartilldelad hanterad identitet för Microsoft Entra-autentisering. Mer information finns i Konfigurera Microsoft Entra-autentisering för Azure Database for MySQL – flexibel server.
export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
--name $AZ_USER_IDENTITY_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--query id \
--output tsv)
Viktigt!
När du har skapat den användartilldelade identiteten ber du din globala administratör eller privilegierade rolladministratör att bevilja följande behörigheter för den här identiteten: User.Read.All
, GroupMember.Read.All
och Application.Read.ALL
. Mer information finns i avsnittet Behörigheter i Active Directory-autentisering.
Använd sedan följande kommando för att skapa en lösenordslös anslutning till databasen.
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
Det här Anslut eller-kommandot för tjänsten utför följande uppgifter i bakgrunden:
Aktivera systemtilldelad hanterad identitet för appen
$AZ_SPRING_APPS_APP_NAME
som hanteras av Azure Spring Apps.Ange Microsoft Entra-administratören till den aktuella inloggade användaren.
Lägg till en databasanvändare med namnet
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAME
för den hanterade identitet som skapades i steg 1 och bevilja alla behörigheter för databasen$AZ_DATABASE_NAME
till den här användaren.Lägg till två konfigurationer i appen
$AZ_SPRING_APPS_APP_NAME
:spring.datasource.url
ochspring.datasource.username
.Kommentar
Om du ser felmeddelandet
The subscription is not registered to use Microsoft.ServiceLinker
kör du kommandotaz provider register --namespace Microsoft.ServiceLinker
för att registrera tjänstprovidern Anslut eller resursprovidern och kör sedan anslutningskommandot igen.
Skapa och distribuera appen
Följande steg beskriver hur du laddar ned, konfigurerar, skapar och distribuerar exempelprogrammet.
Använd följande kommando för att klona exempelkodlagringsplatsen:
git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sample
Lägg till följande beroende i pom.xml-filen:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId> </dependency>
Det här beroendet lägger till stöd för Spring Cloud Azure Starter.
Kommentar
Mer information om hur du hanterar Spring Cloud Azure-biblioteksversioner med hjälp av en strukturliste (BOM) finns i avsnittet Komma igång i utvecklarguiden för Spring Cloud Azure.
Använd följande kommando för att uppdatera filen 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 EOF
Använd följande kommandon för att skapa projektet med maven:
cd passwordless-sample ./mvnw clean package -DskipTests
Använd följande kommando för att distribuera filen target/demo-0.0.1-SNAPSHOT.jar för appen:
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.jar
Fråga appens status efter distributionen med hjälp av följande kommando:
az spring app list \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --output table
Du bör se utdata som liknar följande exempel.
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 -
Testa programmet
Du kan testa appen med cURL. Skapa först ett nytt "att göra"-objekt i databasen med hjälp av följande kommando:
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
Det här kommandot returnerar det skapade objektet enligt följande exempel:
{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}
Hämta sedan data med hjälp av följande cURL-begäran:
curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Det här kommandot returnerar listan med "att göra"-objekt, inklusive det objekt som du har skapat, som du ser i följande exempel:
[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]
Rensa resurser
Om du vill rensa alla resurser som används under den här självstudien tar du bort resursgruppen med hjälp av följande kommando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes