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


Oktatóanyag: Felügyelt identitás használata Azure-webalkalmazások titkos kulcsok nélküli Azure SQL-adatbázishoz való csatlakoztatásához

Azure App Service egy nagy mértékben méretezhető, önfrissítő webtárhely szolgáltatást biztosít az Azure felhőplatformon. Az App Service emellett egy felügyelt identitást is biztosít az alkalmazás számára, amely kulcsrakész megoldás az Azure SQL-hez és más Azure-szolgáltatásokhoz való hozzáférés biztosításához. Az App Service felügyelt identitásai biztonságosabbá teszik az alkalmazást a titkos kódok, például a kapcsolati sztringek hitelesítő adatainak eltávolításával.

Ez az oktatóanyag bemutatja, hogyan adhat hozzá felügyelt identitást egy Azure SQL-háttérrendszerrel rendelkező minta .NET-alkalmazáshoz. A befejezés után az alkalmazás biztonságosan csatlakozhat az Azure SQL-adatbázishoz anélkül, hogy felhasználónevet és jelszót kellene megadnia.

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

Ebben az útmutatóban Ön:

  • Felügyelt identitások engedélyezése.
  • Adjon hozzáférést az Azure SQL Database-nek a felügyelt identitáshoz.
  • Konfigurálja az Entity Frameworkt a Microsoft Entra-hitelesítés SQL Database-sel való használatára.
  • Csatlakozzon az SQL Database-hez a Visual Studióból Microsoft Entra-hitelesítéssel.

Az Azure Database for MySQL vagy az Azure Database for PostgreSQL Node.js, Python és Java keretrendszerekben való használatáról a következő oktatóanyag nyújt útmutatást : Csatlakozás azure-adatbázisokhoz az App Service-ből titkos kulcsok nélkül felügyelt identitás használatával.

Feljegyzés

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

  • 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

  • Ha még nem rendelkezik Azure-fiókkal, első lépésként hozzon létre egy ingyenes fiókot.

  • Alapszintű Azure App Service-ASP.NET MVC vagy ASP.NET Core MVC create-read-update-delete (CRUD) alkalmazással rendelkezik, amely az Azure SQL Database-t SQL-hitelesítéssel használja háttérként. Az oktatóanyag lépései a következő .NET-verziókat támogatják:

    • 4.8-.NET-keretrendszer és újabb verziók
    • .NET 6.0 vagy újabb
  • Engedélyezze az ügyfélkapcsolatot a számítógépről az Azure-ba, hogy hibakeresést végezhet az alkalmazáson a fejlesztési környezetben. Az ügyfél IP-címét a következő lépéseket követve adhatja hozzá az Azure Portalon kiszolgálószintű IP-tűzfalszabályok kezelése útmutatásai szerint.

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

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

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 ez a felhasználó nem ugyanaz, mint az Azure-előfizetés Microsoft-fiókjának felhasználója.

Futtassa a következő parancsokat az Azure Cloud Shell Bash-környezetében, vagy miután helyileg bejelentkezett az Azure CLI-be.

  1. Az az ad user list, display-name, filter vagy upn paraméterek használatával lekérheti annak a Microsoft Entra ID-felhasználónak az objektumazonosítóját, akit rendszergazdává szeretne tenni. Futtassa önállóan a az ad user list parancsot, hogy megjelenítse a Microsoft Entra könyvtár összes felhasználójának adatait.

    Az alábbi parancs például egy Microsoft Entra ID-felhasználó adatait sorolja fel a következővel: display-name Keresztnév Vezetéknév.

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

    Íme egy példakimenet:

     "businessPhones": [],
     "displayName": "Firstname Lastname",
     "givenName": null,
     "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
     "jobTitle": null,
     "mail": "firstname@contoso.com",
     "mobilePhone": null,
     "officeLocation": null,
     "preferredLanguage": null,
     "surname": null,
     "userPrincipalName": "firstname@contoso.com"
    
  2. Adja hozzá a Microsoft Entra ID-felhasználót rendszergazdaként az Azure SQL Serverhez a az sql server ad-admin create paraméter használatávalobject-id. Az alábbi parancsban cserélje le <server-name> a kiszolgáló nevére az .database.windows.net utótag nélkül, és <entra-id> az előző id parancs kimenetéből származó az ad user list értékkel.

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

Felügyelt identitáskapcsolat beállítása az alkalmazáshoz

Az alábbi lépések úgy konfigurálják az alkalmazást, hogy rendszer által hozzárendelt felügyelt identitással csatlakozzon az Azure SQL Database-hez. Felhasználó által hozzárendelt identitás használatához tekintse meg az Oktatóanyagot: Csatlakozás azure-adatbázisokhoz az App Service-ből titkos kulcsok nélkül felügyelt identitás használatával.

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

Ha felügyelt identitást szeretne engedélyezni az Azure-alkalmazásához, használja az az webapp identity assign parancsot, és cserélje <app-name> helyére az alkalmazás nevét. A rendszer által hozzárendelt identitás neve mindig megegyezik az alkalmazás nevével.

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

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

{
  "additionalProperties": {},
  "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
  "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
  "type": "SystemAssigned"
}

A felügyelt identitás üzembehelyezési ponthoz való engedélyezéséhez adja hozzá --slot <slot-name> az előző parancsot, és használja a pont nevét a következőben <slot-name>: . A telepítési rés számára a rendszer által hozzárendelt identitás neve <app-name>/slots/<slot-name>.

Hozzáadhatja az identitást egy Microsoft Entra-csoporthoz is, majd hozzáférést adhat az SQL Database-nek a Microsoft Entra csoporthoz az identitás helyett. A Microsoft Entra-csoportok engedélyeinek megadásához használja a csoport megjelenítendő nevét. Az alábbi parancsok hozzáadják a példa felügyelt identitást egy új, úgynevezett myAzureSQLDBAccessGroupcsoporthoz.

$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

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

Adja meg az identitásnak az alkalmazás által igényelt minimális engedélyeket.

  1. Nyisson meg egy PowerShell-parancssort, és jelentkezzen be az SQL Database-be az alábbi SQLCMD paranccsal. Cserélje le a <server-name>-t a kiszolgálója nevére, a <db-name>-t az adatbázisa nevére, és a <admin-user>-t a rendszergazda felhasználó userPrincipalName-jára az előző az ad user list parancs kimenetéből.

    sqlcmd -S <servername>.database.windows.net -d <db-name> -U <admin-user> -G -l 30
    

    A bejelentkezéshez kövesse az utasításokat.

  2. Az SQL-parancssorban futtassa az alábbi parancsokat az alkalmazás számára az adatbázishoz szükséges minimális engedélyek megadásához. Cserélje le <identity-name> a felügyelt identitás nevét a Microsoft Entra-azonosítóban, amely megegyezik az alkalmazás nevével.

    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
    

Feljegyzés

A háttérrendszer felügyelt identitásszolgáltatásai olyan token-gyorsítótárat tartanak fenn, amely csak akkor frissíti a token-t a cél erőforráshoz, ha az lejár. Ha az SQL Database-engedélyeket az alkalmazáshoz való első jogkivonat lekérése után próbálja módosítani, a gyorsítótárazott jogkivonat lejáratáig nem kap új, frissített engedélyekkel rendelkező jogkivonatot.

Az eredeti kapcsolati sztring eltávolítása

A web.config vagy appsettings.json végrehajtott módosítások a felügyelt identitással működnek. Az alkalmazás első üzembe helyezésekor használt eredeti kapcsolati sztringet eltávolíthatja. A kapcsolati sztring törléséhez futtassa a következő Azure CLI-parancsot, és helyettesítse <app-name> az alkalmazás nevével, valamint <connection-string-name> a kapcsolati sztring nevével.

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

A fejlesztési környezet beállítása

Állítsa be a választott fejlesztési környezetet, és jelentkezzen be az Azure-ba. 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.

A Windows Visual Studio integrálva van a Microsoft Entra-hitelesítéssel.

  1. Ha engedélyezni szeretné a fejlesztést és a hibakeresést a Visual Studióban, vegye fel a Microsoft Entra-felhasználót a Visual Studióba a felső menü Fájlfiók>beállításai elemével , 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 felső menüben, majd válassza az Azure Service Authentication-fiók>kiválasztása lehetőséget. Válassza ki a hozzáadott Microsoft Entra-felhasználót, és kattintson az OK gombra.

A projekt módosítása és az alkalmazás közzététele

Az Azure SQL adatbázis-alapú webalkalmazása adatbázis-környezettel csatlakozik az adatbázishoz. Ha a Microsoft Entra-hitelesítést szeretné használni az alkalmazás használatához, frissítenie kell az adatbázis-környezetet az Entity Framework SQL Server-szolgáltatóra való hivatkozáshoz, amely a modern Microsoft.Data.SqlClient ADO.NET szolgáltatótól függ.

Az Entity Framework-szolgáltató lecseréli a beépített SQL Server-szolgáltatót System.Data.SqlClient , és támogatja a Microsoft Entra ID hitelesítési módszereit. További információ: Microsoft.EntityFramework.SqlServer.

[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))] helyben működik, hogy a(z) Microsoft.Data.SqlClient-t az adatbázis-környezethez használja, de mivel a(z) System.Data.SqlClient az Azure App Service szolgáltatójaként van beírva, ki kell terjeszteni MicrosoftSqlDbConfiguration-t, hogy a(z) System.Data.SqlClient hivatkozásokat Microsoft.Data.SqlClient-re irányítsa át. A lépések attól függően különböznek, hogy rendelkezik-e ASP.NET vagy ASP.NET Core-alkalmazással.

Egy ASP.NET Core-alkalmazás alapértelmezés szerint az Entity Framework Core-t használja.

  1. A Visual Studio Csomagkezelő konzolján adja hozzá a Microsoft.Data.SqlClient NuGet-csomagot.

    Install-Package Microsoft.Data.SqlClient
    
  2. A appsettings.json, cserélje le a kapcsolati sztring értékét a következő kódra, és cserélje le a <server-name és <database-name> elemeket a kiszolgáló nevére és az adatbázis nevére.

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

    Feljegyzés

    Az Active Directory alapértelmezett hitelesítését a helyi gépen és az Azure App Service-ben is használhatja. A meghajtó több különböző módon szerezhet be jogkivonatot a Microsoft Entra ID-től.

    Ha az alkalmazás üzembe van helyezve, a vezérlő token-t kap az alkalmazás rendszer által hozzárendelt kezelt identitásából. Az illesztőprogram felhasználó által hozzárendelt felügyelt identitással is hitelesíthető, ha a kapcsolati sztringben szerepel User Id=<client-id-of-user-assigned-managed-identity>; .

    Az DefaultAzureCredential osztály gyorsítótárazza a tokent a memóriában, és lekéri 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.

    A Visual Studióban való hibakereséshez most már minden rendelkezésére áll, ami az Azure SQL Database-hez való csatlakozáshoz szükséges. A kód a fejlesztői környezet beállításakor konfigurált Microsoft Entra-felhasználót használja.

  3. Futtassa az alkalmazást. A BÖNGÉSZŐ CRUD-alkalmazása közvetlenül a Microsoft Entra-hitelesítéssel csatlakozik az Azure SQL-adatbázishoz. Ezzel a beállítással adatbázis-migrálásokat futtathat a Visual Studióból.

  4. Tegye közzé a módosításokat a következő Git-parancsokkal:

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

Az alkalmazás tesztelése

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

Képernyőkép az Azure-alkalmazásról a Code First Migration után.

Most már szerkesztheti a to-do listát.

Az erőforrások megtisztí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 eltarthat egy percig.