Oktatóanyag: Csatlakozás PostgreSQL-adatbázishoz a Java Tomcat App Service-ből titkos kódok nélkül felügyelt identitás használatával
Azure-alkalmazás Szolgáltatás egy nagy mértékben méretezhető, önjavító web hosting szolgáltatást biztosít az Azure-ban. Emellett egy felügyelt identitást is biztosít az alkalmazás számára, amely kulcsrakész megoldás az Azure Database for PostgreSQL-hez és más Azure-szolgáltatásokhoz való hozzáférés biztosításához. Az App Service felügyelt identitásai biztonságosabbá teszik az alkalmazást azáltal, hogy eltávolítják az alkalmazás titkos kulcsait, például a környezeti változók hitelesítő adatait. Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Hozzon létre egy PostgreSQL-adatbázist.
- A mintaalkalmazás üzembe helyezése a Tomcat szolgáltatás Azure-alkalmazás WAR-csomagolással.
- Konfiguráljon egy Tomcat-webalkalmazást a Microsoft Entra-hitelesítés és a PostgreSQL Database használatára.
- Csatlakozzon a PostgreSQL-adatbázishoz felügyelt identitással a Service Connector használatával.
Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.
Előfeltételek
- Git
- Java JDK
- Maven
- Az Azure CLI 2.45.0-s vagy újabb verziója.
Klónozza a mintaalkalmazást, és készítse elő az adattárat
Futtassa az alábbi parancsokat a terminálban a mintaadattár klónozásához és a mintaalkalmazás-környezet beállításához.
git clone https://github.com/Azure-Samples/Passwordless-Connections-for-Java-Apps
cd Passwordless-Connections-for-Java-Apps/Tomcat/
Azure-adatbázis létrehozása PostgreSQL-hez
Az alábbi lépéseket követve hozzon létre egy Azure Database for Postgres-adatbázist az előfizetésében. A Tomcat alkalmazás csatlakozik ehhez az adatbázishoz, és futtatáskor tárolja az adatait, és az alkalmazás állapotát megőrzi, függetlenül attól, hogy hol futtatja az alkalmazást.
Jelentkezzen be az Azure CLI-be, és igény szerint állítsa be előfizetését, ha többen csatlakoznak a bejelentkezési hitelesítő adataihoz.
az login az account set --subscription <subscription-ID>
Hozzon létre egy Azure-erőforráscsoportot az erőforráscsoport nevének megjelölésével.
export RESOURCE_GROUP=<resource-group-name> export LOCATION=eastus az group create --name $RESOURCE_GROUP --location $LOCATION
Azure Database for PostgreSQL-kiszolgáló létrehozása. A kiszolgáló rendszergazdai fiókkal jön létre, de nem használja, mert a Microsoft Entra rendszergazdai fiókját fogjuk használni rendszergazdai feladatok elvégzéséhez.
export POSTGRESQL_ADMIN_USER=azureuser # PostgreSQL admin access rights won't be used because Azure AD authentication is leveraged to administer the database. export POSTGRESQL_ADMIN_PASSWORD=<admin-password> export POSTGRESQL_HOST=<postgresql-host-name> # Create a PostgreSQL server. az postgres flexible-server create \ --resource-group $RESOURCE_GROUP \ --name $POSTGRESQL_HOST \ --location $LOCATION \ --admin-user $POSTGRESQL_ADMIN_USER \ --admin-password $POSTGRESQL_ADMIN_PASSWORD \ --public-access 0.0.0.0 \ --sku-name Standard_D2s_v3
Hozzon létre egy adatbázist az alkalmazáshoz.
export DATABASE_NAME=checklist az postgres flexible-server db create \ --resource-group $RESOURCE_GROUP \ --server-name $POSTGRESQL_HOST \ --database-name $DATABASE_NAME
Az alkalmazás üzembe helyezése az App Service-ben
Ezeket a lépéseket követve hozzon létre egy WAR-fájlt, és helyezze üzembe a Azure-alkalmazás Tomcat szolgáltatásban EGY WAR-csomagolás használatával.
A mintaalkalmazás tartalmaz egy pom.xml fájlt, amely képes létrehozni a WAR fájlt. Futtassa a következő parancsot az alkalmazás létrehozásához.
mvn clean package -f pom.xml
Hozzon létre egy Azure-alkalmazás szolgáltatáserőforrást Linuxon a Tomcat 9.0 használatával.
export APPSERVICE_PLAN=<app-service-plan> export APPSERVICE_NAME=<app-service-name> # Create an App Service plan az appservice plan create \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_PLAN \ --location $LOCATION \ --sku B1 \ --is-linux # Create an App Service resource. az webapp create \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_NAME \ --plan $APPSERVICE_PLAN \ --runtime "TOMCAT:10.0-java11"
Telepítse a WAR-csomagot az App Service-ben.
az webapp deploy \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_NAME \ --src-path target/app.war \ --type war
A Postgres-adatbázis csatlakoztatása identitáskapcsolattal
Ezután csatlakoztassa az adatbázist a Service Connector használatával.
Telepítse a Service Connector jelszó nélküli bővítményét az Azure CLI-hez:
az extension add --name serviceconnector-passwordless --upgrade
Ezután csatlakoztassa az alkalmazást egy Postgres-adatbázishoz egy rendszer által hozzárendelt felügyelt identitással a Service Connector használatával.
A kapcsolat létrehozásához futtassa az az webapp connection create parancsot.
az webapp connection create postgres-flexible \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
--target-resource-group $RESOURCE_GROUP \
--server $POSTGRESQL_HOST \
--database $DATABASE_NAME \
--system-identity \
--client-type java
Ez a parancs kapcsolatot hoz létre a webalkalmazás és a PostgreSQL-kiszolgáló között, és egy rendszer által hozzárendelt felügyelt identitáson keresztül kezeli a hitelesítést.
Ezután frissítse az alkalmazásbeállításokat, és adja hozzá a beépülő modult a kapcsolati sztring
export AZURE_POSTGRESQL_CONNECTIONSTRING=$(\
az webapp config appsettings list \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
| jq -c -r '.[] \
| select ( .name == "AZURE_POSTGRESQL_CONNECTIONSTRING" ) \
| .value')
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
--settings 'CATALINA_OPTS=-DdbUrl="'"${AZURE_POSTGRESQL_CONNECTIONSTRING}"'&authenticationPluginClassName=com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin"'
A minta-webalkalmazás tesztelése
Futtassa a következő parancsot az alkalmazás teszteléséhez.
export WEBAPP_URL=$(az webapp show \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
--query defaultHostName \
--output tsv)
# Create a list
curl -X POST -H "Content-Type: application/json" -d '{"name": "list1","date": "2022-03-21T00:00:00","description": "Sample checklist"}' https://${WEBAPP_URL}/checklist
# Create few items on the list 1
curl -X POST -H "Content-Type: application/json" -d '{"description": "item 1"}' https://${WEBAPP_URL}/checklist/1/item
curl -X POST -H "Content-Type: application/json" -d '{"description": "item 2"}' https://${WEBAPP_URL}/checklist/1/item
curl -X POST -H "Content-Type: application/json" -d '{"description": "item 3"}' https://${WEBAPP_URL}/checklist/1/item
# Get all lists
curl https://${WEBAPP_URL}/checklist
# Get list 1
curl https://${WEBAPP_URL}/checklist/1
Az erőforrások eltávolítása
Az előző lépésekben Azure-erőforrásokat hozott létre egy erőforráscsoportban. Ha várhatóan nem lesz szüksége ezekre az erőforrásokra a jövőben, törölje az erőforráscsoportot a következő parancs Cloud Shellben történő futtatásával:
az group delete --name myResourceGroup
A parancs futtatása egy percig is eltarthat.
Következő lépések
A fejlesztői útmutatóban további információt olvashat a Java-alkalmazások Linuxon futó App Service-en való futtatásáról.
Megtudhatja, hogyan védheti meg az alkalmazást egyéni tartománnyal és tanúsítvánnyal.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: