Megosztás a következőn keresztül:


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

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.

  1. 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>
    
  2. 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
    
  3. 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
    
  4. 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.

  1. 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
    
  2. 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"
    
  3. 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.