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


Oktatóanyag: App Service-alkalmazás csatlakoztatása az SQL Database-hez a bejelentkezett felhasználó nevében

Ez az oktatóanyag bemutatja, hogyan csatlakoztathat egy Azure App Service-alkalmazást egy háttérbeli Azure SQL-adatbázishoz a bejelentkezett felhasználó megszemélyesítésével, más néven a folyamat nevében. A folyamat konfigurálásához engedélyezze az App Service beépített hitelesítését a Microsoft Entra identitásszolgáltatóval.

Ez a kapcsolati módszer fejlettebb, mint a felügyelt identitás megközelítése az oktatóanyagban: Adatok elérése felügyelt identitással, és a következő előnyökkel jár a vállalati forgatókönyvekben:

  • Megszünteti a háttérszolgáltatásokhoz való kapcsolódás titkos kulcsait, ahogyan a felügyelt identitás megközelítését is.
  • A háttéradatbázis vagy más Azure-szolgáltatások jobban szabályozják, hogy kinek mennyi hozzáférést biztosítson.
  • Lehetővé teszi, hogy az alkalmazás az adatbemutatót a bejelentkezett felhasználóhoz szabja.

Ebben az oktatóanyagban Microsoft Entra-hitelesítést ad hozzá egy Azure SQL Database háttérrendszerrel rendelkező .NET-webalkalmazáshoz. Megtudhatja, hogyan:

  • Engedélyezze a Microsoft Entra-hitelesítést az Azure SQL Database-hez.
  • Tiltsa le az SQL Database egyéb hitelesítési beállításait.
  • Adja hozzá a Microsoft Entra-azonosítót az alkalmazás identitásszolgáltatójaként.
  • Konfigurálja az SQL Database felhasználói megszemélyesítési engedélyét.
  • Konfigurálja az App Service-t, hogy használható hozzáférési jogkivonatot biztosítson az SQL Database-hez.
  • Az Azure SQL-adatbázis elérése a bejelentkezett Microsoft Entra-felhasználó nevében.

Az oktatóanyag elvégzése után az alkalmazás biztonságosan csatlakozik az SQL Database-hez a bejelentkezett felhasználó nevében.

Az oktatóanyag forgatókönyvének architektúradiagramja.

Feljegyzés

  • A Helyszíni SQL Server nem támogatja a Microsoft Entra-azonosítót.
  • A Microsoft Entra-hitelesítés eltér a helyszíni Active Directory (AD) tartományi szolgáltatások (DS) integrált Windows-hitelesítésétől . Az AD DS és a Microsoft Entra ID teljesen eltérő hitelesítési protokollokat használ. További információt a Microsoft Entra Domain Services dokumentációjában talál.

Előfeltételek

  • Hozzáféréssel rendelkezik egy felhasználókkal és csoportokkal kitöltött Microsoft Entra-bérlőhöz.

  • Töltse ki az oktatóanyagot: ASP.NET Core- és SQL Database-alkalmazás létrehozása az Azure App Service-ben, és használja a kész alkalmazást ehhez az oktatóanyaghoz.

    Másik lehetőségként adaptálhatja a lépéseket, és használhatja a saját .NET-alkalmazását az SQL Database-lel. Az oktatóanyag lépései a következő .NET-verziókat támogatják:

    • .NET Framework 4.8 vagy újabb
    • .NET 6.0 vagy újabb
  • Jelentkezzen be az Azure Cloud Shellbe, vagy készítse elő környezetét az Azure CLI használatára.

1. Adatbázis-kiszolgáló konfigurálása Microsoft Entra-hitelesítéssel

Engedélyezze a Microsoft Entra-hitelesítést az Azure SQL-adatbázishoz úgy, hogy egy Microsoft Entra-felhasználót rendel hozzá az Azure SQL Server rendszergazdájához. A Microsoft Entra rendszergazdájának olyan felhasználónak kell lennie, akit létrehoznak, importálnak, szinkronizálnak vagy meghívnak a Microsoft Entra-azonosítóba. Előfordulhat, hogy a Microsoft Entra-felhasználó nem ugyanaz, mint az Azure-előfizetésHez tartozó Microsoft-fiók felhasználója.

Ha hozzá szeretné adni a Microsoft Entra ID-felhasználót az Azure SQL Server rendszergazdájaként, futtassa az alábbi Azure CLI-parancsokat.

  1. A az ad user list , filtervagy upn paraméterrel display-namelekérheti annak a Microsoft Entra ID-felhasználónak az objektumazonosítóját, amelyet rendszergazdaként szeretne létrehozni. Az alábbi parancs például a Vezetéknév vezetéknévvel rendelkező display-name Microsoft Entra ID-felhasználó adatait sorolja fel.

    az ad user list --display-name "Firstname Lastname"
    

    Másolja ki a id kimenetből a következő lépésben használni kívánt értéket.

    Tipp

    Önállóan is megjelenítheti az ad user list a Microsoft Entra könyvtár összes felhasználójának adatait.

  2. Adja hozzá a Microsoft Entra ID-felhasználót rendszergazdaként az Azure SQL Serverhez a object-id paraméter használatávalaz sql server ad-admin create. A következő parancsban cserélje le <group-name> a kiszolgáló erőforráscsoportjának nevét, <server-name> a kiszolgáló nevét az .database.windows.net utótaggal <entra-id> és az id előző az ad user list parancs kimenetével.

    az sql server ad-admin create --resource-group <group-name> --server-name <server-name> --display-name ADMIN --object-id <entra-id>
    
  3. Az adatbázis-kiszolgáló hitelesítésének korlátozása csak Microsoft Entra-hitelesítésre. Ez a lépés letiltja az SQL-felhasználónevet és a jelszó-hitelesítést.

    az sql server ad-only-auth enable --resource-group <group-name> --name <server-name>
    

2. A Microsoft Entra ID-hitelesítés engedélyezése az alkalmazáshoz

Adja hozzá a Microsoft Entra-azonosítót az alkalmazás identitásszolgáltatójaként. További információ: Microsoft Entra-hitelesítés konfigurálása az App Services-alkalmazáshoz.

  1. Az alkalmazás Azure Portal lapján válassza a Hitelesítés lehetőséget a bal oldali navigációs menü Beállítások csoportjában.

  2. A Hitelesítés lapon válassza az Identitásszolgáltató hozzáadása lehetőséget, vagy az Identitásszolgáltató szakaszban válassza a Szolgáltató hozzáadása lehetőséget.

  3. Az Identitásszolgáltató hozzáadása lapon válassza a Microsoftot szolgáltatóként.

  4. Az ügyfél titkos kódjának lejárata esetén válassza ki a legördülő lista egyik beállítását, például ajánlott: 180 nap.

  5. Tartsa meg az összes alapértelmezett beállítást, és válassza a Hozzáadás lehetőséget.

    Képernyőkép az identitásszolgáltató hozzáadása oldalról.

Feljegyzés

Ha újrakonfigurálja az alkalmazás hitelesítési beállításait, előfordulhat, hogy a jogkivonat-tárolóban lévő jogkivonatok nem újulnak meg az új beállításokból. A jogkivonatok újragenerálásához jelentkezzen ki, és jelentkezzen be újra az alkalmazásba. Egy egyszerű módszer a böngésző privát módban való használata. Az alkalmazások beállításainak módosítása után zárja be és nyissa meg újra a böngészőt privát módban.

3. Az SQL Database felhasználói megszemélyesítésének konfigurálása

Adjon engedélyt az alkalmazásnak az SQL Database eléréséhez a bejelentkezett Microsoft Entra-felhasználó nevében.

  1. Az alkalmazás hitelesítési oldalán válassza ki az alkalmazás nevét az Identitásszolgáltató területen.

    Megnyílik az alkalmazásregisztrációs oldal. Ez a regisztráció automatikusan létre lett hozva a Microsoft Entra-szolgáltató hozzáadásakor.

  2. A bal oldali navigációs menü Kezelés területén válassza az API-engedélyeket.

  3. Az API engedélyoldalán válassza az Engedély hozzáadása lehetőséget.

  4. A Kérelem API engedélyeinek képernyőn válassza ki a szervezet által használt API-kat .

  5. Írja be az Azure SQL Database-t a keresőmezőbe, és válassza ki az eredményt.

  6. Az alkalmazás által igényelt engedélyek típusa csoportban válassza a Delegált engedélyek lehetőséget, majd jelölje be a user_impersonation melletti jelölőnégyzetet, majd válassza az Engedélyek hozzáadása lehetőséget.

    Képernyőkép a Kérelem API engedélyeinek lapjáról, amelyen a Delegált engedélyek, user_impersonation és az Engedély hozzáadása gomb van kiválasztva.

