Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu se dozvíte, jak připojit aplikaci Azure App Service k back-endové databázi Azure SQL zosobněním přihlášeného uživatele, kterému se také říká tok on-behalf-of. Pokud chcete tento tok nakonfigurovat, povolíte integrované ověřování služby App Service pomocí zprostředkovatele identity Microsoft Entra.
Tato metoda připojení je pokročilejší než přístup spravované identity v kurzu: Přístup k datům se spravovanou identitou a má následující výhody v podnikových scénářích:
- Eliminuje tajné kódy připojení k back-endovým službám, stejně jako přístup spravované identity.
- Poskytuje back-endové databázi nebo jiné služby Azure větší kontrolu nad tím, kolik přístupu má kdo udělit.
- Umožňuje aplikaci přizpůsobit svou datovou prezentaci přihlášeným uživatelům.
V tomto kurzu přidáte ověřování Microsoft Entra do webové aplikace .NET, která má back-end služby Azure SQL Database. Naučíte se:
- Povolte ověřování Microsoft Entra pro Azure SQL Database.
- Zakažte další možnosti ověřování služby SQL Database.
- Přidejte ID Microsoft Entra jako zprostředkovatele identity pro vaši aplikaci.
- Nakonfigurujte oprávnění zosobnění uživatele služby SQL Database.
- Nakonfigurujte službu App Service tak, aby poskytovala použitelný přístupový token pro SLUŽBU SQL Database.
- Přístup k databázi Azure SQL jménem přihlášeného uživatele Microsoft Entra.
Po dokončení kurzu se vaše aplikace bezpečně připojí k SQL Database jménem přihlášeného uživatele.
Poznámka:
- Místní SQL Server nepodporuje ID Microsoft Entra.
- Ověřování Microsoft Entra se liší od integrovaného ověřování systému Windows v místní službě Active Directory (AD) Domain Services (DS). AD DS a Microsoft Entra ID používají zcela jiné ověřovací protokoly. Další informace naleznete v dokumentaci ke službě Microsoft Entra Domain Services.
Požadavky
Získejte přístup k tenantovi Microsoft Entra naplněného uživateli a skupinami.
Dokončete kurz v kurzu: Vytvoření aplikace ASP.NET Core a SQL Database ve službě Azure App Service a použití dokončené aplikace pro tento kurz.
Případně můžete přizpůsobit kroky a použít vlastní aplikaci .NET se službou SQL Database. Kroky v tomto kurzu podporují následující verze .NET:
- .NET Framework 4.8 a novější
- .NET 6.0 a novější
Přihlaste se ke službě Azure Cloud Shell nebo připravte své prostředí na používání Azure CLI.
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Začínáme s Azure Cloud Shellem.
Pokud chcete spouštět referenční příkazy CLI lokálně, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Pro více informací, viz Jak spustit Azure CLI v Docker kontejneru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Chcete-li dokončit proces ověřování, postupujte podle kroků zobrazených ve vašem terminálu. Další možnosti přihlášení najdete v tématu Ověřování v Azure pomocí Azure CLI.
Když budete vyzváni, nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Použití a správa rozšíření pomocí Azure CLI.
Spusťte az version, abyste zjistili verzi a závislé knihovny, které jsou nainstalovány. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
1. Konfigurace databázového serveru s ověřováním Microsoft Entra
Povolte ověřování Microsoft Entra do databáze Azure SQL tím, že přiřadíte uživatele Microsoft Entra jako správce serveru Azure SQL. Správce Microsoft Entra musí být uživatel, který je vytvořený, importovaný, synchronizovaný nebo pozvaný do Microsoft Entra ID. Uživatel Microsoft Entra nemusí být stejný jako uživatel účtu Microsoft pro předplatné Azure.
Pokud chcete přidat uživatele Microsoft Entra ID jako správce serveru Azure SQL, spusťte následující příkazy Azure CLI.
Použijte
az ad user lists parametremdisplay-name,filterneboupnzískat ID objektu pro uživatele Microsoft Entra ID, který chcete nastavit správce. Například následující příkaz uvádí informace pro uživatele Microsoft Entra ID sdisplay-namepříjmením jméno.az ad user list --display-name "Firstname Lastname"idZkopírujte hodnotu z výstupu, kterou chcete použít v dalším kroku.Návod
Můžete spustit samostatný příkaz
az ad user list, který zobrazí informace pro všechny uživatele v adresáři Microsoft Entra.Přidejte uživatele Microsoft Entra ID jako správce na serveru Azure SQL pomocí
az sql server ad-admin createparametruobject-id. V následujícím příkazu nahraďte<group-name>názvem skupiny prostředků vašeho serveru,<server-name>názvem vašeho serveru minus příponou.database.windows.neta<entra-id>idvýstupem z předchozíhoaz ad user listpříkazu.az sql server ad-admin create --resource-group <group-name> --server-name <server-name> --display-name ADMIN --object-id <entra-id>Omezit ověřování databázového serveru pouze na ověřování Microsoft Entra. Tento krok zakáže ověřování pomocí uživatelského jména a hesla SQL.
az sql server ad-only-auth enable --resource-group <group-name> --name <server-name>
- Další informace o vytvoření uživatele Microsoft Entra naleznete v tématu Přidání nebo odstranění uživatelů pomocí Microsoft Entra ID.
- Další informace o povolených uživatelích Microsoft Entra pro SQL Database naleznete v tématu Microsoft Entra funkce a omezení ve službě SQL Database.
- Další informace o přidání správce serveru Azure SQL najdete v tématu Zřízení správce Microsoft Entra pro váš server.
2. Povolení ověřování Microsoft Entra ID pro vaši aplikaci
Přidejte ID Microsoft Entra jako zprostředkovatele identity pro vaši aplikaci. Další informace najdete v tématu Konfigurace ověřování Microsoft Entra pro vaši aplikaci App Services.
Na stránce webu Azure Portal pro vaši aplikaci vyberte v části Nastavení v levé navigační nabídce možnost Ověřování.
Na stránce Ověřování vyberte Přidat zprostředkovatele identity nebo v části Zprostředkovatel identity vyberte Přidat zprostředkovatele.
Na stránce Přidat zprostředkovatele identity vyberte Jako zprostředkovatele Microsoft .
V případě vypršení platnosti tajného klíče klienta vyberte jednu z možností rozevíracího seznamu, například Doporučeno: 180 dní.
Ponechte všechna výchozí nastavení a vyberte Přidat.
Poznámka:
Pokud změníte konfiguraci nastavení ověřování aplikace, nemusí se tokeny v úložišti tokenů znovu vygenerovat z nového nastavení. Abyste měli jistotu, že se vaše tokeny znovu vygenerují, odhlaste se a znovu se přihlaste k aplikaci. Jednoduchou metodou je použití prohlížeče v privátním režimu. Po změně nastavení v aplikacích zavřete a znovu otevřete prohlížeč v privátním režimu.
3. Konfigurace zosobnění uživatele služby SQL Database
Udělte aplikaci oprávnění pro přístup ke službě SQL Database jménem přihlášeného uživatele Microsoft Entra.
Na stránce Ověřování aplikace vyberte název vaší aplikace v části Zprostředkovatel identity.
Otevře se stránka registrace aplikace. Tato registrace se automaticky vygenerovala při přidání poskytovatele Microsoft Entra.
V levé navigační nabídce vyberte oprávnění rozhraní API v části Spravovat .
Na stránce oprávnění rozhraní API vyberte Přidat oprávnění.
Na obrazovce Požádat o oprávnění rozhraní API vyberte kartu Rozhraní API, která moje organizace používá .
Do vyhledávacího pole zadejte Azure SQL Database a vyberte výsledek.
V části Jaký typ oprávnění vaše aplikace vyžaduje, vyberte Delegovaná oprávnění, zaškrtněte políčko vedle user_impersonation a pak vyberte Přidat oprávnění.
Registrace aplikace v Microsoft Entra teď má požadovaná oprávnění pro připojení ke službě SQL Database zosobněním přihlášeného uživatele.
4. Konfigurace služby App Service pro vrácení použitelného přístupového tokenu
Pokud chcete nakonfigurovat aplikaci tak, aby poskytovala použitelný přístupový token pro SLUŽBU SQL Database, přidáte https://database.windows.net/user_impersonation ji jako zprostředkovatele scopeloginParametersMicrosoft Entra aplikace. Následující příkaz přidá loginParameters vlastnost s vlastními obory do nastavení zprostředkovatele login identity Microsoft Entra.
Z požadovaných oborů služba App Service již požaduje openidprofilea email obory ve výchozím nastavení. Rozsah offline_access je zahrnutý, abyste mohli aktualizovat tokeny. Další informace najdete v tématu Rozsahy OpenID Connect.
Obor https://database.windows.net/user_impersonation odkazuje na Službu Azure SQL Database a poskytuje webový token JSON (JWT), který jako příjemce tokenu určuje službu SQL Database. Tento příkaz se používá jq ke zpracování JSON, které je už nainstalované v Cloud Shellu.
authSettings=$(az webapp auth show --resource-group <group-name> --name <app-name>)
authSettings=$(echo "$authSettings" | jq '.properties' | jq '.identityProviders.azureActiveDirectory.login += {"loginParameters":["scope=openid profile email offline_access https://database.windows.net/user_impersonation"]}')
az webapp auth set --resource-group <group-name> --name <app-name> --body "$authSettings"
Návod
Pokud chcete nakonfigurovat požadovaný obor pomocí webového rozhraní místo Azure CLI, použijte konfiguraci zprostředkovatele Microsoft Entra k poskytování obnovovacích tokenů a přidání https://database.windows.net/user_impersonation do požadovaných oborů.
Vaše aplikace je teď nakonfigurovaná tak, aby vygenerovala přístupový token, který služba SQL Database přijímá.
Poznámka:
Platnost přístupových tokenů vyprší po nějaké době. Informace o tom, jak aktualizovat přístupové tokeny bez nutnosti opětovného ověření uživatelů v aplikaci, najdete v tématu Aktualizace ověřovacích tokenů.
5. Použití přístupového tokenu v kódu aplikace
Aktualizujte kód aplikace tak, aby do objektu připojení přidal přístupový token zadaný ověřováním služby App Service.
Poznámka:
Tento kód nefunguje místně. Další informace a alternativy pro místní ladění najdete v tématu Místní ladění při použití ověřování služby App Service.
DbContextV objektu v DatabaseContext.cs nebo jiném souboru, který konfiguruje kontext databáze, změňte výchozí konstruktor tak, aby do objektu připojení přidal přístupový token Microsoft Entra ID.public MyDatabaseContext (DbContextOptions<MyDatabaseContext> options, IHttpContextAccessor accessor) : base(options) { var conn = Database.GetDbConnection() as SqlConnection; conn.AccessToken = accessor.HttpContext.Request.Headers["X-MS-TOKEN-AAD-ACCESS-TOKEN"]; }Pokud máte připojovací řetězec volaný
defaultConnectionve službě App Service, který používá ověřování SQL s uživatelským jménem a heslem, pomocí následujícího příkazu odeberte tajné kódy připojení. Nahraďte<group-name>hodnoty a<app-name><db-server-name><db-name>nahraďte hodnotami.az webapp config connection-string set --resource-group <group-name> --name <app-name> --connection-string-type SQLAzure --settings defaultConnection="server=tcp:<db-server-name>.database.windows.net;database=<db-name>;"
6. Publikování změn
Pokud jste v prohlížeči použili Visual Studio Code k provedení změn kódu ve forku GitHubu, vyberte v nabídce vlevo možnost Správa zdrojového kódu . Zadejte zprávu potvrzení jako OBO connect a vyberte Potvrdit.
Potvrzení aktivuje nasazení GitHub Actions do služby App Service. Počkejte několik minut, než se nasazení dokončí.
Změny můžete publikovat také v Git Bash pomocí následujících příkazů:
git commit -am "configure managed identity"
git push azure main
Pokud je váš kód v sadě Visual Studio:
Klikněte pravým tlačítkem na projekt v Průzkumníku řešení a vyberte Publikovat.
Na stránce Publikovat vyberte Publikovat.
Když se na nové stránce aplikace zobrazí vaše aplikace, aplikace se připojuje k databázi Azure SQL jménem přihlášeného uživatele Microsoft Entra. Aplikaci byste měli používat a upravovat obvyklým způsobem.
7. Vyčištění prostředků
V předchozích krocích jste vytvořili prostředky Azure ve skupině prostředků. Pokud už tyto prostředky nepotřebujete, odstraňte skupinu prostředků spuštěním následujícího příkazu:
az group delete --name <group-name>
Spuštění tohoto příkazu může nějakou dobu trvat.
Nejčastější dotazy
- Proč se mi zobrazuje chyba Přihlášení uživatele tokenem< identifikovaný objekt zabezpečení> se nezdařilo?
- Návody přidat další uživatele nebo skupiny Microsoft Entra ve službě Azure SQL Database?
- Návody ladit místně při použití ověřování pomocí služby App Service?
- Co se stane, když vyprší platnost přístupových tokenů?
Proč se mi zobrazuje chyba Přihlášení uživatele tokenem< identifikovaný objekt zabezpečení> se nezdařilo?
Mezi nejběžnější příčiny Login failed for user '<token-identified principal>' chyby patří:
- Ověřování Microsoft Entra není nakonfigurované pro databázi Azure SQL. Viz Konfigurace databázového serveru s ověřováním Microsoft Entra.
- V
X-MS-TOKEN-AAD-ACCESS-TOKENhlavičce požadavku není platný token. Tento kód nefunguje v místních prostředích. Další informace a alternativy najdete v tématu Místní ladění při použití ověřování služby App Service. - Uživatel nemá oprávnění k připojení k databázi. Pokud chcete přidat uživatele a oprávnění, přečtěte si téma Přidání dalších uživatelů nebo skupin Microsoft Entra ve službě Azure SQL Database.
Návody přidat další uživatele nebo skupiny Microsoft Entra ve službě Azure SQL Database?
Pokud chcete přidat další uživatele nebo skupiny, připojte se k databázovému serveru pomocí sqlcmd nebo SQL Server Management Studia (SSMS) a vytvořte uživatele databáze s omezením namapovanými na identity Microsoft Entra.
Následující Transact-SQL příklad přidá identitu Microsoft Entra do SQL Serveru a poskytne identitě některé databázové role:
CREATE USER [<user-or-group-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_datawriter ADD MEMBER [<user-or-group-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<user-or-group-name>];
GO
Návody ladit místně při použití ověřování pomocí služby App Service?
Vzhledem k tomu, že ověřování služby App Service je funkce Azure, kód v tomto kurzu nefunguje ve vašem místním prostředí. Na rozdíl od aplikace spuštěné v Azure nemá váš místní kód výhod ověřovacího middlewaru služby App Service. Pro místní ladění můžete použít následující alternativy:
- Připojte se ke službě SQL Database z místního prostředí s ověřováním
Active Directory Interactive. Tento tok ověřování se nepřihlásí samotnému uživateli, ale připojí se k back-endové databázi s přihlášeným uživatelem, abyste mohli otestovat autorizaci databáze místně. - Ručně zkopírujte přístupový token do kódu místo hlavičky
X-MS-TOKEN-AAD-ACCESS-TOKENpožadavku. - Pokud nasadíte ze sady Visual Studio, použijte vzdálené ladění aplikace App Service.
Co se stane, když vyprší platnost přístupových tokenů?
Platnost vašich přístupových tokenů po určité době vyprší. Informace o tom, jak aktualizovat přístupové tokeny bez nutnosti opětovného ověření uživatelů v aplikaci, najdete v tématu Aktualizace tokenů zprostředkovatele identity.
Související obsah
- Kurz: Připojení k databázím Azure ze služby App Service bez tajných kódů pomocí spravované identity
- Kurz: Přístup k Microsoft Graphu ze zabezpečené aplikace .NET jako aplikace
- Kurz: Izolace back-endové komunikace s integrací virtuální sítě
- Mapování existujícího vlastního názvu DNS na službu Aplikace Azure Service