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.
Azure App Service poskytuje vysoce škálovatelnou samoopravnou službu webového hostingu v Azure. App Service také poskytuje spravovanou identitu pro vaši aplikaci, což je řešení na klíč pro zabezpečení přístupu k Azure SQL a dalším službám Azure. Spravované identity ve službě App Service usnadňují zabezpečení vaší aplikace odstraněním tajných kódů, jako jsou přihlašovací údaje v připojovacích řetězcích.
V tomto kurzu se dozvíte, jak přidat spravovanou identitu do ukázkové aplikace .NET, která má back-end Azure SQL. Po dokončení se vaše aplikace může bezpečně připojit k databázi Azure SQL bez nutnosti uživatelského jména a hesla.
V tomto kurzu se naučíte:
- Povolit spravované identity
- Udělte službě Azure SQL Database přístup ke spravované identitě.
- Nakonfigurujte Entity Framework tak, aby používala ověřování Microsoft Entra se službou SQL Database.
- Připojte se ke službě SQL Database ze sady Visual Studio pomocí ověřování Microsoft Entra.
Pokyny k používání služby Azure Database for MySQL nebo Azure Database for PostgreSQL v architekturách Node.js, Pythonu a Javě najdete v kurzu: Připojení k databázím Azure z App Service bez tajných kódů pomocí spravované identity.
Poznámka:
Místní SQL Server nepodporuje ID Microsoft Entra a spravované identity.
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
-
Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
Máte základní aplikaci Azure App Service ASP.NET MVC nebo ASP.NET Core MVC create-read-update-delete (CRUD), která jako back-end používá azure SQL Database s ověřováním SQL. Kroky v tomto kurzu podporují následující verze .NET:
- .NET Framework 4.8 a novější
- .NET 6.0 a novější
Povolte připojení klienta z počítače k Azure, abyste mohli ladit aplikaci ve vývojovém prostředí. IP adresu klienta můžete přidat podle kroků uvedených v Správa pravidel IP brány firewall na úrovni serveru pomocí portálu Azure.
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 dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Ověřování v Azure pomocí Azure CLI.
Po zobrazení výzvy 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.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Udělení přístupu správce databáze uživateli 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. Tento uživatel nemusí být stejný jako uživatel účtu Microsoft pro vaše předplatné Azure.
- 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.
V prostředí Bash služby Azure Cloud Shell nebo po místním přihlášení k Azure CLI spusťte následující příkazy.
Pomocí parametru
az ad user list,display-name,filterneboupnzískejte ID objektu pro uživatele Microsoft Entra ID, kterého chcete nastavit jako správce. Spusťteaz ad user listsamostatně pro zobrazení informací o všech uživatelích v adresáři Microsoft Entra.Například následující příkaz uvádí informace pro uživatele Microsoft Entra ID se jménem ve formátu
display-namejako Jméno Příjmení.az ad user list --display-name "Firstname Lastname"Tady je příklad výstupu:
"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"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<server-name>názvem vašeho serveru mínus příponu.database.windows.neta<entra-id>idhodnotou z výstupu předchozíhoaz ad user listpříkazu.az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id <entra-id>
Nastavení připojení spravované identity pro aplikaci
Následující kroky nakonfigurují aplikaci tak, aby se připojila ke službě Azure SQL Database pomocí spravované identity přiřazené systémem. Pokud chcete použít identitu přiřazenou uživatelem, přečtěte si kurz: Připojení k databázím Azure ze služby App Service bez tajných kódů pomocí spravované identity.
Povolení spravované identity pro aplikaci
Pokud chcete pro aplikaci Azure povolit spravovanou identitu, použijte příkaz az webapp identity assign a nahraďte <app-name> názvem vaší aplikace. Název identity přiřazené systémem je vždy stejný jako název aplikace.
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Tady je příklad výstupu:
{
"additionalProperties": {},
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
}
Pokud chcete povolit spravovanou identitu pro slot nasazení, přidejte --slot <slot-name> do předchozího příkazu a použijte název slotu v <slot-name>. Název identity přiřazené systémem pro slot nasazení je <app-name>/slots/<slot-name>.
Identitu můžete přidat také do skupiny Microsoft Entra a pak udělit službě SQL Database přístup ke skupině Microsoft Entra místo této identity. Pokud chcete udělit oprávnění pro skupinu Microsoft Entra, použijte zobrazovaný název skupiny. Následující příkazy přidají ukázkovou spravovanou identitu do nové skupiny s názvem myAzureSQLDBAccessGroup.
$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
Udělení oprávnění spravované identitě
Udělte identitě minimální oprávnění, která vaše aplikace potřebuje.
Otevřete příkazový řádek PowerShellu a přihlaste se ke službě SQL Database pomocí následujícího příkazu SQLCMD. Nahraďte
<server-name>názvem serveru,<db-name>názvem vaší databáze a<admin-user>uživatelemuserPrincipalNamesprávce z výstupu předchozíhoaz ad user listpříkazu.sqlcmd -S <servername>.database.windows.net -d <db-name> -U <admin-user> -G -l 30Podle pokynů se přihlaste.
Na příkazovém řádku SQL spusťte následující příkazy a udělte aplikaci minimální oprávnění, která potřebuje pro databázi. Nahraďte
<identity-name>názvem spravované identity v Microsoft Entra ID, což je stejné jako název aplikace.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
Poznámka:
Služby identit, které jsou spravované backendem, udržují mezipaměť tokenů, která aktualizuje token pro cílový prostředek pouze tehdy, když vyprší jeho platnost. Pokud se pokusíte upravit oprávnění služby SQL Database po prvním získání tokenu s aplikací, nebudete mít nový token s aktualizovanými oprávněními, dokud nevyprší platnost tokenu uloženého v mezipaměti.
Odeberte původní připojovací řetězec
Všechny změny provedené v web.config nebo appsettings.json fungují se spravovanou identitou. Můžete odebrat původní připojovací řetězec, který jste použili při prvním nasazení aplikace. Pokud chcete připojovací řetězec odstranit, spusťte následující příkaz Azure CLI a nahraďte <app-name> název vaší aplikace a <connection-string-name> názvem připojovacího řetězce.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names <connection-string-name>
Nastavení vývojového prostředí
Nastavte zvolené vývojové prostředí a přihlaste se k Azure. Další informace o nastavení vývojového prostředí pro ověřování Microsoft Entra najdete v tématu Klientská knihovna identit Azure pro .NET.
Visual Studio pro Windows je integrované s ověřováním Microsoft Entra.
- Pokud chcete povolit vývoj a ladění v sadě Visual Studio, přidejte svého uživatele Microsoft Entra do sady Visual Studio tím, že v horní nabídce vyberete Soubor>Nastavení účtu, a pak vyberete Přihlásit se nebo Přidat.
- Pokud chcete nastavit uživatele Microsoft Entra pro ověřování služby Azure, v horní nabídce vyberte Možnosti nástrojů> a pak vybertevýběr účtu> služby Azure. Vyberte uživatele Microsoft Entra, který jste přidali, a vyberte OK.
Úprava projektu a publikování aplikace
Webová aplikace zálohovaná databází Azure SQL používá k připojení k databázi kontext databáze. Pokud chcete pro práci s aplikací použít ověřování Microsoft Entra, musíte aktualizovat kontext databáze tak, aby odkazoval na poskytovatele Entity Frameworku pro SQL Server, který závisí na moderním poskytovateli Microsoft.Data.SqlClient ADO.NET.
Zprostředkovatel Entity Framework nahrazuje integrovaného System.Data.SqlClient zprostředkovatele SQL Serveru a zahrnuje podporu metod ověřování Microsoft Entra ID. Další informace naleznete v tématu Microsoft.EntityFramework.SqlServer.
[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))] funguje lokálně pro použití Microsoft.Data.SqlClient pro kontext databáze, ale protože System.Data.SqlClient je pevně zakódován jako poskytovatel ve službě Azure App Service, musíte rozšířit MicrosoftSqlDbConfiguration, aby přesměroval odkazy System.Data.SqlClient na Microsoft.Data.SqlClient. Postup se liší v závislosti na tom, jestli máte aplikaci ASP.NET nebo ASP.NET Core.
- aplikace ASP.NET Core
-
aplikace
ASP.NET
Aplikace ASP.NET Core ve výchozím nastavení používá Entity Framework Core .
V konzole Správce balíčků sady Visual Studio přidejte balíček NuGet Microsoft.Data.SqlClient.
Install-Package Microsoft.Data.SqlClientV appsettings.jsonnahraďte hodnotu připojovacího řetězce následujícím kódem a nahraďte
<server-namenázev serveru a<database-name>název databáze."Server=tcp:<server-name>.database.windows.net;Authentication=Active Directory Default; Database=<database-name>;"Poznámka:
Výchozí ověřování služby Active Directory můžete použít na místním počítači i ve službě Azure App Service. Ovladač může získat token z ID Microsoft Entra několika různými způsoby.
Pokud je aplikace nasazená, ovladač získá token ze spravované identity přiřazené systémem aplikace. Ovladač se také může ověřit pomocí spravované identity přiřazené uživatelem, pokud zahrnete
User Id=<client-id-of-user-assigned-managed-identity>;do připojovacího řetězce.Třída
DefaultAzureCredentialukládá token do mezipaměti v paměti a před vypršením platnosti ho načte z Microsoft Entra ID. K aktualizaci tokenu nepotřebujete žádný vlastní kód.Teď máte všechno, co potřebujete pro připojení ke službě Azure SQL Database při ladění v sadě Visual Studio. Váš kód používá uživatele Microsoft Entra, který jste nakonfigurovali při nastavování vývojového prostředí.
Spusťte aplikaci. Aplikace CRUD ve vašem prohlížeči se připojuje přímo k databázi Azure SQL pomocí ověřování Microsoft Entra. Toto nastavení umožňuje spouštět migrace databází ze sady Visual Studio.
Změny publikujte pomocí následujících příkazů Gitu:
git commit -am "configure managed identity" git push azure main
Otestování aplikace
Pokud se na nové webové stránce zobrazí seznam úkolů, připojuje se vaše aplikace k databázi pomocí spravované identity.
Teď můžete upravit seznam to-do.
Vyčištění prostředků
V předchozích krocích jste vytvořili prostředky Azure ve skupině prostředků. Pokud předpokládáte, že už tyto prostředky nebudete potřebovat, odstraňte skupinu prostředků spuštěním následujícího příkazu ve službě Cloud Shell:
az group delete --name myResourceGroup
Spuštění tohoto příkazu může trvat minutu.
Související obsah
- Kurz: Použití vlastní domény a spravovaného certifikátu k zabezpečení aplikace
- Kurz: Připojení aplikace App Service k SQL Database jménem přihlášeného uživatele
- Kurz: Připojení k databázím Azure ze služby App Service bez tajných kódů pomocí spravované identity
- Kurz: Připojení ke službám Azure, které nepodporují spravované identity pomocí služby Key Vault
- Kurz: Izolace back-endové komunikace s integrací virtuální sítě