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.
Lépjen a logikai kiszolgáló Microsoft Entra oldalára.
Válassza a Rendszergazda beállítása lehetőséget a Microsoft Entra ID úszó menü megnyitásához.
A Microsoft Entra ID úszó menüjében keresse meg a rendszergazdaként hozzárendelni kívánt felhasználót.
Válassza ki a felhasználót, és válassza a Kiválasztás lehetőséget.
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.
Az Azure Portalon keresse meg az SQL-adatbázist, és válassza a Lekérdezésszerkesztő (előzetes verzió) lehetőséget.
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.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 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.
- Az Azure Portal tetején keressen felügyelt identitásokat. Válassza ki a felügyelt identitások eredményét.
- Válassza a +Létrehozás lehetőséget a Felügyelt identitások áttekintő oldal tetején.
- 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.
- Válassza a Véleményezés + létrehozás lehetőséget a lap alján.
- 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.
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.
Válassza az Identitás lehetőséget a bal oldali navigációs sávon.
Az Identitás lapon váltson a Felhasználó által hozzárendelt lapra.
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.
Válassza ki az identitás létrehozásához korábban használt előfizetést.
Keresse meg a MigrationIdentity nevet, és válassza ki a keresési eredmények közül.
A Hozzáadás gombra kattintva társíthatja az identitást az alkalmazással.
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.
Az Azure Portalon keresse meg az SQL-adatbázist, és válassza a Lekérdezésszerkesztő (előzetes verzió) lehetőséget.
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.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 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: