Zelfstudie: Azure SQL Database-verbinding vanuit App Service beveiligen met een beheerde identiteit
App Servicex biedt een uiterst schaalbare webhostingservice met self-patchfunctie in Azure. De service bevat ook een beheerde identiteit voor uw app. Dit is een gebruiksklare oplossing voor het beveiligen van toegang tot Azure SQL Database en andere Azure-services. Beheerde identiteiten in App Service maken uw app veiliger doordat geheimen in uw app, zoals referenties in de verbindingsreeksen, worden verwijderd. In deze zelfstudie voegt u een beheerde identiteit toe aan het voorbeeld van de web-app dat u hebt gemaakt in één van de volgende zelfstudies:
- Zelfstudie: Een ASP.NET-app in Azure bouwen met behulp van Azure SQL Database
- Zelfstudie: Een ASP.NET Core- en Azure SQL Database-app bouwen in Azure App Service
Wanneer u klaar bent, maakt uw voorbeeld-app veilig verbinding met SQL Database zonder dat een gebruikersnaam en wachtwoorden zijn vereist.

Notitie
De stappen in deze zelfstudie ondersteunen de volgende versies:
- .NET Framework 4.7.2 en hoger
- .NET Core 2.2 en hoger
U leert het volgende:
- Beheerde identiteiten inschakelen
- SQL Database toegang verlenen tot de beheerde identiteit
- Entity Framework configureren voor het gebruik van Azure AD-verificatie met SQL Database
- Verbinding maken met SQL Database vanuit Visual Studio met behulp van Azure AD-verificatie
Notitie
Azure AD-verificatie verschilt van Geïntegreerde Windows-verificatie in on-premises Active Directory (AD DS). AD DS en Azure AD gebruiken totaal verschillende verificatieprotocollen. Zie Documentatie voor Azure AD Domain Services voor meer informatie.
Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Vereisten
Dit artikel gaat verder waar u bent gebleven in Zelfstudie: Een ASP.NET-app bouwen in Azure met SQL Database of Zelfstudie: Een ASP.NET Core- en SQL Database-app maken in Azure App Service. Als u dat nog niet hebt gedaan, volgt u eerst een van de twee zelfstudies. U kunt ook de stappen aanpassen voor uw eigen .NET-app met SQL Database.
Als u fouten wilt opsporen in uw app met SQL Database als de back-end, zorgt u ervoor dat de clientverbinding vanuit uw computer is toegestaan. Als dat niet het geval is, voegt u het IP-adres van de client toe door de stappen te volgen op IP-firewallregels op serverniveau beheren met de Azure-portal.
Bereid uw omgeving voor op Azure CLI.
Gebruik de bash-omgeving in Azure Cloud shell.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht AZ login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij de Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
Databasetoegang verlenen aan Azure AD-gebruiker
Schakel eerst Azure AD-verificatie in om SQL Database door een Azure AD-gebruiker toe te wijzen als de Active Directory-beheerder van de server. Deze gebruiker wijkt af van de Microsoft-account die u hebt gebruikt om u aan te melden voor uw Azure-abonnement. Dit moet een gebruiker zijn die u hebt gemaakt, geïmporteerd, gesynchroniseerd of uitgenodigd voor Azure AD. Zie Azure AD-functies en -beperkingen in SQL Database voor meer informatie over de toegestane Azure AD-gebruikers.
Als uw Azure AD-tenant nog geen gebruiker heeft, maakt u er een door de stappen te volgen op Gebruikers toevoegen of verwijderen met behulp van Azure Active Directory.
Zoek de object-id van de Azure AD-gebruiker met behulp van de
az ad user listen vervang <user-principal-name> . Het resultaat wordt opgeslagen in een variabele.azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)Tip
Als u de lijst met alle UPN’s in Azure AD wilt zien, voert u
az ad user list --query [].userPrincipalNameuit.Voeg deze Azure AD-gebruiker toe als een Active Directory-beheerder met behulp van opdracht
az sql server ad-admin createin de Cloud Shell. Vervang in de volgende opdracht <server-name> met de servernaam (zonder het achtervoegsel.database.windows.net).az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
Zie Een Azure Active Directory-beheerder inrichten voor uw server voor meer informatie over het toevoegen van een Active Directory-beheerder
Visual Studio instellen
Visual Studio voor Windows is geïntegreerd met Azure AD-verificatie. Als u de ontwikkeling en foutopsporing in Visual Studio wilt inschakelen, voegt u uw Azure AD-gebruiker toe in Visual Studio door Bestand > Accountinstellingen te selecteren in het menu en op Een account toevoegen te klikken.
Als u de Azure AD-gebruiker voor Azure-serviceverificatie wilt instellen, selecteert u Hulpprogramma's > Opties in het menu en selecteert u vervolgens Azure-serviceverificatie > Accounts selecteren. Selecteer de Azure AD-gebruiker die u hebt toegevoegd en klik op OK.
U kunt nu uw app ontwikkelen en fouten opsporen met de SQL Database als back-end, met behulp van Azure AD-verificatie.
Uw project wijzigen
De stappen die u voor uw project uitvoert, zijn afhankelijk van het feit of het een ASP.NET-project of een ASP.NET Core-project is.
Open Package Manager Console in Visual Studio en voeg het NuGet-pakket Microsoft.Azure.Services.AppAuthentication toe:
Install-Package Microsoft.Azure.Services.AppAuthentication -Version 1.4.0In Web.config werkt u vanaf de bovenkant van het bestand en brengt u de volgende wijzigingen aan:
Voeg in
<configSections>de volgende sectiedeclaratie toe:<section name="SqlAuthenticationProviders" type="System.Data.SqlClient.SqlAuthenticationProviderConfigurationSection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />Voeg onder de tag voor het sluiten van
</configSections>de volgende XML-code toe voor<SqlAuthenticationProviders>.<SqlAuthenticationProviders> <providers> <add name="Active Directory Interactive" type="Microsoft.Azure.Services.AppAuthentication.SqlAppAuthenticationProvider, Microsoft.Azure.Services.AppAuthentication" /> </providers> </SqlAuthenticationProviders>Zoek de verbindingsreeks met de naam
MyDbConnectionen vervang de waardeconnectionStringdoor"server=tcp:<server-name>.database.windows.net;database=<db-name>;UID=AnyString;Authentication=Active Directory Interactive". Vervang <server-name> en <db-name> met uw servernaam en databasenaam.
Notitie
De SqlAuthenticationProvider die u zojuist hebt geregistreerd, is gebaseerd op de AppAuthentication-bibliotheek die u eerder hebt geïnstalleerd. Standaard wordt een door het systeem toegewezen identiteit gebruikt. Als u gebruik wilt maken van een door de gebruiker toegewezen identiteit, moet u een aanvullende configuratie opgeven. Zie ondersteuning voor verbindingsreeks voor de AppAuthentication-bibliotheek.
Dat is alles wat u nodig hebt om verbinding te maken met SQL Database. Als u fouten opspoort in Visual Studio, gebruikt uw code de Azure AD-gebruiker die u hebt geconfigureerd in Visual Studio instellen. U stelt SQL Database later in om verbinding te maken vanuit de beheerde identiteit van uw App Service-app.
Typ
Ctrl+F5om de app opnieuw uit te voeren. Dezelfde CRUD-app in uw browser is nu rechtstreeks verbonden met de Azure SQL Database, met behulp van Azure AD-verificatie. Met deze installatie kunt u databasemigraties uitvoeren vanuit Visual Studio.
Connectiviteit met beheerde identiteit gebruiken
Vervolgens configureert u uw App Service-app om verbinding te maken met SQL Database met een door het systeem toegewezen beheerde identiteit.
Notitie
Hoewel de instructies in deze sectie betrekking hebben op een door het systeem toegewezen identiteit, kan een door de gebruiker toegewezen identiteit net zo eenvoudig worden gebruikt. Om dit te doen. u moet de az webapp identity assign command wijzigen om de gewenste door de gebruiker toegewezen identiteit toe te wijzen. Wanneer u de SQL-gebruiker maakt, moet u ervoor zorgen dat u de naam van de door de gebruiker toegewezen identiteitsresource gebruikt in plaats van de naam van de site.
Een beheerde identiteit inschakelen voor een app
Als u een beheerde identiteit voor uw Azure-app wilt inschakelen, gebruikt u de opdracht az webapp identity assign in de Cloud Shell. Vervang <app-name> in de volgende opdracht.
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Notitie
Als u beheerde identiteit wilt inschakelen voor een implementatiesleuf,voegt u toe en --slot <slot-name> gebruikt u de naam van de sleuf in <slot-name> .
Hier is een voorbeeld van de uitvoer:
{
"additionalProperties": {},
"principalId": "21dfa71c-9e6f-4d17-9e90-1d28801c9735",
"tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"type": "SystemAssigned"
}
Machtigingen toewijzen aan beheerde identiteit
Notitie
Als u wilt, kunt u de identiteit toevoegen aan een Azure AD-groep en vervolgens SQL Database toegang verlenen tot de Azure AD-groep in plaats van de identiteit. Bijvoorbeeld, met de volgende opdrachten wordt de beheerde identiteit uit de vorige stap toegevoegd aan een nieuwe groep met de naam 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
Meld u in de Cloud Shell aan bij SQL Database met behulp van de SQLCMD-opdracht. Vervang <server-name> door de naam van uw server <db-name> met de naam van de database die uw app gebruikt en <aad-user-name> en <aad-password> met de referenties van uw Azure AD-gebruiker.
sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30Voer bij de SQL-prompt voor de gewenste database de volgende opdrachten uit om de machtigingen te verlenen die u app nodig heeft. Bijvoorbeeld:
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> is de naam van de beheerde identiteit in Azure AD. Als de identiteit door het systeem is toegewezen, is de naam altijd hetzelfde als de naam van uw App Service app. Voor een implementatiesleufis de naam van de door het systeem toegewezen identiteit <app-name> /slots/ <slot-name>. Als u machtigingen wilt verlenen voor een Azure AD-groep, gebruikt u in plaats daarvan de weergavenaam van de groep (bijvoorbeeld myAzureSQLDBAccessGroup).
Typ
EXITom terug te keren naar de Cloud Shell-prompt.Notitie
De back-end-services van beheerde identiteiten onderhoudt ook een tokencache die het token voor een doelresource alleen bijwerkt wanneer het verloopt. Als u een fout maakt bij het configureren van uw SQL Database-machtigingen en de machtigingen probeert te wijzigen nadat u heeft geprobeerd om een token op te halen met uw app, krijgt u geen nieuw token met de bijgewerkte machtigingen totdat het token in de cache verloopt.
Notitie
Azure Active Directory en beheerde identiteiten worden niet ondersteund voor on-premises SQL Server.
De verbindingsreeks wijzigen
Houd er rekening mee dat dezelfde wijzigingen die u hebt aangebracht in web.config of appsettings.json werken met de beheerde identiteit, dus het enige wat u moet doen, is het verwijderen van de bestaande verbindingsreeks in App Service, die Visual Studio de eerste keer heeft gemaakt bij het implementeren van uw app. Gebruik de volgende opdracht, maar vervang <app-name> door de naam van uw app.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names MyDbConnection
Uw wijzigingen publiceren
U hoeft nu alleen nog maar uw wijzigingen naar Azure te publiceren.
Als u vanuit de -zelfstudie werkt: Bouw een ASP.NET-app in Azure met SQL Database , publiceer uw wijzigingen in Visual Studio. Klik in de Solution Explorer met de rechtermuisknop op uw project DotNetAppSqlDb en selecteer Publiceren.

Klik op de publicatiepagina op Publiceren.
Belangrijk
Zorg ervoor dat de naam van uw app-service niet overeen komt met bestaande app-registraties. Dit leidt tot principal-id-conflicten.
Wanneer de nieuwe webpagina uw takenlijst weergeeft, maakt uw app verbinding met de database met behulp van de beheerde identiteit.

U zou nu de takenlijst moeten kunnen bewerken als voorheen.
Resources opschonen
In de voorgaande stappen hebt u Azure-resources in een resourcegroep gemaakt. Als u deze resources niet meer nodig denkt te hebben, verwijdert u de resourcegroep door de volgende opdracht in Cloud Shell uit te voeren:
az group delete --name myResourceGroup
Het kan een minuut duren voordat deze opdracht is uitgevoerd.
Volgende stappen
Wat u hebt geleerd:
- Beheerde identiteiten inschakelen
- SQL Database toegang verlenen tot de beheerde identiteit
- Entity Framework configureren voor het gebruik van Azure AD-verificatie met SQL Database
- Verbinding maken met SQL Database vanuit Visual Studio met behulp van Azure AD-verificatie
