Oktatóanyag: Csatlakozás az SQL Database-hez a NET App Service-ből titkok nélkül felügyelt identitás segítségével
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:
- Oktatóanyag: ASP.NET-alkalmazás létrehozása az Azure-ban az Azure SQL Database használatával
- Oktatóanyag: ASP.NET Core- és Azure SQL Database-alkalmazás létrehozása Azure-alkalmazás Szolgáltatásban
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.
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
Az Azure Database for MySQL-hez vagy az Azure Database for PostgreSQL-hez más nyelvi keretrendszerekben (Node.js, Python és Java) kapcsolódó útmutatásért tekintse meg a következő oktatóanyagot: 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-hez 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:
- Oktatóanyag: ASP.NET-alkalmazás létrehozása az Azure-ban AZ SQL Database használatával
- Oktatóanyag: ASP.NET Core- és SQL Database-alkalmazás létrehozása Azure-alkalmazás Szolgáltatásban.
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.
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
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.
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.
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'
: .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
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.
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 Identity
mó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).
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
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 aMyDbConnection
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 tartalmazza
User 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.Í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
Az ebben a szakaszban található utasítások egy rendszer által hozzárendelt identitáshoz tartoznak, a felhasználó által hozzárendelt identitás használatához lásd : Oktatóanyag: 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á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": "aaaaaaaa-bbbb-cccc-1111-222222222222", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "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
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
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).
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.
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.
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.
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-hez a Visual Studióból Microsoft Entra-hitelesítéssel