Share via


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 authentication

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éssel 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, ezeket a hitelesítő adatokat a rendszer a sys.database_principals táblában tárolja. Mivel ezek a jelszavak az Azure SQL Database-ben vannak tárolva, saját maga kell kezelnie a jelszavak rotálását.

Bár jelszóval is lehet csatlakozni az Azure SQL Database-hez, óvatosan használja őket. Szorgalmasnak kell lennie, 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. Fennáll például annak a veszélye, hogy egy rosszindulatú felhasználó hozzáférhet az alkalmazáshoz, ha egy kapcsolati sztring véletlenül be van jelentkezve a forrásvezérlőbe, nem biztonságos e-mailben küldi el, nem megfelelő csevegésbe illeszti be, vagy olyan személy tekinti meg, akinek nem kellene engedéllyel rendelkeznie. 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 alternatív megoldások, például kapcsolati sztring helyett használjonDefaultAzureCredential.

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 az áttűnéshez 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 éles környezetet is. Ha mindkét helyen szükség van egy kapcsolati sztring, 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ás kezelését az Azure-platform végzi, és nem szükséges hozzá semmilyen titkos kulcs kiosztása vagy rotálása. A felügyelt identitásokról az áttekintési dokumentációban olvashat bővebben.

Megjegyzés:

Mivel az 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 az Azure-beli ü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)

A helyőrzőket írja felül a következő értékekkel, amelyeket a cikk teljes további részében használni fogunk:

  • <YOUR_RESOURCE_GROUP>: Annak az erőforráscsoportnak a neve, amelyben az erőforrások találhatók.
  • <YOUR_DATABASE_SERVER_NAME>: Az Azure SQL Database-kiszolgáló neve. Az Azure-on belül 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

A Microsoft Entra ID-hozzáférés azure SQL Database-hez való használatához először a Microsoft Entra rendszergazda felhasználóját kell beállítania. Csak egy Microsoft Entra Rendszergazda felhasználó hozhat létre/engedélyezhet felhasználókat a Microsoft Entra ID-alapú hitelesítéshez.

Ha Azure CLI-t használ, futtassa a következő parancsot, hogy meggyőződjön arról, hogy rendelkezik-e megfelelő engedéllyel:

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 a Microsoft Entra rendszergazdát az aktuális bejelentkezett felhasználóra állítja.

Megjegyzés:

Azure SQL Database-kiszolgálónként csak egy Microsoft Entra-rendszergazda hozható létre. Ha kiválaszt egy másikat, felülírja a kiszolgálóhoz konfigurált Meglévő Microsoft Entra-rendszergazdat.

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 és távolítsa el a userpassword JDBC URL-címét.

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

Miután az alkalmazás jelszó nélküli kapcsolatok használatára lett konfigurálva, ugyanez a kód hitelesíthető az Azure-szolgáltatásokban az Azure-ban való üzembe helyezés után. Egy felügyelt identitással rendelkező Azure-alkalmazás szolgáltatáspéldányon üzembe helyezett alkalmazás például csatlakozhat az Azure Storage-hoz.

Ebben a szakaszban két lépést kell végrehajtania, hogy az alkalmazás jelszó nélküli azure-beli üzemeltetési környezetben fusson:

  • 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 Csatlakozás or szolgáltatást is biztosít, amely segíthet csatlakoztatni az üzemeltetési szolgáltatást az SQL Serverrel. Ha a Service Csatlakozás or 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 Csatlakozás or ezt megteszi Ön helyett. A következő szakasz azt ismerteti, hogyan konfigurálhatja az Azure-beli üzemeltetési környezetet kétféleképpen: az egyiket a Service Csatlakozás oron keresztül, a másikat pedig az egyes üzemeltetési környezetek közvetlen konfigurálásával.

Fontos

A szolgáltatás Csatlakozás or 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. A Azure-alkalmazás szolgáltatáspéldány fő áttekintő lapján válassza az Identitás lehetőséget a navigációs panelen.

  2. A Rendszerhez rendelt lapon állítsa be az Állapot mezőt. 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.

    Screenshot of Azure portal Identity page of App Service resource with System assigned tab showing and Status field highlighted.

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-alkalmazás szolgáltatáspé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 Csatlakozás or használatával kapcsolta össze a szolgáltatásokat, az előző lépés parancsai 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. Ne feledje, hogy eltarthat néhány percig, amíg a szerepkör-hozzárendelések propagálása az Azure-környezetben történik. 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.

További 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 olvassa el az alábbi forrásokat: