Kurz: Zabezpečení připojení ke službě Azure SQL Database ze služby App Service s využitím spravované identity
App Service je vysoce škálovatelná služba s automatickými opravami pro hostování webů v Azure. Poskytuje také spravovanou identitu pro vaši aplikaci, což je řešení na klíč pro zabezpečení přístupu ke službě Azure SQL Database a dalším službám Azure. Spravované identity ve službě App Service zvyšují zabezpečení vaší aplikace tím, že z aplikace odstraňují tajné kódy, jako jsou přihlašovací údaje v připojovacích řetězcích. V tomto kurzu přidáte spravovanou identitu do ukázkové webové aplikace vytvořené v jednom z následujících kurzů:
- Kurz: Vytvoření ASP.NET aplikace v Azure pomocí Azure SQL Database
- Kurz: Vytvoření ASP.NET Core Azure SQL Database aplikace v Azure App Service
Až budete hotovi, vaše ukázková aplikace se bezpečně připojí ke službě SQL Database bez potřeby uživatelského jména a hesla.

Poznámka
Kroky uvedené v tomto kurzu podporují následující verze:
- .NET Framework 4.7.2 a vyšší
- .NET Core 2.2 a vyšší
Co se naučíte:
- Povolit spravované identity
- Udělit přístup ke spravované identitě službě SQL Database
- Konfigurace Entity Framework ověřování Azure AD s SQL Database
- Připojení k SQL Database z Visual Studio s využitím ověřování Azure AD
Poznámka
Ověřování Azure AD se liší od integrovaného ověřování Windows v místní Active Directory (AD DS). Služby AD DS a Azure AD používají zcela odlišné ověřovací protokoly. Další informace najdete v Azure AD Domain Services dokumentaci.
Pokud ještě nemáte předplatné Azure,vytvořte si bezplatný účet před tím, než začnete.
Požadavky
Tento článek pokračuje tam, kde jste v kurzu: Sestavení aplikace ASP.NET v Azure pomocí SQL Database nebo Kurz:Sestavení aplikace ASP.NET Core a SQL Database v Azure App Service . Pokud jste to ještě neudělali, nejprve postupujte podle jednoho ze dvou kurzů. Případně můžete přizpůsobit kroky pro vlastní aplikaci .NET pomocí SQL Database.
Pokud chcete aplikaci ladit pomocí SQL Database jako back-endu, ujistěte se, že jste z počítače umožnili připojení klienta. Pokud ne, přidejte IP adresu klienta podle postupu v části Správa pravidel brány firewall protokolu IP naúrovni serveru pomocí Azure Portal .
Připravte si prostředí pro Azure CLI.
V nástroji použijte prostředí Bash Azure Cloud Shell.
Pokud tomu dáváte přednost, můžete nainstalovat Azure CLI a spouštět referenční příkazy CLI.
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í jsou popsané v tématu Přihlášení 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 Využití rozšíření v 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 k databázi uživateli Azure AD
Nejprve povolte ověřování Azure AD SQL Database přiřazením uživatele Azure AD jako správce Active Directory serveru. Tento uživatel se liší od účet Microsoft které jste použili k přihlášení k předplatnému Azure. Musí to být uživatel, který jste vytvořili, naimportoval, synchronizovali nebo pozvaněli do Azure AD. Další informace o povolených uživatelích Azure AD najdete v tématu Funkce a omezení Azure AD v SQL Database.
Pokud váš tenant Azure AD ještě uživatele nemá, vytvořte si ho podle postupu v tématu Přidání nebo odstranění uživatelů pomocí Azure Active Directory.
Pomocí příkazu vyhledejte ID objektu uživatele Azure AD a
az ad user listnahraďte <user-principal-name> . Výsledek se uloží do proměnné.azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)Tip
Pokud chcete zobrazit seznam všech hlavních názvů uživatelů v Azure AD, spusťte
az ad user list --query [].userPrincipalNamepříkaz .Přidejte tohoto uživatele Azure AD jako správce Active Directory
az sql server ad-admin createpomocí příkazu v Cloud Shell. V následujícím příkazu <server-name> nahraďte názvem serveru (bez.database.windows.netpřípony).az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
Další informace o přidání správce Active Directory najdete v tématu Zřízení správce Azure Active Directory serveru.
Nastavit Visual Studio
Visual Studio pro Windows je integrovaná s ověřováním Azure AD. Pokud chcete povolit vývoj a ladění v Visual Studio, přidejte uživatele Azure AD do Visual Studio tak, že v nabídce vyberete Souborový účet Nastavení a kliknete na Přidat > účet.
Pokud chcete nastavit uživatele Azure AD pro ověřování služeb Azure, vyberte v nabídce Nástroje Možnosti a pak vyberte Výběr účtu ověřování > služby > Azure. Vyberte přidaného uživatele Azure AD a klikněte na OK.
Teď jste připraveni vyvíjet a ladit aplikaci s back-endem SQL Database s využitím ověřování Azure AD.
Úprava projektu
Postup pro váš projekt závisí na tom, jestli se jedná o ASP.NET projekt nebo ASP.NET Core projekt.
V Visual Studio otevřete konzolu Správce balíčků a přidejte balíček NuGet Microsoft.Azure.Services.AppAuthentication:
Install-Package Microsoft.Azure.Services.AppAuthentication -Version 1.4.0V Web.config v horní části souboru proveďte následující změny:
Do
<configSections>souboru přidejte následující deklaraci oddílu:<section name="SqlAuthenticationProviders" type="System.Data.SqlClient.SqlAuthenticationProviderConfigurationSection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />pod
</configSections>ukončovací značku přidejte následující kód XML pro<SqlAuthenticationProviders>.<SqlAuthenticationProviders> <providers> <add name="Active Directory Interactive" type="Microsoft.Azure.Services.AppAuthentication.SqlAppAuthenticationProvider, Microsoft.Azure.Services.AppAuthentication" /> </providers> </SqlAuthenticationProviders>Vyhledejte připojovací řetězec s názvem
MyDbConnectiona nahraďte jehoconnectionStringhodnotu hodnotou"server=tcp:<server-name>.database.windows.net;database=<db-name>;UID=AnyString;Authentication=Active Directory Interactive". Nahraďte <server-name> a názvem serveru a názvem <db-name> databáze.
Poznámka
Objekt SqlAuthenticationProvider, který jste právě zaregistrovali, je založený na knihovně AppAuthentication, kterou jste nainstalovali dříve. Ve výchozím nastavení používá identitu přiřazenou systémem. Pokud chcete využít identitu přiřazenou uživatelem, budete muset zadat další konfiguraci. Projděte si podporu připojovacích řetězců pro knihovnu AppAuthentication.
To je všechno, co potřebujete pro připojení k SQL Database. Při ladění v Visual Studio váš kód používá uživatele Azure AD, který jste nakonfigurovali v nastavení Visual Studio. Později nastavíte připojení SQL Database připojení ze spravované identity vaší App Service aplikace.
Zadejte
Ctrl+F5, aby se aplikace spouštěla znovu. Stejná aplikace CRUD v prohlížeči se teď připojuje přímo k Azure SQL Database pomocí ověřování Azure AD. Toto nastavení umožňuje spouštět migrace databází z Visual Studio.
Použití připojení spravované identity
Dále nakonfigurujete svou aplikaci App Service pro připojení k SQL Database spravovanou identitou přiřazenou systémem.
Poznámka
I když pokyny v této části jsou určené pro identitu přiřazenou systémem, je možné jednoduše použít uživatelsky přiřazenou identitu. Postupujte takto. tuto změnu budete potřebovat az webapp identity assign command k přiřazení požadované uživatelem přiřazené identity. pak při vytváření SQLho uživatele nezapomeňte použít název prostředku identity přiřazené uživatelem, nikoli název lokality.
Povolit spravovanou identitu v aplikaci
K povolení spravované identity u aplikace Azure použijte příkaz az webapp identity assign v prostředí Cloud Shell. V následujícím příkazu nahraďte <app-name> .
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Poznámka
Pokud chcete povolit spravovanou identitu pro slot nasazení, přidejte --slot <slot-name> a použijte název slotu v <slot-name> .
Tady je příklad výstupu:
{
"additionalProperties": {},
"principalId": "21dfa71c-9e6f-4d17-9e90-1d28801c9735",
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"type": "SystemAssigned"
}
Udělení oprávnění spravované identitě
Poznámka
pokud chcete, můžete přidat identitu do skupiny azure ada potom udělit SQL Database přístup ke skupině azure ad namísto identity. Například následující příkazy přidají spravovanou identitu z předchozího kroku 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
Ve službě Cloud Shell se přihlaste ke službě SQL Database pomocí příkazu SQLCMD. Nahraďte <server-name> názvem vašeho serveru a <db-name> názvem databáze, který vaše aplikace používá, a <aad-user-name> <aad-password> s přihlašovacími údaji uživatele Azure AD.
sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30v SQL výzvy k zadání požadované databáze spusťte následující příkazy, abyste udělili oprávnění, která vaše aplikace potřebuje. Třeba
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<identity-name> je název spravované identity ve službě Azure AD. Je-li identita přiřazena systémem, název je vždy stejný jako název vaší aplikace App Service. V případě slotu nasazeníje název jeho identity přiřazené systému <app-name> <slot-name> /Slots/. Pokud chcete udělit oprávnění pro skupinu Azure AD, použijte místo toho zobrazované jméno skupiny (například myAzureSQLDBAccessGroup).
Zadáním
EXITse vraťte do příkazového řádku služby Cloud Shell.Poznámka
Back-endové služby spravovaných identit také uchovávají mezipaměť tokenů , která aktualizuje token pro cílový prostředek pouze v případě, že jeho platnost vyprší. pokud uděláte omylem konfiguraci oprávnění SQL Database a pokusíte se změnit oprávnění po pokusu o získání tokenu s vaší aplikací, nezískáte ve skutečnosti nový token s aktualizovanými oprávněními, dokud nevyprší platnost tokenu v mezipaměti.
Poznámka
Azure Active Directory a spravované identity se pro místní SQL Server nepodporují.
Úprava připojovacího řetězce
pamatujte, že stejné změny, které jste provedli v Web.config nebo appsettings. json , fungují se spravovanou identitou, takže jediným krokem je odebrání stávajícího připojovacího řetězce v App Service, který Visual Studio poprvé nasazovat aplikaci. Použijte následující příkaz, ale nahraďte <app-name> názvem vaší aplikace.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names MyDbConnection
Publikování provedených změn
Teď už stačí jen publikovat provedené změny do Azure.
pokud jste pocházeli z kurzu: sestavení aplikace ASP.NET v Azure pomocí SQL Database, publikování změn v Visual Studio. V Průzkumníku řešení klikněte pravým tlačítkem na projekt DotNetAppSqlDb a vyberte Publikovat.

Na stránce publikování klikněte na Publikovat.
Důležité
Ujistěte se, že název služby App Service neodpovídá žádným existujícím registrům aplikací. To bude mít za následek konflikty ID objektu zabezpečení.
Pokud se na nové webové stránce zobrazí seznam úkolů, připojuje se vaše aplikace k databázi pomocí spravované identity.

Teď byste měli mít možnost upravovat seznam úkolu stejně jako předtím.
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 přibližně minut.
Další kroky
Naučili jste se:
- Povolit spravované identity
- Udělit přístup ke spravované identitě službě SQL Database
- Konfigurace Entity Framework pro použití ověřování Azure AD s SQL Database
- Připojení SQL Database z Visual Studio pomocí ověřování Azure AD
