Java-alkalmazás migrálása jelszó nélküli kapcsolatok használatára az Azure SQL Database-lel

Ez a cikk bemutatja, hogyan migrálhat a hagyományos hitelesítési módszerekről az Azure SQL Database-beli biztonságosabb, jelszó nélküli kapcsolatokra.

Az Azure SQL Database-be irányuló alkalmazáskéréseket hitelesíteni kell. Az Azure SQL Database számos különböző módszert kínál az alkalmazások biztonságos csatlakoztatására. Az egyik módszer a jelszavak használata. Lehetőség szerint azonban fontossági sorrendbe kell helyeznie a jelszó nélküli kapcsolatokat az alkalmazásokban.

Hitelesítési beállítások összehasonlítása

Amikor az alkalmazás az Azure SQL Database-vel hitelesít, egy felhasználónév- és jelszópárt biztosít az adatbázishoz való csatlakozáshoz. Az identitások tárolási helyétől függően kétféle hitelesítés létezik: Microsoft Entra-hitelesítés és Azure SQL Database-hitelesítés.

Microsoft Entra-hitelesítés

A Microsoft Entra-hitelesítés az Azure SQL Database-hez a Microsoft Entra ID-ban definiált identitások használatával történő csatlakozás mechanizmusa. A Microsoft Entra hitelesítés használatával központi helyen kezelheti az adatbázis felhasználói identitásait és más Microsoft-szolgáltatások, ami leegyszerűsíti az engedélykezelést.

A Microsoft Entra ID hitelesítéshez való használata a következő előnyöket nyújtja:

  • A felhasználók hitelesítése az Azure Servicesben egységes módon.
  • Jelszószabályzatok és jelszóváltás kezelése egyetlen helyen.
  • A Microsoft Entra ID által támogatott hitelesítés több formája, amelyek szükségtelenné tehetik a jelszavak tárolását.
  • Az ügyfelek külső (Microsoft Entra ID) csoportokkal kezelhetik az adatbázis-engedélyeket.
  • A Microsoft Entra-hitelesítés az Azure SQL-adatbázis felhasználóival hitelesíti az identitásokat az adatbázis szintjén.
  • Az Azure SQL Database-hez csatlakozó alkalmazások jogkivonatalapú hitelesítésének támogatása.

Azure SQL Database-hitelesítés

Létrehozhat fiókokat az Azure SQL Database-ben. Ha jelszavakat használ a fiókok hitelesítő adataiként, a tábla tárolja ezeket a sys.database_principals hitelesítő adatokat. Mivel Azure SQL Database ezeket a jelszavakat tárolja, saját maga kell kezelnie a jelszavak rotálását.

Bár jelszóval csatlakozhat Azure SQL Database, óvatosan használja őket. Ügyeljen arra, hogy soha ne tegye elérhetővé a jelszavakat nem biztonságos helyen. Bárki, aki hozzáfér a jelszavakhoz, hitelesítheti magát. Ha például véletlenül betesz egy kapcsolati karakterláncot a verziókövetőbe, elküldi egy nem biztonságos e-mailben, bemásolja a rossz csevegésbe, vagy olyan személy látja, akinek nem lenne jogosultsága hozzá, egy rosszindulatú felhasználó hozzáférhet az alkalmazáshoz. Ehelyett fontolja meg az alkalmazás jelszó nélküli kapcsolatok használatára való frissítését.

Jelszó nélküli kapcsolatok bemutatása

Jelszó nélküli kapcsolattal anélkül csatlakozhat az Azure-szolgáltatásokhoz, hogy az alkalmazáskódban, annak konfigurációs fájljaiban vagy környezeti változóiban bármilyen hitelesítő adatot tárol.

Számos Azure-szolgáltatás támogatja a jelszó nélküli kapcsolatokat, például az Azure Managed Identity használatával. Ezek a technikák robusztus biztonsági funkciókat biztosítanak, amelyeket az Azure Identity-ügyfélkódtárak DefaultAzureCredential használatával valósíthat meg. Ebben az oktatóanyagban megtanulhatja, hogyan frissíthet egy meglévő alkalmazást, hogy DefaultAzureCredential-t használjon a kapcsolati sztringekhez hasonló alternatívák helyett.

DefaultAzureCredential több hitelesítési módszert támogat, és automatikusan meghatározza, hogy melyiket érdemes futtatókörnyezetben használni. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (helyi fejlesztés és éles környezet) környezetspecifikus kód implementálása nélkül.

A hitelesítő adatok keresésének sorrendje és helyei DefaultAzureCredential megtalálhatók az Azure Identity Library áttekintésében. Ha például helyileg dolgozik, általában azzal a fiókkal hitelesít, DefaultAzureCredential amellyel a fejlesztő bejelentkezett a Visual Studióba. Az alkalmazás Azure-ban DefaultAzureCredential való üzembe helyezésekor automatikusan átvált felügyelt identitás használatára. Ehhez a váltáshoz nincs szükség kódmódosításra.

Annak érdekében, hogy a kapcsolatok jelszó nélküliek legyenek, figyelembe kell vennie a helyi fejlesztést és az üzemi környezetet is. Ha mindkét helyen kapcsolati sztringre van szükség, akkor az alkalmazás nem jelszó nélküli.

A helyi fejlesztési környezetben hitelesítheti magát az Azure CLI, az Azure PowerShell, a Visual Studio vagy a Visual Studio Code vagy az IntelliJ Azure beépülő moduljaival. Ebben az esetben ezt a hitelesítő adatot használhatja az alkalmazásban a tulajdonságok konfigurálása helyett.

Amikor alkalmazásokat helyez üzembe egy Azure-beli üzemeltetési környezetben, például egy virtuális gépen, hozzárendelhet felügyelt identitást ebben a környezetben. Ezután nem kell hitelesítő adatokat megadnia az Azure-szolgáltatásokhoz való csatlakozáshoz.

Megjegyzés:

A felügyelt identitás biztonsági identitást biztosít egy alkalmazás vagy szolgáltatás megjelenítéséhez. Az identitást az Azure platform kezeli, és nem követeli meg, hogy titkos kulcsokat építsen ki vagy forgassa el. A felügyelt identitásokról az áttekintési dokumentációban olvashat bővebben.

Megjegyzés:

Mivel a Azure SQL Database JDBC-illesztője még nem támogatja a helyi környezetekből származó jelszó nélküli kapcsolatokat, ez a cikk csak a Azure üzemeltetési környezetekben üzembe helyezett alkalmazásokra és a jelszó nélküli kapcsolatok használatára való migrálásukra összpontosít.

Meglévő alkalmazás migrálása jelszó nélküli kapcsolatok használatára

Az alábbi lépések azt ismertetik, hogyan migrálhat egy meglévő alkalmazást jelszó nélküli kapcsolatok használatára jelszóalapú megoldás helyett.

0) A munkakörnyezet előkészítése

Először a következő paranccsal állítson be néhány környezeti változót.

export AZ_RESOURCE_GROUP=<YOUR_RESOURCE_GROUP>
export AZ_DATABASE_SERVER_NAME=<YOUR_DATABASE_SERVER_NAME>
export AZ_DATABASE_NAME=demo
export CURRENT_USERNAME=$(az ad signed-in-user show --query userPrincipalName --output tsv)
export CURRENT_USER_OBJECTID=$(az ad signed-in-user show --query id --output tsv)

Cserélje le a helyőrzőket a jelen cikkben használt alábbi értékekre:

  • <YOUR_RESOURCE_GROUP>: Az erőforrások erőforráscsoportjának neve.
  • <YOUR_DATABASE_SERVER_NAME>: Az Azure SQL Database-kiszolgáló neve. Az Azure-ban egyedinek kell lennie.

1) Az Azure SQL Database konfigurálása

1.1) A Microsoft Entra ID-alapú hitelesítésének engedélyezése

Ha Microsoft Entra ID hozzáférést szeretne használni Azure SQL Database, először állítsa be a Microsoft Entra rendszergazda felhasználót. Csak egy Microsoft Entra rendszergazdai felhasználó hozhat létre vagy engedélyezhet felhasználókat Microsoft Entra ID alapú hitelesítéshez.

Ha Azure CLI használ, futtassa a következő parancsot, és győződjön meg arról, hogy megfelelő engedéllyel rendelkezik:

az login --scope https://graph.microsoft.com/.default

Ezután futtassa a következő parancsot a Microsoft Entra rendszergazdájának beállításához:

az sql server ad-admin create \
    --resource-group $AZ_RESOURCE_GROUP \
    --server $AZ_DATABASE_SERVER_NAME \
    --display-name $CURRENT_USERNAME \
    --object-id $CURRENT_USER_OBJECTID

Ez a parancs beállítja a Microsoft Entra rendszergazdát az aktuális bejelentkezett felhasználóra.

Megjegyzés:

Azure SQL Database-kiszolgálónként csak egy Microsoft Entra-rendszergazda hozható létre. Egy másik rendszergazda kiválasztása felülírja a kiszolgálóhoz konfigurált meglévő Microsoft Entra rendszergazdát.

2) Az alkalmazáskód áttelepítése jelszó nélküli kapcsolatok használatára

