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


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

A következőre vonatkozik: Azure SQL Database

Az Azure SQL Database-be irányuló alkalmazáskéréseket hitelesíteni kell. Bár az Azure SQL Database-hez való hitelesítésnek több lehetősége is van, lehetőség szerint fontossági sorrendbe kell helyeznie a jelszó nélküli kapcsolatokat az alkalmazásokban. A jelszavakat vagy titkos kulcsokat használó hagyományos hitelesítési módszerek biztonsági kockázatokat és bonyodalmakat okoznak. Látogasson el az Azure Services Hub jelszó nélküli kapcsolataira, és tudjon meg többet a jelszó nélküli kapcsolatokra való áttérés előnyeiről. Az alábbi oktatóanyag bemutatja, hogyan migrálhat egy meglévő Python-alkalmazást, hogy felhasználónév és jelszó helyett jelszó nélküli kapcsolatokat használjon az Azure SQL Database-hez való csatlakozáshoz.

Az Azure SQL Database konfigurálása

A jelszó nélküli kapcsolatok Microsoft Entra-hitelesítéssel csatlakoznak az Azure-szolgáltatásokhoz, beleértve az Azure SQL Database-t is. A Microsoft Entra-hitelesítéssel központi helyen kezelheti az identitásokat az engedélykezelés egyszerűsítése érdekében. További információ a Microsoft Entra-hitelesítés Azure SQL Database-hez való konfigurálásáról:

Ebben a migrálási útmutatóban győződjön meg arról, hogy rendelkezik egy Microsoft Entra-rendszergazdával az Azure SQL Database-hez.

  1. Lépjen a logikai kiszolgáló Microsoft Entra oldalára.

  2. Válassza a Rendszergazda beállítása lehetőséget a Microsoft Entra ID úszó menü megnyitásához.

  3. A Microsoft Entra ID úszó menüjében keresse meg a rendszergazdaként hozzárendelni kívánt felhasználót.

  4. Válassza ki a felhasználót, és válassza a Kiválasztás lehetőséget.

    A screenshot showing how to enable Microsoft Entra admin.

A helyi fejlesztési környezet konfigurálása

A jelszó nélküli kapcsolatok úgy konfigurálhatók, hogy helyi és Azure-beli környezetben is működjenek. Ebben a szakaszban konfigurációkat alkalmaz, amelyek lehetővé teszik az egyes felhasználók számára, hogy helyi fejlesztés céljából hitelesítsék magukat az Azure SQL Database-ben.

Bejelentkezés az Azure-ba

A helyi fejlesztéshez győződjön meg arról, hogy ugyanazzal az Azure AD-fiókkal jelentkezett be, amellyel hozzá szeretne férni az Azure SQL Database-hez. A hitelesítést olyan népszerű fejlesztői eszközökkel végezheti el, mint az Azure CLI vagy az Azure PowerShell. A hitelesítéshez használható fejlesztői eszközök különböző nyelveken eltérőek lehetnek.

Jelentkezzen be az Azure-ba az Azure CLI-vel a következő paranccsal:

az login

Adatbázis-felhasználó létrehozása és szerepkörök hozzárendelése

Hozzon létre egy felhasználót az Azure SQL Database-ben. A felhasználónak meg kell felelnie annak az Azure-fióknak, amelyet a helyi bejelentkezéshez használt az Azure-ba való bejelentkezéshez.

  1. Az Azure Portalon keresse meg az SQL-adatbázist, és válassza a Lekérdezésszerkesztő (előzetes verzió) lehetőséget.

  2. Válassza a Folytatás lehetőséget <your-username> a képernyő jobb oldalán az adatbázisba való bejelentkezéshez a fiókjával.

  3. A lekérdezésszerkesztő nézetben futtassa a következő T-SQL-parancsokat:

    CREATE USER [user@domain] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user@domain];
    ALTER ROLE db_datawriter ADD MEMBER [user@domain];
    ALTER ROLE db_ddladmin ADD MEMBER [user@domain];
    GO
    

    A screenshot showing how to use the Azure Query editor.

    A parancsok futtatása az SQL DB közreműködői szerepkörét rendeli hozzá a megadott fiókhoz. Ez a szerepkör lehetővé teszi az identitás számára az adatbázis adatainak és sémájának olvasását, írását és módosítását. A hozzárendelt szerepkörökről további információt a Rögzített adatbázis szerepkörök című témakörben talál.

A helyi kapcsolat konfigurációjának frissítése

A Python SQL Driver használatával az Azure SQL Database-hez csatlakozó meglévő alkalmazáskód – a pyodbc továbbra is jelszó nélküli kapcsolatokkal és kisebb módosításokkal működik. Az alábbi kód például az SQL-hitelesítéssel és a jelszó nélküli kapcsolatokkal is működik, amikor helyileg fut, és amikor az Azure-alkalmazás Szolgáltatásban van üzembe helyezve.

import os
import pyodbc, struct
from azure.identity import DefaultAzureCredential

connection_string = os.environ["AZURE_SQL_CONNECTIONSTRING"]

def get_all():
    with get_conn() as conn:
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM Persons")
        # Do something with the data
    return

def get_conn():
    credential = DefaultAzureCredential(exclude_interactive_browser_credential=False)
    token_bytes = credential.get_token("https://database.windows.net/.default").token.encode("UTF-16-LE")
    token_struct = struct.pack(f'<I{len(token_bytes)}s', len(token_bytes), token_bytes)
    SQL_COPT_SS_ACCESS_TOKEN = 1256  # This connection option is defined by microsoft in msodbcsql.h
    conn = pyodbc.connect(connection_string, attrs_before={SQL_COPT_SS_ACCESS_TOKEN: token_struct})
    return conn

Tipp.

Ebben a példakódban az App Service környezeti változója WEBSITE_HOSTNAME határozza meg, hogy milyen környezetben fut a kód. Más üzembe helyezési forgatókönyvek esetén más környezeti változók használatával határozhatja meg a környezetet.

A hivatkozott kapcsolati sztring (AZURE_SQL_CONNECTIONSTRING) helyi fejlesztéshez való frissítéséhez használja a jelszó nélküli kapcsolati sztring formátumot:

Driver={ODBC Driver 18 for SQL Server};Server=tcp:<database-server-name>.database.windows.net,1433;Database=<database-name>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30

Az alkalmazás tesztelése

Futtassa az alkalmazást helyileg, és ellenőrizze, hogy az Azure SQL Database-hez való kapcsolatok a várt módon működnek-e. Ne feledje, hogy az Azure-felhasználók és szerepkörök módosításainak az Azure-környezetben való propagálása több percet is igénybe vehet. Az alkalmazás mostantól úgy van konfigurálva, hogy helyileg fusson anélkül, hogy a fejlesztőknek titkos kulcsokat kellene kezelnie az alkalmazásban.

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

Miután az alkalmazás konfigurálva lett a jelszó nélküli kapcsolatok helyi használatára, ugyanaz a kód hitelesíthető az Azure SQL Database-ben az Azure-ban való üzembe helyezés után. Az alábbi szakaszok bemutatják, hogyan konfigurálhat egy üzembe helyezett alkalmazást az Azure SQL Database-hez felügyelt identitással való csatlakozáshoz. A felügyelt identitások automatikusan felügyelt identitást biztosítanak a Microsoft Entra-azonosítóban (korábbi nevén Azure Active Directory) az alkalmazások számára a Microsoft Entra-hitelesítést támogató erőforrásokhoz való csatlakozáshoz. További információ a felügyelt identitásokról:

A felügyelt identitás létrehozása

Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást az Azure Portal vagy az Azure CLI használatával. Az alkalmazás az identitás használatával hitelesíti magát más szolgáltatásokban.

  1. Az Azure Portal tetején keressen felügyelt identitásokat. Válassza ki a felügyelt identitások eredményét.
  2. Válassza a +Létrehozás lehetőséget a Felügyelt identitások áttekintő oldal tetején.
  3. Az Alapok lapon adja meg a következő értékeket:
    • Előfizetés: Válassza ki a kívánt előfizetést.
    • Erőforráscsoport: Válassza ki a kívánt erőforráscsoportot.
    • Régió: Válasszon ki egy régiót a tartózkodási helyéhez közel.
    • Név: Adjon meg egy felismerhető nevet az identitásának, például a MigrationIdentity nevet.
  4. Válassza a Véleményezés + létrehozás lehetőséget a lap alján.
  5. Amikor az ellenőrzés befejeződött, válassza a Létrehozás lehetőséget. Az Azure létrehoz egy új, felhasználó által hozzárendelt identitást.

Az erőforrás létrehozása után válassza az Ugrás az erőforrásra lehetőséget a felügyelt identitás részleteinek megtekintéséhez.

A screenshot showing how to create a managed identity using the Azure portal.

Felügyelt identitás társítása a webalkalmazással

Konfigurálja a webalkalmazást a létrehozott felhasználó által hozzárendelt felügyelt identitás használatára.

Hajtsa végre az alábbi lépéseket az Azure Portalon a felhasználó által hozzárendelt felügyelt identitás alkalmazáshoz való társításához. Ugyanezek a lépések a következő Azure-szolgáltatásokra vonatkoznak:

  • Azure Spring Apps
  • Azure Container-alkalmazások
  • Azure-beli virtuális gépek
  • Azure Kubernetes Service
  • Lépjen a webalkalmazás áttekintő oldalára.
  1. Válassza az Identitás lehetőséget a bal oldali navigációs sávon.

  2. Az Identitás lapon váltson a Felhasználó által hozzárendelt lapra.

  3. Válassza a + Hozzáadás lehetőséget a Felhasználó által hozzárendelt felügyelt identitás hozzáadása úszó panel megnyitásához.

  4. Válassza ki az identitás létrehozásához korábban használt előfizetést.

  5. Keresse meg a MigrationIdentity nevet, és válassza ki a keresési eredmények közül.

  6. A Hozzáadás gombra kattintva társíthatja az identitást az alkalmazással.

    A screenshot showing how to assign a managed identity.

Adatbázis-felhasználó létrehozása az identitáshoz és szerepkörök hozzárendelése

Hozzon létre egy SQL-adatbázis-felhasználót, amely visszaképzhető a felhasználó által hozzárendelt felügyelt identitásra. Rendelje hozzá a szükséges SQL-szerepköröket a felhasználóhoz, hogy lehetővé tegye az alkalmazás számára az adatbázis adatainak és sémájának olvasását, írását és módosítását.

  1. Az Azure Portalon keresse meg az SQL-adatbázist, és válassza a Lekérdezésszerkesztő (előzetes verzió) lehetőséget.

  2. Válassza a Folytatás lehetőséget <username> a képernyő jobb oldalán az adatbázisba való bejelentkezéshez a fiókjával.

  3. A lekérdezésszerkesztő nézetben futtassa a következő T-SQL-parancsokat:

    CREATE USER [user-assigned-identity-name] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_datawriter ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_ddladmin ADD MEMBER [user-assigned-identity-name];
    GO
    

    A screenshot showing how to use the Azure Query editor to create a SQL user for a managed identity.

    A parancsok futtatása az SQL DB közreműködői szerepkörét rendeli hozzá a felhasználó által hozzárendelt felügyelt identitáshoz. Ez a szerepkör lehetővé teszi az identitás számára az adatbázis adatainak és sémájának olvasását, írását és módosítását.


Fontos

Körültekintően rendeljen hozzá adatbázis-felhasználói szerepköröket vállalati éles környezetekben. Ezekben az esetekben az alkalmazás nem végezhet el minden műveletet egyetlen emelt szintű identitás használatával. Próbálja meg implementálni a minimális jogosultság elvét úgy, hogy több identitást konfigurál meghatározott engedélyekkel adott feladatokhoz.

Az adatbázis-szerepkörök és a biztonság konfigurálásáról az alábbi forrásokban olvashat bővebben:

A kapcsolati sztring frissítése

Frissítse az Azure-alkalmazás konfigurációját a jelszó nélküli kapcsolati sztring formátum használatára. A formátumnak meg kell egyeznie a helyi környezetben használt formátummal.

Csatlakozás ion-sztringek környezeti változóként tárolhatók az alkalmazásüzemeltetési környezetben. Az alábbi utasítások az App Service-ra összpontosítanak, de más Azure-üzemeltetési szolgáltatások is hasonló konfigurációkat biztosítanak.

Driver={ODBC Driver 18 for SQL Server};Server=tcp:<database-server-name>.database.windows.net,1433;Database=<database-name>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30

<database-server-name> az Azure SQL Database-kiszolgáló neve, és <database-name> az Azure SQL Database neve.

Alkalmazásbeállítás létrehozása a felügyelt identitás ügyfélazonosítója számára

A felhasználó által hozzárendelt felügyelt identitás használatához hozzon létre egy AZURE_CLIENT_ID környezeti változót, és állítsa be a felügyelt identitás ügyfélazonosítójával egyenlőre. Ezt a változót az alkalmazás Konfiguráció szakaszában állíthatja be az Azure Portalon. Az ügyfél-azonosítót a felügyelt identitás erőforrásának Áttekintés szakaszában találja az Azure Portalon.

Mentse a módosításokat, és indítsa újra az alkalmazást, ha nem teszi meg automatikusan.

Megjegyzés:

Az áttelepítési útmutatóban látható példa kapcsolatkód a DefaultAzureCredential osztályt használja üzembe helyezéskor. Pontosabban a DefaultAzureCredential értéket használja anélkül, hogy a felhasználó által hozzárendelt felügyelt identitás ügyfélazonosítóját átadta volna a konstruktornak. Ebben a forgatókönyvben a tartalék az AZURE_CLIENT_ID környezeti változó ellenőrzése. Ha a AZURE_CLIENT_ID környezeti változó nem létezik, a rendszer által hozzárendelt felügyelt identitás lesz használva, ha konfigurálva van.

Ha átadja a felügyelt identitás ügyfél-azonosítóját a DefaultAzureCredential konstruktorban, a kapcsolatkód továbbra is használható helyben és üzembe helyezhető, mert a hitelesítési folyamat visszaválik az interaktív hitelesítésre a helyi forgatókönyvben. További információkért tekintse meg a Pythonhoz készült Azure Identity-ügyfélkódtárat.

Az alkalmazás tesztelése

Tesztelje az alkalmazást, és győződjön meg arról, hogy minden működik. Eltarthat néhány percig, amíg az összes módosítás propagálása az Azure-környezetben történik.

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: