Oktatóanyag: Csatlakozás Azure-adatbázisokhoz az App Service-ből titkos kulcsok nélkül felügyelt identitás használatával

App Service nagymértékben skálázható, önjavító web hosting szolgáltatást nyújt Azure. Emellett managed identitást is biztosít az alkalmazás számára, amely kulcsrakész megoldás a Azure adatbázisokhoz való hozzáférés biztosításához, beleértve a következőket:

Feljegyzés

Ez az oktatóanyag nem tartalmaz útmutatást Azure Cosmos DB, amely másként támogatja Microsoft Entra hitelesítést. További információ: Azure Cosmos DB dokumentáció, például A rendszer által hozzárendelt felügyelt identitások használata Azure Cosmos DB adatok eléréséhez.

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. Ez az oktatóanyag bemutatja, hogyan csatlakozhat a fent említett adatbázisokhoz az App Service-ből felügyelt identitások használatával.

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

  • Konfiguráljon egy Microsoft Entra felhasználót rendszergazdaként a Azure-adatbázishoz.
  • Csatlakozzon az adatbázishoz Microsoft Entra felhasználóként.
  • Konfiguráljon egy rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitást egy App Service-alkalmazáshoz.
  • Adatbázis-hozzáférés biztosítása a felügyelt identitáshoz.
  • Csatlakozzon a Azure adatbázishoz a kódból (.NET Framework 4.8, .NET 6, Node.js, Python, Java) egy felügyelt identitás használatával.
  • Csatlakozzon a Azure adatbázishoz a fejlesztési környezetből a Microsoft Entra felhasználóval.

Ha nincs Azure fiókja, a kezdés előtt hozzon létre egy felszabadító fiókot.

Előfeltételek

  • Alkalmazás létrehozása az App Service-ben .NET, Node.js, Python vagy Java alapján.
  • Adatbázis-kiszolgáló létrehozása Azure SQL Database, Azure Database for MySQL vagy Azure Database for PostgreSQL használatával.
  • Ismernie kell a szabványos kapcsolati mintát (felhasználónévvel és jelszóval), és sikeresen csatlakoznia kell az App Service-alkalmazásból a választott adatbázishoz.

Az Azure CLI környezet előkészítése.

1. A Service Connector jelszó nélküli bővítményének telepítése

Telepítse a legújabb Service Connector jelszó nélküli bővítményt a Azure CLI:

az extension add --name serviceconnector-passwordless --upgrade

Feljegyzés

Ellenőrizze, hogy a "serviceconnector-passwordless" bővítmény verziója "2.0.2" vagy újabb-e azáltal, hogy futtatja a következő parancsot: az version. Előfordulhat, hogy először frissítenie kell Azure CLI a bővítményverzió frissítéséhez.

2. Jelszó nélküli kapcsolat létrehozása

Ezután hozzon létre egy jelszó nélküli kapcsolatot a Service Connector használatával.

Tipp.

A Azure portál az alábbi parancsok írásában segíthet. A Azure portálon lépjen a Azure App Service erőforrásra, válassza a Service Connector lehetőséget a bal oldali menüben, és válassza a Create lehetőséget. Töltse ki az űrlapot az összes szükséges paraméterrel. Azure automatikusan létrehozza a kapcsolatlétrehozási parancsot, amelyet a parancssori felületen való használatra másolhat, vagy végrehajthat Azure Cloud Shell.

Az alábbi Azure CLI parancs egy --client-type paramétert használ.

  1. A támogatott ügyféltípusok lekéréséhez szükség esetén futtassa az webapp connection create sql -h a parancsot.

  2. Válasszon egy ügyféltípust, és futtassa a megfelelő parancsot. Cserélje le a következő helyőrzőket saját adataival.

    az webapp connection create sql \
        --resource-group <group-name> \
        --name <server-name> \
        --target-resource-group <sql-group-name> \
        --server <sql-name> \
        --database <database-name> \
        --user-identity client-id=<client-id> subs-id=<subscription-id> \
        --client-type <client-type>
    

Ez a Service Connector-parancs a következő feladatokat hajtja végre a háttérben:

  • Engedélyezze a rendszer által hozzárendelt felügyelt identitást, vagy rendeljen hozzá egy felhasználói identitást a Azure App Service által üzemeltetett alkalmazáshoz <server-name>.
  • Állítsa a Microsoft Entra rendszergazdát az aktuális bejelentkezett felhasználóra.
  • Adjon hozzá egy adatbázis-felhasználót a rendszer által hozzárendelt felügyelt identitáshoz vagy a felhasználó által hozzárendelt felügyelt identitáshoz. Adja meg az adatbázis <database-name> összes jogosultságát ennek a felhasználónak. A felhasználónév a parancs előző kimenetében található kapcsolati karakterláncben található.
  • Állítsa be a AZURE_MYSQL_CONNECTIONSTRING, AZURE_POSTGRESQL_CONNECTIONSTRING vagy AZURE_SQL_CONNECTIONSTRING nevű konfigurációkat az adatbázis típusa alapján az Azure erőforrásra.
  • App Service esetén a konfigurációk az Alkalmazásbeállítások panelen vannak beállítva.

Ha probléma merül fel a kapcsolat létrehozásakor, segítségért tekintse meg a hibaelhárítást .

3. A kód módosítása

  1. Telepítse a függőségeket.

    dotnet add package Microsoft.Data.SqlClient
    
  2. Lekérheti az Azure SQL Database csatlakozási karakterláncot a Service Connector által hozzáadott környezeti változóból.

    using Microsoft.Data.SqlClient;
    
    // AZURE_SQL_CONNECTIONSTRING should be one of the following:
    // For system-assigned managed identity:"Server=tcp:<server-name>.database.windows.net;Database=<database-name>;Authentication=Active Directory Default;TrustServerCertificate=True"
    // For user-assigned managed identity: "Server=tcp:<server-name>.database.windows.net;Database=<database-name>;Authentication=Active Directory Default;User Id=<client-id-of-user-assigned-identity>;TrustServerCertificate=True"
    
    string connectionString = 
        Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
    
    using var connection = new SqlConnection(connectionString);
    connection.Open();
    

    További információ: A felügyelt identitás hitelesítésének Active Directory használata.

További információért tekintse meg a Microsoft SQL Server ügyfélprogramozás kezdőlapját. További kódmintákért lásd : Jelszó nélküli kapcsolat létrehozása adatbázis-szolgáltatással a Service Connectoron keresztül.

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

Ez a mintakód a DefaultAzureCredential használatával kér le egy használható jogkivonatot az Azure-adatbázishoz a Microsoft Entra ID-től, majd hozzáadja azt az adatbázis-kapcsolathoz. Bár testre szabható DefaultAzureCredential, alapértelmezés szerint már sokoldalú. Jogkivonatot kap a bejelentkezett Microsoft Entra felhasználótól vagy egy felügyelt identitástól attól függően, hogy helyileg futtatja-e a fejlesztői környezetben vagy az App Service-ben.

További módosítások nélkül a kód készen áll a Azure való futtatásra. A kód helyi hibakereséséhez azonban a fejlesztőkörnyezetnek egy bejelentkezett Microsoft Entra felhasználóra van szüksége. Ebben a lépésben úgy konfigurálhatja a választott környezetet, hogy bejelentkezik Microsoft Entra felhasználójával.

  1. A Windows Visual Studio integrálva van Microsoft Entra hitelesítéssel. Ha engedélyezni szeretné a fejlesztést és a hibakeresést a Visual Studio-ban, vegye fel Microsoft Entra felhasználóját a Visual Studio-ban a menü File>Fiók beállításai pontjára kattintva, és válassza a Bejelentkezés vagy a Hozzáadás lehetőséget.

  2. A Microsoft Entra felhasználó beállítása Azure szolgáltatáshitelesítéshez: válassza a Tools>Options lehetőséget, majd válassza a Azure Szolgáltatáshitelesítés>Fiók kiválasztása lehetőséget. Válassza ki a hozzáadott Microsoft Entra felhasználót, és válassza a OK lehetőséget.

A Microsoft Entra hitelesítés fejlesztői környezetének beállításáról további információt az Azure Identity ügyfélkönyvtárában talál a .NET számára.

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

5. Tesztelés és közzététel

  1. Futtassa a kódot a fejlesztői környezetben. A kód a környezetbe bejelentkezett Microsoft Entra felhasználót használja a háttéradatbázishoz való csatlakozáshoz. A felhasználó hozzáférhet az adatbázishoz, mert Microsoft Entra rendszergazdaként van konfigurálva az adatbázishoz.

  2. Tegye közzé a kódot Azure az előnyben részesített közzétételi módszer használatával. Az App Service-ben a kód az alkalmazás felügyelt identitásával csatlakozik a háttéradatbázishoz.

Gyakori kérdések

Támogatja a felügyelt identitás SQL Server?

Igen. További információk:

Hibaüzenet jelenik meg Login failed for user '<token-identified principal>'.

A tokent lekérni kívánt felügyelt identitás nem jogosult az Azure adatbázis elérésére.

Módosítottam az App Service-hitelesítést vagy a kapcsolódó alkalmazásregisztrációt. Miért kapom meg még mindig a régi kódot?

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 módosítja a konfigurációt , miután megpróbált jogkivonatot lekérni az alkalmazással, akkor valójában nem kap új, frissített engedélyekkel rendelkező jogkivonatot, amíg a gyorsítótárazott jogkivonat le nem jár. Ennek a megoldásnak a legjobb módja, ha egy új InPrivate (Edge)/private (Safari)/Inkognitó (Chrome) ablakkal teszteli a módosításokat. Így biztos lehet benne, hogy egy új hitelesített munkamenet kezdődik.

Hogyan adhatom hozzá a felügyelt identitást egy Microsoft Entra csoporthoz?

Ha szeretné, hozzáadhatja az identitást egy Microsoft Entra csoporthoz, majd az identitás helyett hozzáférést adhat 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 <group-name> --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid

Ha adatbázis-engedélyeket szeretne adni egy Microsoft Entra csoporthoz, tekintse meg a megfelelő adatbázistípus dokumentációját.

A hibaüzenetet SSL connection is required. Please specify SSL options and retrykapom.

Az Azure adatbázishoz való csatlakozáshoz több beállítás szükséges, és az oktatóanyag hatókörén kívül esik. További információkért tekintse meg az alábbi hivatkozások egyikét:

Az alkalmazást a Web App + Adatbázis sablonnal hoztam létre, és most már nem tudok konfigurálni felügyelt identitáskapcsolatot a Service Connector parancsaival.

A Service Connectornak hálózati hozzáférésre van szüksége az adatbázishoz az alkalmazás identitásához való hozzáférés biztosításához. Ha a webalkalmazás + adatbázis sablonnal létrehoz egy biztonságos alkalmazás- és adatbázisarchitektúrát a Azure portálon, az architektúra zárolja az adatbázishoz való hálózati hozzáférést, és csak a virtuális hálózaton belüli kapcsolatokat engedélyezi. Ez Azure Cloud Shell is igaz. Azonban telepítheti a Cloud Shell-t a virtuális hálózatba, majd futtathatja a Service Connector parancsot ebben a Cloud Shell-ben.

Következő lépések

Amit megtanultál:

  • Konfiguráljon egy Microsoft Entra felhasználót rendszergazdaként a Azure-adatbázishoz.
  • Csatlakozzon az adatbázishoz Microsoft Entra felhasználóként.
  • Konfiguráljon egy rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitást egy App Service-alkalmazáshoz.
  • Adatbázis-hozzáférés biztosítása a felügyelt identitáshoz.
  • Csatlakozzon a Azure adatbázishoz a kódból (.NET Framework 4.8, .NET 6, Node.js, Python, Java) egy felügyelt identitás használatával.
  • Csatlakozzon a Azure adatbázishoz a fejlesztési környezetből a Microsoft Entra felhasználóval.