A Microsoft Entra alkalmazásregisztrációja mostantól rendelkezik az SQL Database-hez való csatlakozáshoz szükséges engedélyekkel a bejelentkezett felhasználó megszemélyesítésével.

4. Konfigurálja az App Service-t, hogy egy használható hozzáférési token visszaadására képes legyen.

Ha úgy szeretné konfigurálni az alkalmazást, hogy használható hozzáférési jogkivonatot biztosítson az SQL Database-hez, hozzáadja https://database.windows.net/user_impersonationscope az alkalmazás Microsoft Entra-szolgáltatójához loginParameters. Az alábbi parancs hozzáadja az loginParameters egyéni hatókörökkel rendelkező tulajdonságot a Microsoft Entra identitásszolgáltatói login beállításaihoz.

A kért hatókörök közül az App Service alapértelmezés szerint már kér openid, profileés email hatóköröket is. A offline_access hatókört tartalmazza a jogkivonatok frissítése. További információ: OpenID Connect-hatókörök.

A https://database.windows.net/user_impersonation hatókör az Azure SQL Database-ra hivatkozik, és egy JSON-webjogkivonatot (JWT) biztosít, amely az SQL Database-t adja meg a jogkivonat címzettjeként. Ez a parancs a Cloud Shellben már telepített JSON-feldolgozáshoz használható jq .

authSettings=$(az webapp auth show --resource-group <group-name> --name <app-name>)
authSettings=$(echo "$authSettings" | jq '.properties' | jq '.identityProviders.azureActiveDirectory.login += {"loginParameters":["scope=openid profile email offline_access https://database.windows.net/user_impersonation"]}')
az webapp auth set --resource-group <group-name> --name <app-name> --body "$authSettings"

Tipp

Ha a szükséges hatókört az Azure CLI helyett egy webes felületen szeretné konfigurálni, használja a Microsoft Entra-szolgáltató konfigurálása frissítési jogkivonatok megadására a kért hatókörökhöz való hozzáadásához https://database.windows.net/user_impersonation .

Az alkalmazás most már úgy van konfigurálva, hogy létrehoz egy olyan hozzáférési jogkivonatot, amelyet az SQL Database elfogad.

Feljegyzés

A hozzáférési jogkivonatok egy idő után lejárnak. A hozzáférési jogkivonatok frissítéséről a felhasználók ismételt hitelesítésének megkövetelése nélkül, a hitelesítési jogkivonatok frissítése című témakörben olvashat.

5. A hozzáférési jogkivonat használata az alkalmazáskódban

Frissítse az alkalmazáskódot, hogy hozzáadja az App Service-hitelesítés által biztosított hozzáférési jogkivonatot a kapcsolati objektumhoz.

Feljegyzés

Ez a kód helyileg nem működik. A helyi hibakereséssel kapcsolatos további információkért és alternatívákért tekintse meg az App Service-hitelesítés használatakor a helyi hibakeresést ismertető témakört.

  1. DbContext A DatabaseContext.cs vagy az adatbázis-környezetet konfiguráló más fájlban lévő objektumban módosítsa az alapértelmezett konstruktort, hogy hozzáadja a Microsoft Entra-azonosító hozzáférési jogkivonatát a kapcsolati objektumhoz.

    public MyDatabaseContext (DbContextOptions<MyDatabaseContext> options, IHttpContextAccessor accessor)
        : base(options)
    {
        var conn = Database.GetDbConnection() as SqlConnection;
        conn.AccessToken = accessor.HttpContext.Request.Headers["X-MS-TOKEN-AAD-ACCESS-TOKEN"];
    }
    
  2. Ha az App Service-ben olyan kapcsolati sztring van meghívva defaultConnection , amely sql-hitelesítést használ felhasználónévvel és jelszóval, a következő paranccsal távolítsa el a kapcsolati titkos kulcsokat. Cserélje le <group-name>a , <app-name>, <db-server-name>és <db-name> az értékeket.

    az webapp config connection-string set --resource-group <group-name> --name <app-name> --connection-string-type SQLAzure --settings defaultConnection="server=tcp:<db-server-name>.database.windows.net;database=<db-name>;"
    

6. A módosítások közzététele

Ha a Visual Studio Code-ot használta a böngészőben a kódmódosításokhoz a GitHub-elágaztatásban, válassza a forrásvezérlőt a bal oldali menüből. Adjon meg egy véglegesítési üzenetet, és OBO connect válassza a Véglegesítés lehetőséget.

A véglegesítés elindít egy GitHub Actions-üzembe helyezést az App Service-ben. Várjon néhány percet, amíg az üzembe helyezés befejeződik.

A Git Bashben a következő parancsokkal is közzéteheti a módosításokat:

git commit -am "configure managed identity"
git push azure main

Ha a kód a Visual Studióban található:

  1. Kattintson a jobb gombbal a projektre a Megoldáskezelőben , és válassza a Közzététel lehetőséget.

    Képernyőkép arról, hogyan lehet közzétenni a Megoldásjegyzéken keresztül a Visual Studióban.

  2. A Közzététel lapon válassza a Közzététel lehetőséget.

Amikor az új alkalmazásoldal megjeleníti az alkalmazást, az alkalmazás a bejelentkezett Microsoft Entra-felhasználó nevében csatlakozik az Azure SQL-adatbázishoz. Az alkalmazást a szokásos módon használhatja és szerkesztheti.

Képernyőkép a webalkalmazásról a közzététel után.

7. Erőforrások törlése

Az előző lépésekben Azure-erőforrásokat hozott létre egy erőforráscsoportban. Ha már nincs szüksége ezekre az erőforrásokra, törölje az erőforráscsoportot az alábbi parancs futtatásával:

az group delete --name <group-name>

A parancs futtatása eltarthat egy ideig.

Gyakori kérdések

Miért jelenik meg a "Bejelentkezési hiba a felhasználó< "jogkivonattal azonosított tag>" hibaüzenete?

A hibák leggyakoribb okai Login failed for user '<token-identified principal>' a következők:

Hogyan hozzáadni más Microsoft Entra-felhasználókat vagy -csoportokat az Azure SQL Database-ben?

További felhasználók vagy csoportok hozzáadásához csatlakozzon az adatbázis-kiszolgálóhoz az sqlcmd vagy az SQL Server Management Studio (SSMS) használatával, és hozzon létre a Microsoft Entra-identitásokhoz hozzárendelt , tartalmazott adatbázis-felhasználókat .

Az alábbi Transact-SQL példa egy Microsoft Entra-identitást ad hozzá az SQL Serverhez, és adatbázis-szerepköröket ad az identitásnak:

CREATE USER [<user-or-group-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_datawriter ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<user-or-group-name>];
GO

Hogyan végezhetek helyi hibakeresést az App Service-hitelesítés használatakor?

Mivel az App Service-hitelesítés egy Azure-szolgáltatás, az oktatóanyagban szereplő kód nem működik a helyi környezetben. Az Azure-ban futó alkalmazásokkal ellentétben a helyi kód nem használja ki az App Service hitelesítési köztes szoftverét. A helyi hibakereséshez az alábbi alternatívákat használhatja:

  • Csatlakozzon az SQL Database-hez a helyi környezetből hitelesítéssel Active Directory Interactive . Ez a hitelesítési folyamat nem magát a felhasználót jelentkezteti be, hanem a bejelentkezett felhasználóval csatlakozik a háttéradatbázishoz, hogy helyileg tesztelhesse az adatbázis-engedélyezést.
  • Másolja manuálisan a hozzáférési jogkivonatot a kódba a X-MS-TOKEN-AAD-ACCESS-TOKEN kérés fejléce helyett.
  • Ha a Visual Studióból telepíti az alkalmazást, használja az App Service-alkalmazás távoli hibakeresését.

Mi történik a hozzáférési jogkivonatok lejáratakor?

A hozzáférési jogkivonatok bizonyos idő elteltével lejárnak. A hozzáférési jogkivonatok frissítéséről a felhasználók újbóli hitelesítésének megkövetelése nélkül az identitásszolgáltatói jogkivonatok frissítése című témakörben olvashat.