Självstudie: Säkra Azure SQL Database-anslutningar från App Service med en hanterad identitet
Med App Service får du en automatiskt uppdaterad webbvärdtjänst i Azure med hög skalbarhet. Dessutom får du en hanterad identitet för din app. Det här är en användningsklar lösning som skyddar åtkomsten till Azure SQL Database och andra Azure-tjänster. Med hanterade identiteter i App Service blir dina appar säkrare eftersom du inte har några hemligheter i dina appar. Du har till exempel inga inloggningsuppgifter i anslutningssträngarna. I den här självstudien lägger du till en hanterad identitet i exempelwebbappen som du skapade i någon av följande självstudier:
- Självstudie: Skapa en ASP.NET-app i Azure med Azure SQL Database
- Självstudie: Skapa en ASP.NET Core och Azure SQL Database-app i Azure App Service
När du är färdig ansluter exempelappen säkert till SQL Database utan att du behöver använda användarnamn och lösenord.

Anteckning
Stegen som tas upp i den här självstudien stöder följande versioner:
- .NET Framework 4.7.2 och högre
- .NET Core 2.2 och högre
Det här får du lära dig:
- Aktivera hanterade identiteter
- Ge SQL Database åtkomst till den hanterade identiteten
- Konfigurera Entity Framework att använda Azure AD-autentisering med SQL Database
- Anslut att SQL Database från Visual Studio azure AD-autentisering
Anteckning
Azure AD-autentisering skiljer sig från integrerad Windows-autentisering i lokal Active Directory (AD DS). AD DS och Azure AD använder helt olika autentiseringsprotokoll. Mer information finns i Azure AD Domain Services-dokumentationen.
Om du inte har en Azure-prenumerationkan du skapa ett kostnads fritt konto innan du börjar.
Förutsättningar
Den här artikeln fortsätter där du slutade i Självstudie: Skapa en ASP.NET-app i Azure med SQL Database eller Självstudie: Skapa en ASP.NET Core- och SQL Database-app i Azure App Service. Om du inte redan har gjort det följer du en av de två självstudierna först. Du kan också anpassa stegen för din egen .NET-app med hjälp av SQL Database.
Om du vill felsöka din app SQL Database som backend kontrollerar du att du har tillåtit klientanslutningen från datorn. Om inte lägger du till klientens IP-adress genom att följa stegen i Hantera IP-brandväggsreglerpå servernivå med hjälp av Azure Portal .
Förbered din miljö för Azure CLI.
Använd bash-miljön i Azure Cloud Shell.
Om du vill kan du i stället installera Azure CLI för att köra CLI-referenskommandon.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Fler inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas till det installerar du Azure CLI-tillägg vid första användning. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Bevilja databasåtkomst till Azure AD-användare
Aktivera först Azure AD-SQL Database genom att tilldela en Azure AD-användare som Active Directory-administratör för servern. Den här användaren skiljer sig från Microsoft-konto du använde för att registrera dig för din Azure-prenumeration. Det måste vara en användare som du har skapat, importerat, synkroniserat eller bjudit in till Azure AD. Mer information om tillåtna Azure AD-användare finns i Azure AD-funktioner och begränsningar i SQL Database.
Om din Azure AD-klientorganisation inte har någon användare än skapar du en genom att följa stegen i Lägga till eller ta bort användare med hjälp av Azure Active Directory.
Hitta objekt-ID:t för Azure AD-användaren med hjälp
az ad user listav och ersätt <user-principal-name> . Resultatet sparas i en variabel.azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)Tips
Om du vill se en lista över alla användarens huvudnamn i Azure AD kör du
az ad user list --query [].userPrincipalName.Lägg till den här Azure AD-användaren som Active
az sql server ad-admin createDirectory-administratör med kommandot i Cloud Shell. I följande kommando ersätter du <server-name> med servernamnet (utan.database.windows.netsuffixet ).az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
Mer information om hur du lägger till en Active Directory-administratör finns i Etablera Azure Active Directory administratör för din server
Konfigurera Visual Studio
Visual Studio för Windows är integrerad med Azure AD-autentisering. Om du vill aktivera utveckling och felsökning i Visual Studio lägger du till Azure AD-användaren i Visual Studio genom att välja Filkonto Inställningar på menyn och klicka på Lägg till > ett konto.
Om du vill ange Azure AD-användaren för Azure-tjänstautentisering väljer du Verktygsalternativ på menyn > och väljer sedan Kontoval för Azure-tjänstautentisering. > Välj den Azure AD-användare som du lade till och klicka på OK.
Nu är du redo att utveckla och felsöka din app med SQL Database server som server, med hjälp av Azure AD-autentisering.
Ändra ditt projekt
Vilka steg du följer för projektet beror på om det är ett ASP.NET projekt eller ett ASP.NET Core projekt.
I Visual Studio öppnar du Package Manager-konsolen och lägger till NuGet-paketet Microsoft.Azure.Services.AppAuthentication:
Install-Package Microsoft.Azure.Services.AppAuthentication -Version 1.4.0I Web.config, arbetar du överst i filen och gör följande ändringar:
I
<configSections>lägger du till följande avsnittsdeklaration i den:<section name="SqlAuthenticationProviders" type="System.Data.SqlClient.SqlAuthenticationProviderConfigurationSection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />under den avslutande
</configSections>taggen lägger du till följande XML-kod för<SqlAuthenticationProviders>.<SqlAuthenticationProviders> <providers> <add name="Active Directory Interactive" type="Microsoft.Azure.Services.AppAuthentication.SqlAppAuthenticationProvider, Microsoft.Azure.Services.AppAuthentication" /> </providers> </SqlAuthenticationProviders>Leta upp anslutningssträngen
MyDbConnectionmed namnet och ersätt dess värde medconnectionString"server=tcp:<server-name>.database.windows.net;database=<db-name>;UID=AnyString;Authentication=Active Directory Interactive". Ersätt <server-name> och <db-name> med servernamnet och databasnamnet.
Anteckning
Den SqlAuthenticationProvider som du precis registrerade baseras på appauthentication-biblioteket som du installerade tidigare. Som standard använder den en system tilldelad identitet. Om du vill använda en användar tilldelad identitet måste du ange ytterligare en konfiguration. Se stöd för anslutningssträngar för AppAuthentication-biblioteket.
Det är allt du behöver för att ansluta till SQL Database. När du felsöker i Visual Studio koden den Azure AD-användare som du konfigureradei Konfigurera Visual Studio . Du kommer att konfigurera SQL Database senare för att tillåta anslutning från den hanterade identiteten för din App Service app.
Skriv
Ctrl+F5för att köra appen igen. Samma CRUD-app i webbläsaren ansluter nu till Azure SQL Database direkt med hjälp av Azure AD-autentisering. Med den här konfigurationen kan du köra databasmigrering från Visual Studio.
Använda hanterad identitetsanslutning
Därefter konfigurerar du din App Service för att ansluta till SQL Database med en system tilldelad hanterad identitet.
Anteckning
Anvisningarna i det här avsnittet gäller för en system tilldelad identitet, men en användar tilldelad identitet kan lika enkelt användas. För att göra detta. behöver du ändra för att az webapp identity assign command tilldela önskad användar-tilldelad identitet. När du sedan skapar SQL bör du använda namnet på den användar tilldelade identitetsresursen i stället för platsnamnet.
Aktivera hanterad identitet i appen
När du ska aktivera en hanterad identitet för din Azure-app använder du kommandot az webapp identity assign i Cloud Shell. Ersätt i följande kommando <app-name> .
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Anteckning
Om du vill aktivera hanterad identitet för ett distributionsfacklägger --slot <slot-name> du till och använder namnet på platsen i <slot-name> .
Här är ett exempel på utdata:
{
"additionalProperties": {},
"principalId": "21dfa71c-9e6f-4d17-9e90-1d28801c9735",
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"type": "SystemAssigned"
}
Bevilja behörigheter till hanterad identitet
Anteckning
Om du vill kan du lägga till identiteten i en Azure AD-gruppoch sedan SQL Database åtkomst till Azure AD-gruppen i stället för identiteten. Följande kommandon lägger till exempel till den hanterade identiteten från föregående steg i en ny grupp med namnet 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
Öppna Cloud Shell och logga in på SQL Database med kommandot SQLCMD. Ersätt <server-name> med ditt servernamn, <db-name> med databasnamnet som din app använder och <aad-user-name> och med din Azure <aad-password> AD-användares autentiseringsuppgifter.
sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30I kommandotolken SQL den databas du vill använda kör du följande kommandon för att bevilja de behörigheter som din app behöver. Exempel:
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> är namnet på den hanterade identiteten i Azure AD. Om identiteten är system tilldelad är namnet alltid detsamma som namnet på din App Service appen. För ett distributionsfackär namnet på dess system tilldelade identitet <app-name> /slots/ <slot-name>. Om du vill bevilja behörigheter för en Azure AD-grupp använder du gruppens visningsnamn i stället (till exempel myAzureSQLDBAccessGroup).
Skriv
EXITför att återgå till Cloud Shell-prompten.Anteckning
Backend-tjänsterna för hanterade identiteter har också en tokencache som uppdaterar token för en målresurs endast när den upphör att gälla. Om du gör ett misstag när du konfigurerar dina SQL Database-behörigheter och försöker ändra behörigheterna när du har försökt hämta en token med din app får du inte en ny token med de uppdaterade behörigheterna förrän den cachelagrade token upphör att gälla.
Anteckning
Azure Active Directory och hanterade identiteter stöds inte för lokala SQL Server.
Ändra anslutningssträngen
Kom ihåg att samma ändringar som du gjorde i Web.config eller appsettings.json fungerar med den hanterade identiteten, så det enda du behöver göra är att ta bort den befintliga anslutningssträngen i App Service, som Visual Studio skapade när du distribuerade appen första gången. Använd följande kommando, men ersätt <app-name> med namnet på din app.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names MyDbConnection
Publicera dina ändringar
Nu behöver du bara publicera ändringarna till Azure.
Om du kommer från Självstudie: Skapa en ASP.NET-app i Azure med SQL Database publicerar du ändringarna i Visual Studio. I Solution Explorer: Högerklicka på projektet DotNetAppSqlDb och välj Publicera.

Klicka på Publicera på publiceringssidan.
Viktigt
Kontrollera att apptjänstnamnet inte matchar befintliga appregistreringar. Detta leder till konflikter mellan huvudnamns-ID:n.
När du ser din att göra-lista på den nya webbsidan ansluter din app till databasen med hjälp av den hanterade identiteten.

Du ska nu kunna redigera att göra-listan som innan.
Rensa resurser
I de föregående stegen skapade du Azure-resurser i en resursgrupp. Om du inte tror att du behöver dessa resurser i framtiden tar du bort resursgruppen genom att köra följande kommando i Cloud Shell:
az group delete --name myResourceGroup
Det kan några minuter att köra kommandot.
Nästa steg
Vad du lärt dig:
- Aktivera hanterade identiteter
- Ge SQL Database åtkomst till den hanterade identiteten
- Konfigurera Entity Framework att använda Azure AD-autentisering med SQL Database
- Anslut att SQL Database från Visual Studio azure AD-autentisering
