Oktatóanyag: Csatlakozás az SQL Database-be a .NET App Service-ből titkos kulcsok nélkül felügyelt identitás használatával

Az App Service egy hatékonyan méretezhető, önjavító webes üzemeltetési szolgáltatás az Azure-ban. Felügyelt identitást biztosít az alkalmazásához, vagyis egy kulcsrakész megoldást, amely biztosítja az Azure SQL Database-hez és egyéb Azure-szolgáltatásokhoz való hozzáférés védelmét. Az App Service-ben található felügyelt identitások biztonságosabbá teszik alkalmazását a titkos kódok, pl. a kapcsolati sztringekben lévő hitelesítő adatok szükségességének megszüntetésével. Ebben az oktatóanyagban felügyelt identitást ad hozzá az alábbi oktatóanyagok egyikében létrehozott minta webalkalmazáshoz:

Ha ezzel végzett, a mintaalkalmazása biztonságosan csatlakozhat az SQL Database-hez, felhasználónév és jelszó használata nélkül.

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

Feljegyzés

Az oktatóanyagban ismertetett lépések a következő verziókat támogatják:

  • 4.8-.NET-keretrendszer és újabb verziók
  • .NET 6.0 vagy újabb

Útmutatásért az Azure Database for MySQL-hez vagy az Azure Database for PostgreSQL-hez más nyelvi keretrendszerekben (Node.js, Python és Java) a következő oktatóanyagban talál útmutatást: Csatlakozás Azure-adatbázisokhoz az App Service-ből titkos kulcsok nélkül, felügyelt identitás használatával.

A következő tudnivalókat fogja elsajátítani:

  • Felügyelt identitások engedélyezése
  • SQL Database-hozzáférés engedélyezése a felügyelt identitáshoz
  • Az Entity Framework konfigurálása a Microsoft Entra-hitelesítés SQL Database-lel való használatára
  • Csatlakozás az SQL Database-be a Visual Studióból Microsoft Entra-hitelesítéssel

Feljegyzés

A Microsoft Entra-hitelesítés eltér a helyi Active Directory (AD 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.

Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.

Előfeltételek

Ez a cikk a következő oktatóanyagok valamelyikében folytatja, ahol abbahagyta:

Ha még nem tette meg, először kövesse a két oktatóanyag egyikét. Másik lehetőségként a saját .NET-alkalmazás lépéseit is módosíthatja az SQL Database-lel.

Ha az alkalmazást háttérként az SQL Database használatával szeretné hibakeresésre használni, győződjön meg arról, hogy engedélyezte az ügyfélkapcsolatot a számítógépről. Ha nem, adja hozzá az ügyfél IP-címét a kiszolgálószintű IP-tűzfalszabályok azure portalon történő kezelésével.

A környezet előkészítése az Azure CLI-re.

1. Adatbázis-hozzáférés biztosítása a Microsoft Entra-felhasználó számára

Először engedélyezze a Microsoft Entra-hitelesítést az SQL Database-hez egy Microsoft Entra-felhasználó hozzárendelésével a kiszolgáló rendszergazdájaként. Ez a felhasználó eltér attól a Microsoft-fióktól, amelyet az Azure-előfizetésére való regisztrációhoz használt. Olyan felhasználónak kell lennie, akit létrehozott, importált, szinkronizált vagy meghívott a Microsoft Entra-azonosítóba. További információ az engedélyezett Microsoft Entra-felhasználókról: Microsoft Entra-funkciók és korlátozások az SQL Database-ben.

  1. Ha a Microsoft Entra-bérlő még nem rendelkezik felhasználóval, hozzon létre egyet a Felhasználók hozzáadása vagy törlése a Microsoft Entra-azonosítóval című témakörben leírt lépésekkel.

  2. Keresse meg a Microsoft Entra-felhasználó objektumazonosítóját a felhasználónévvel, és cserélje le a felhasználónevet>.az ad user list< Az eredmény egy változóba lesz mentve.

    $azureaduser=(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query '[].id' --output tsv)
    

    Tipp.

    A Microsoft Entra-azonosítóban található összes felhasználónév listájának megtekintéséhez futtassa a következőt az ad user list --query '[].userPrincipalName': .

  3. Adja hozzá ezt a Microsoft Entra-felhasználót Active Directory-rendszergazdaként a Cloud Shell parancsával az sql server ad-admin create . A következő parancsban cserélje le <a kiszolgálónevet> a kiszolgálónévre (utótag .database.windows.net nélkül).

    az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
    

További információ az Active Directory-rendszergazda hozzáadásáról: Microsoft Entra-rendszergazda kiépítése a kiszolgálóhoz

2. A fejlesztői környezet beállítása

  1. A Windows Visual Studio integrálva van a Microsoft Entra-hitelesítéssel. Ha engedélyezni szeretné a fejlesztést és a hibakeresést a Visual Studióban, adja hozzá Microsoft Entra-felhasználóját a Visual Studióban a Fájlfiók>Gépház menüben, majd válassza a Bejelentkezés vagy a Hozzáadás lehetőséget.

  2. Ha be szeretné állítani a Microsoft Entra-felhasználót az Azure-szolgáltatáshitelesítéshez, válassza az Eszközök>beállításai lehetőséget a menüből, majd válassza az Azure Service Authentication-fiók>kiválasztását. Válassza ki a hozzáadott Microsoft Entra-felhasználót, és kattintson az OK gombra.

A fejlesztői környezet Microsoft Entra-hitelesítéshez való beállításáról további információt az Azure Identity .NET-hez készült ügyfélkódtárában talál.

Most már készen áll az alkalmazás fejlesztésére és hibakeresésére az SQL Database háttérrendszerrel, a Microsoft Entra-hitelesítés használatával.

3. A projekt módosítása

Feljegyzés

A Microsoft.Azure.Services.AppAuthentication már nem ajánlott az új Azure SDK-val való használathoz. A .NET, a Java, a TypeScript és a Python számára elérhető új Azure Identity-ügyfélkódtár váltja fel, és minden új fejlesztéshez használni kell. A migrálás Azure Identitymódjával kapcsolatos információk itt találhatók: AppAuthentication to Azure.Identity Migration Guidance.

A projekthez követendő lépések attól függenek, hogy az Entity Framework Core-t (az alapértelmezett ASP.NET Core-t) vagy az Entity Framework -t használja -e (az alapértelmezett ASP.NET esetében).

  1. Nyissa meg a Csomagkezelő-konzolt a Visual Studióban, és adja hozzá a Microsoft.Data.SqlClient NuGet-csomagot:

    Install-Package Microsoft.Data.SqlClient -Version 5.1.0
    
  2. A ASP.NET Core- és SQL Database-oktatóanyagban a MyDbConnection appsettings.json kapcsolati sztring még nem használjuk. A helyi környezet és az Azure-környezet egyaránt kapcsolati sztring kap a megfelelő környezeti változókból, hogy a kapcsolati titkos kulcsok ne legyenek a forrásfájlban. Most azonban az Active Directory-hitelesítéssel nincs több titkos kód. A appsettings.json cserélje le a kapcsolati sztring értékét a MyDbConnection következőre:

    "Server=tcp:<server-name>.database.windows.net;Authentication=Active Directory Default; Database=<database-name>;"
    

    Feljegyzés

    Az Active Directory alapértelmezett hitelesítési típusa a helyi gépen és a Azure-alkalmazás szolgáltatásban is használható. Az illesztőprogram különböző eszközökkel próbál jogkivonatot szerezni a Microsoft Entra-azonosítóból. Ha az alkalmazás üzembe van helyezve, jogkivonatot kap az alkalmazás rendszer által hozzárendelt felügyelt identitásából. A felhasználó által hozzárendelt felügyelt identitással is hitelesíthető, ha a kapcsolati sztring tartalmazzaUser Id=<client-id-of-user-assigned-managed-identity>;. Ha az alkalmazás helyileg fut, megpróbál jogkivonatot lekérni a Visual Studióból, a Visual Studio Code-ból és az Azure CLI-ből.

    Ez minden, ami az SQL Database-hez való csatlakozáshoz szükséges. A Visual Studióban történő hibakereséskor a kód a 2- ben konfigurált Microsoft Entra-felhasználót használja. Állítsa be a fejlesztői környezetet. Később beállítja az SQL Database-t, hogy engedélyezze a kapcsolatot az App Service-alkalmazás felügyelt identitásából. Az DefaultAzureCredential osztály gyorsítótárazza a jogkivonatot a memóriában, és lekéri azt a Microsoft Entra-azonosítóból a lejárat előtt. A jogkivonat frissítéséhez nincs szükség egyéni kódra.

  3. Írja be Ctrl+F5 az alkalmazás ismételt futtatásához. Ugyanez a CRUD-alkalmazás a böngészőben mostantól közvetlenül csatlakozik az Azure SQL Database-hez a Microsoft Entra-hitelesítés használatával. Ezzel a beállítással adatbázis-migrálásokat futtathat a Visual Studióból.

4. Felügyelt identitáskapcsolat használata

Ezután konfigurálja az App Service-alkalmazást úgy, hogy egy rendszer által hozzárendelt felügyelt identitással csatlakozzon az SQL Database-hez.

Feljegyzés

Bár az ebben a szakaszban található utasítások egy rendszer által hozzárendelt identitáshoz tartoznak, a felhasználó által hozzárendelt identitások ugyanolyan könnyen használhatók. Ehhez. a módosításra az webapp identity assign command a kívánt felhasználó által hozzárendelt identitás hozzárendeléséhez van szüksége. Ezután az SQL-felhasználó létrehozásakor ne a hely nevét, hanem a felhasználó által hozzárendelt identitáserőforrás nevét használja.

Felügyelt identitás engedélyezése az alkalmazásban

Ha engedélyezni szeretné a felügyelt identitást az Azure-alkalmazásához, használja az az webapp identity assign parancsot a Cloud Shellben. Az alábbi parancsban cserélje le <az alkalmazás nevét>.

az webapp identity assign --resource-group myResourceGroup --name <app-name>

Feljegyzés

A felügyelt identitás üzembehelyezési ponthoz való engedélyezéséhez adja hozzá --slot <slot-name> és használja a pont nevét a pontnévben><.

A kimenet például a következő lehet:

{
  "additionalProperties": {},
  "principalId": "21dfa71c-9e6f-4d17-9e90-1d28801c9735",
  "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
  "type": "SystemAssigned"
}

Engedélyek megadása felügyelt identitáshoz

Feljegyzés

Ha szeretné, hozzáadhatja az identitást egy Microsoft Entra-csoporthoz, majd az identitás helyett hozzáférést adhat az SQL Database-nek a Microsoft Entra csoporthoz. Az alábbi parancsok például hozzáadják a felügyelt identitást az előző lépésből egy új, myAzureSQLDBAccessGroup nevű csoporthoz:

$groupid=(az ad group create --display-name myAzureSQLDBAccessGroup --mail-nickname myAzureSQLDBAccessGroup --query objectId --output tsv)
$msiobjectid=(az webapp identity show --resource-group myResourceGroup --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid
  1. A Cloud Shellben az SQLCMD parancsot használva jelentkezzen be az SQL Database-be. Cserélje le a kiszolgálónevet> a kiszolgálónévre, <a db-nevet> az alkalmazás által használt adatbázisnévre, az< aad-felhasználónevet> és <aad-jelszót> pedig a Microsoft Entra-felhasználó hitelesítő adataira.<

    sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
    
  2. A kívánt adatbázis SQL-kérésében futtassa az alábbi parancsokat az alkalmazás által igényelt minimális engedélyek megadásához. Például:

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

    <Az identitás-név> a Microsoft Entra-azonosítóban szereplő felügyelt identitás neve. Ha az identitás rendszerhez van rendelve, a név mindig megegyezik az App Service-alkalmazás nevével. Egy üzembehelyezési pont esetében a rendszer által hozzárendelt identitás <neve alkalmazásnév>/slot/<slot-name>. A Microsoft Entra-csoportok engedélyeinek megadásához használja inkább a csoport megjelenítendő nevét (például myAzureSQLDBAccessGroup).

  3. Az EXIT parancs begépelésével térjen vissza a Cloud Shell-parancssorba.

    Feljegyzés

    A felügyelt identitások háttérszolgáltatásai emellett olyan jogkivonat-gyorsítótárat is fenntartanak, amely csak akkor frissíti a célerőforrás jogkivonatát, ha az lejár. Ha hibát követ el az SQL Database-engedélyek konfigurálásával, és megpróbálja módosítani az engedélyeket , miután megkísérelt jogkivonatot beszerezni az alkalmazással, nem kap új jogkivonatot a frissített engedélyekkel, amíg a gyorsítótárazott jogkivonat le nem jár.

    Feljegyzés

    A helyszíni SQL Server nem támogatja a Microsoft Entra-azonosítókat és a felügyelt identitásokat.

Kapcsolati sztring módosítása

Ne feledje, hogy a Web.config-ban vagy appsettings.json végrehajtott módosítások a felügyelt identitással működnek, ezért az egyetlen teendő az App Service-ben meglévő kapcsolati sztring eltávolítása, amelyet a Visual Studio hozott létre az alkalmazás első üzembe helyezéséhez. Használja a következő parancsot, de cserélje le <az alkalmazás nevét> az alkalmazás nevére.

az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names MyDbConnection

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

Már csak közzé kell tennie a módosításait az Azure-ban.

  1. Ha a következő oktatóanyagból származik: ASP.NET-alkalmazás létrehozása az Azure-ban az SQL Database használatával, tegye közzé a módosításokat a Visual Studióban. A Solution Explorer (Megoldáskezelő) lapon kattintson a jobb gombbal a DotNetAppSqlDb projektre, és válassza a Publish (Közzététel) elemet.

    Közzététel a Megoldáskezelőből

  2. A közzétételi oldalon válassza a Publish (Közzététel) elemet.

    Fontos

    Győződjön meg arról, hogy az appszolgáltatás neve nem egyezik meg a meglévő alkalmazásregisztrációkkal. Ez főazonosító-ütközésekhez fog vezetni.

Amikor az új weblapon megjelenik a feladatlista, az alkalmazása kapcsolódik az adatbázishoz a felügyelt identitás segítségével.

Azure-alkalmazás a Code First Migration után

Most már ugyanúgy szerkesztheti a feladatlistát, mint korábban.

Az erőforrások eltávolítása

Az előző lépésekben Azure-erőforrásokat hozott létre egy erőforráscsoportban. Ha várhatóan nem lesz szüksége ezekre az erőforrásokra a jövőben, törölje az erőforráscsoportot a következő parancs Cloud Shellben történő futtatásával:

az group delete --name myResourceGroup

A parancs futtatása egy percig is eltarthat.

Következő lépések

Az alábbiak elvégzését ismerte meg:

  • Felügyelt identitások engedélyezése
  • SQL Database-hozzáférés engedélyezése a felügyelt identitáshoz
  • Az Entity Framework konfigurálása a Microsoft Entra-hitelesítés SQL Database-lel való használatára
  • Csatlakozás az SQL Database-be a Visual Studióból Microsoft Entra-hitelesítéssel