Ezután a következő lépésekkel frissítse a kódot jelszó nélküli kapcsolatok használatára. Bár elméletileg hasonló, minden nyelv különböző megvalósítási részleteket használ.

  1. A projekten belül adja hozzá a következő hivatkozást a azure-identity csomaghoz. Ez a kódtár tartalmazza a jelszó nélküli kapcsolatok megvalósításához szükséges összes entitást.

    <dependency>
         <groupId>com.azure</groupId>
         <artifactId>azure-identity</artifactId>
         <version>1.5.4</version>
    </dependency>
    
  2. Engedélyezze a Microsoft Entra által felügyelt identitáshitelesítést a JDBC URL.v-ben. Azonosítsa a kód azon helyeit, amelyek jelenleg létrehoznak egy java.sql.Connection , az Azure SQL Database-hez való csatlakozásra szolgáló helyet. Frissítse a kódot a következő példának megfelelően:

    String url = "jdbc:sqlserver://$AZ_DATABASE_SERVER_NAME.database.windows.net:1433;databaseName=$AZ_DATABASE_NAME;authentication=ActiveDirectoryMSI;"   
    Connection con = DriverManager.getConnection(url);
    
  3. Cserélje le a két $AZ_DATABASE_SERVER_NAME változót és egy $AZ_DATABASE_NAME változót a cikk elején konfigurált értékekre.

  4. Távolítsa el a user és password címkéket a JDBC URL-ből.

3) Az Azure-beli üzemeltetési környezet konfigurálása

Miután úgy konfigurálta az alkalmazását, hogy jelszó nélküli kapcsolatokat használjon, ugyanaz a kód az Azure-ba történő üzembe helyezés után is használható az Azure-szolgáltatásokhoz való hitelesítésre. Egy felügyelt identitással rendelkező Azure App Service-példányon üzembe helyezett alkalmazás például csatlakozhat az Azure Storage-hoz.

Ebben a szakaszban két lépést hajt végre, hogy az alkalmazás jelszó nélküli módon fusson Azure üzemeltetési környezetben:

  • Rendelje hozzá a felügyelt identitást az Azure-beli üzemeltetési környezethez.
  • Szerepkörök hozzárendelése a felügyelt identitáshoz.

Megjegyzés:

Az Azure szolgáltatás-összekötőt is biztosít, amely segíthet csatlakoztatni az üzemeltetési szolgáltatást az SQL Serverrel. Ha a Service Connector használatával konfigurálja az üzemeltetési környezetet, kihagyhatja a szerepkörök felügyelt identitáshoz való hozzárendelésének lépését, mert a Service Connector elvégzi Önnek. Az alábbi szakasz azt ismerteti, hogyan konfigurálhatja az Azure-beli üzemeltetési környezetet kétféleképpen: az egyiket a Service Connectoron keresztül, a másikat pedig az egyes üzemeltetési környezetek közvetlen konfigurálásával.

Fontos

A Service Connector parancsaihoz az Azure CLI 2.41.0-s vagy újabb verziója szükséges.

Felügyelt identitás hozzárendelése az Azure Portalon

Az alábbi lépések bemutatják, hogyan rendelhet hozzá rendszer által hozzárendelt felügyelt identitást a különböző web hosting szolgáltatásokhoz. A felügyelt identitás biztonságosan csatlakozhat más Azure szolgáltatásokhoz a korábban beállított alkalmazáskonfigurációk használatával.

  1. Az Azure App Service-példány fő áttekintési lapján válassza az Identitás lehetőséget a navigációs panelen.

  2. A Rendszerhez rendelt lapon győződjön meg arról, hogy az Állapot mező bekapcsolva legyen. A rendszer által hozzárendelt identitásokat az Azure belsőleg kezeli, és rendszergazdai feladatokat kezel Önnek. Az identitás részletei és azonosítói soha nem jelennek meg a kódban.

Felügyelt identitást is hozzárendelhet egy Azure-beli üzemeltetési környezethez az Azure CLI használatával.

Felügyelt identitást rendelhet egy Azure App Service-példányhoz az az webapp identity assign paranccsal, ahogyan az az alábbi példában látható:

export AZ_MI_OBJECT_ID=$(az webapp identity assign \
    --resource-group $AZ_RESOURCE_GROUP \
    --name <service-instance-name> \
    --query principalId \
    --output tsv)

Szerepkörök hozzárendelése a felügyelt identitáshoz

Ezután adjon engedélyeket az SQL-adatbázis eléréséhez létrehozott felügyelt identitáshoz.

Ha a Szolgáltatásösszekötő használatával kapcsolta össze a szolgáltatásokat, az előző lépésben szereplő parancsok már hozzárendelték a szerepkört, így kihagyhatja ezt a lépést.

Az alkalmazás tesztelése

A kódmódosítások elvégzése után létrehozhatja és újra üzembe helyezheti az alkalmazást. Ezután keresse meg az üzemeltetett alkalmazást a böngészőben. Az alkalmazásnak sikeresen csatlakoznia kell az Azure SQL-adatbázishoz. A szerepkör-hozzárendelések propagálása a Azure környezetben több percig is eltarthat. Az alkalmazás mostantól úgy van konfigurálva, hogy helyileg és éles környezetben is fusson anélkül, hogy a fejlesztőknek titkos kulcsokat kellene kezelnie az alkalmazásban.

Következő lépések

Ebben az oktatóanyagban megtanulta, hogyan migrálhat egy alkalmazást jelszó nélküli kapcsolatokba.

A cikkben tárgyalt fogalmak részletesebb megismeréséhez tekintse meg a következő forrásokat: