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


Oktatóanyag: Azure-adatbázisokhoz való csatlakozás az 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. Emellett egy felügyelt identitást is biztosít az alkalmazás számára, amely kulcsrakész megoldás az 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 az Azure Cosmos DB-hez, amely másként támogatja a Microsoft Entra-hitelesítést. További információkért tekintse meg az Azure Cosmos DB dokumentációját, például a rendszer által hozzárendelt felügyelt identitások használatát az 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:

  • Microsoft Entra-felhasználó konfigurálása rendszergazdaként az 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 az Azure-adatbázishoz a kódból (.NET-keretrendszer 4.8, .NET 6, Node.js, Python, Java) egy felügyelt identitás használatával.
  • Csatlakozzon az Azure-adatbázishoz a fejlesztői környezetből a Microsoft Entra-felhasználóval.

Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-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 az Azure SQL Database, az Azure Database for MySQL vagy az 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.

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

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

Telepítse a service connector legújabb jelszó nélküli bővítményét az Azure CLI-hez:

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

Feljegyzés

Futtassa a "serviceconnector-passwordless" bővítmény "2.0.2" vagy újabb az versionverzióját. Előfordulhat, hogy előbb frissítenie kell az Azure CLI-t 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.

Az Azure Portal segítségével megírhatja az alábbi parancsokat. Az Azure Portalon nyissa meg a Azure-alkalmazás szolgáltatás erőforrását, válassza a Szolgáltatás-összekötő lehetőséget a bal oldali menüből, és válassza a Létrehozás lehetőséget. Töltse ki az űrlapot az összes szükséges paraméterrel. Az Azure automatikusan létrehozza a kapcsolatlétrehozási parancsot, amelyet a parancssori felületen való használatra másolhat, vagy végrehajthat az Azure Cloud Shellben.

Az alábbi Azure CLI-parancs egy paramétert --client-type 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 az alábbi helyőrzőket a saját adataira.

    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-alkalmazás 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 az előző parancskimenet kapcsolati sztring található.
  • Állítsa be a névvel ellátott AZURE_MYSQL_CONNECTIONSTRINGAZURE_POSTGRESQL_CONNECTIONSTRINGkonfigurációkat vagy AZURE_SQL_CONNECTIONSTRING az Azure-erőforrást az adatbázis típusa alapján.
  • 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. Kérje le az Azure SQL Database kapcsolati sztring 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ó: Az Active Directory felügyelt identitás hitelesítésének használata.

További információ: Kezdőlap a Microsoft SQL Server ügyfélprogramozásához. 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 egy használható jogkivonat lekérésére szolgál DefaultAzureCredential az Azure-adatbázishoz a Microsoft Entra-azonosítóbó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 az Azure-ban való futtatásra. A kód helyi hibakereséséhez azonban a fejlesztőkörnyezethez egy bejelentkezett Microsoft Entra-felhasználóra van szükség. Ebben a lépésben konfigurálja a választott környezetet a Microsoft Entra-felhasználóval való bejelentkezéssel.

  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, vegye fel a Microsoft Entra-felhasználót a Visual Studióba a 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 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.

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

  1. Futtassa a kódot a fejlesztői környezetben. A kód a környezetben 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 az Azure-ban az előnyben részesített közzétételi módszerrel. 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 az SQL Servert?

Igen. További információk:

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

A jogkivonatot 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 jogkivonatot?

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, hogy egy új hitelesített munkamenetből indul ki.

Hogyan hozzáadni 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ás további beállításokat igényel, és meghaladja az oktatóanyag hatókörét. További információkért tekintse meg az alábbi hivatkozások egyikét:

TLS-kapcsolat konfigurálása az Azure Database for PostgreSQL-ben – EgykiszolgálósSSL-kapcsolat konfigurálása az alkalmazásban az Azure Database for MySQL-hez való biztonságos csatlakozáshoz

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 az Azure Portalon a Web App + Adatbázis sablonnal hoz létre egy biztonságosan alapértelmezett alkalmazást és adatbázis-architektúrát, 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. Az Azure Cloud Shellre is igaz. A Cloud Shellt azonban üzembe helyezheti a virtuális hálózaton, majd futtathatja a Service Connector parancsot abban a Cloud Shellben.

Következő lépések

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

  • Microsoft Entra-felhasználó konfigurálása rendszergazdaként az 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 az Azure-adatbázishoz a kódból (.NET-keretrendszer 4.8, .NET 6, Node.js, Python, Java) egy felügyelt identitás használatával.
  • Csatlakozzon az Azure-adatbázishoz a fejlesztői környezetből a Microsoft Entra-felhasználóval.