Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure App Service biedt een uiterst schaalbare webhostingservice met self-patchfunctie in Azure. App Service biedt ook een beheerde identiteit voor uw app, een kant-en-klare oplossing voor het beveiligen van toegang tot Azure SQL en andere Azure-services. Beheerde identiteiten in App Service maken uw app veiliger door geheimen, zoals referenties in verbindingsreeksen, te elimineren.
In deze zelfstudie leert u hoe u een beheerde identiteit toevoegt aan een .NET-voorbeeld-app met een Azure SQL-back-end. Nadat u klaar bent, kan uw app veilig verbinding maken met de Azure SQL-database zonder dat u een gebruikersnaam en wachtwoord nodig hebt.
In deze handleiding leert u:
- Beheerde identiteiten inschakelen.
- Ververleent Azure SQL Database toegang tot de beheerde identiteit.
- Configureer Entity Framework voor het gebruik van Microsoft Entra-verificatie met SQL Database.
- Maak verbinding met SQL Database vanuit Visual Studio met behulp van Microsoft Entra-verificatie.
Zie zelfstudie: Verbinding maken met Azure-databases vanuit App Service zonder geheimen met behulp van een beheerde identiteit voor hulp bij het gebruik van Azure Database for MySQL of Azure Database for PostgreSQL in Node.js, Python en Java-frameworks.
Notitie
Microsoft Entra ID en beheerde identiteiten worden niet ondersteund voor on-premises SQL Server.
Microsoft Entra-verificatie verschilt van Geïntegreerde Windows-verificatie in on-premises Active Directory (AD) Domain Services (DS). AD DS en Microsoft Entra ID maken gebruik van volledig verschillende verificatieprotocollen. Zie de documentatie van Microsoft Entra Domain Services voor meer informatie.
Vereisten
-
Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.
Een eenvoudige Azure App Service ASP.NET MVC of ASP.NET Core MVC CRUD-app (create-read-update-delete) die gebruikmaakt van Azure SQL Database met SQL-verificatie als back-end. De stappen in deze zelfstudie ondersteunen de volgende .NET-versies:
- .NET Framework 4.8 en hoger
- .NET 6.0 en hoger
Clientverbinding van uw computer naar Azure toestaan, zodat u fouten in uw app in uw ontwikkelomgeving kunt opsporen. U kunt het IP-adres van de client toevoegen door de stappen te volgen op IP-firewallregels op serverniveau beheren met behulp van Azure Portal.
Meld u aan bij Azure Cloud Shell of bereid uw omgeving voor om de Azure CLI te gebruiken.
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
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. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Zie Extensies gebruiken en beheren met de Azure CLIvoor 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.
Toegang tot databasebeheer verlenen aan een Microsoft Entra-gebruiker
Schakel Microsoft Entra-verificatie in voor de Azure SQL-database door een Microsoft Entra-gebruiker toe te wijzen als beheerder van de Azure SQL-server. De Microsoft Entra-beheerder moet een gebruiker zijn die is gemaakt, geïmporteerd, gesynchroniseerd of uitgenodigd in Microsoft Entra-id. Deze gebruiker is mogelijk niet hetzelfde als de Microsoft-accountgebruiker voor uw Azure-abonnement.
- Zie Gebruikers toevoegen of verwijderen met behulp van Microsoft Entra-id voor meer informatie over het maken van een Microsoft Entra-gebruiker.
- Zie Microsoft Entra-functies en -beperkingen in SQL Database voor meer informatie over toegestane Microsoft Entra-gebruikers voor SQL Database.
- Zie Een Microsoft Entra-beheerder inrichten voor uw server voor meer informatie over het toevoegen van een Azure SQL-serverbeheerder.
Voer de volgende opdrachten uit in de Bash-omgeving van Azure Cloud Shell of nadat u zich lokaal hebt aangemeld bij Azure CLI.
Gebruik
az ad user list
met de parameterdisplay-name
,filter
ofupn
om de object-id op te halen voor de Microsoft Entra ID-gebruiker die u tot beheerder wilt maken. Voeraz ad user list
zelfstandig uit om informatie voor alle gebruikers in de Microsoft Entra-directory weer te geven.De volgende opdracht bevat bijvoorbeeld informatie voor een Microsoft Entra ID-gebruiker met de
display-name
achternaam voornaam.az ad user list --display-name "Firstname Lastname"
Dit is een voorbeeld van output:
"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"
Voeg de Microsoft Entra ID-gebruiker toe als beheerder op de Azure SQL-server met behulp van
az sql server ad-admin create
deobject-id
parameter. Vervang in de volgende opdracht<server-name>
door je servernaam min het achtervoegsel.database.windows.net
, en<entra-id>
door de waardeid
uit de uitvoer van de voorgaandeaz ad user list
opdracht.az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id <entra-id>
Beheerde identiteitconnectiviteit instellen voor de app
Met de volgende stappen configureert u uw app om verbinding te maken met Azure SQL Database met behulp van een door het systeem toegewezen beheerde identiteit. Als u een door de gebruiker toegewezen identiteit wilt gebruiken, raadpleegt u zelfstudie: Verbinding maken met Azure-databases vanuit App Service zonder geheimen met behulp van een beheerde identiteit.
Beheerde identiteit inschakelen voor de app
Als u een beheerde identiteit voor uw Azure-app wilt inschakelen, gebruikt u de opdracht az webapp identity assign , waarbij u <app-name>
de naam van uw app vervangt. De naam van een door het systeem toegewezen identiteit is altijd hetzelfde als de app-naam.
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Hier is een voorbeeld van de uitvoer:
{
"additionalProperties": {},
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
}
Als u een beheerde identiteit voor een deploymentslot wilt inschakelen, voegt u --slot <slot-name>
toe aan de voorgaande opdracht en gebruikt u de naam van het slot in <slot-name>
. De naam van een door het systeem toegewezen identiteit voor een implementatiesleuf is <app-name>/slots/<slot-name>
.
U kunt de identiteit ook toevoegen aan een Microsoft Entra-groep en vervolgens SQL Database toegang verlenen tot de Microsoft Entra-groep in plaats van aan de identiteit. Als u machtigingen wilt verlenen voor een Microsoft Entra-groep, gebruikt u de weergavenaam van de groep. Met de volgende opdrachten voegt u de beheerde voorbeeldidentiteit toe 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
Machtigingen verlenen aan de beheerde identiteit
Verleen aan de identiteit de minimale machtigingen die uw app nodig heeft.
Open een PowerShell-opdrachtregel en meld u aan bij SQL Database met behulp van de volgende SQLCMD-opdracht. Vervang
<server-name>
door de servernaam,<db-name>
door de databasenaam en<admin-user>
door de gebruiker met beheerdersrechtenuserPrincipalName
uit de uitvoer van de voorgaandeaz ad user list
opdracht.sqlcmd -S <servername>.database.windows.net -d <db-name> -U <admin-user> -G -l 30
Volg de aanwijzingen om u aan te melden.
Voer bij de SQL-prompt de volgende opdrachten uit om de app de minimale machtigingen te verlenen die nodig zijn voor de database. Vervang door
<identity-name>
de naam van de beheerde identiteit in Microsoft Entra ID, die gelijk is aan de naam van de app.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
Notitie
De services voor beheerde identiteiten van de back-end onderhouden een tokencache waarmee het token voor een doelresource alleen wordt bijgewerkt wanneer het verloopt. Als u uw SQL Database-machtigingen probeert te wijzigen nadat u eerst een token met uw app hebt opgehaald, krijgt u geen nieuw token met bijgewerkte machtigingen totdat het token in de cache verloopt.
De oorspronkelijke verbindingsreeks verwijderen
Wijzigingen die u hebt aangebracht in web.config of appsettings.json werken met de beheerde identiteit. U kunt de oorspronkelijke verbindingsreeks verwijderen die u hebt gebruikt toen u uw app de eerste keer hebt geïmplementeerd. Als u de verbindingsreeks wilt verwijderen, voert u de volgende Azure CLI-opdracht uit, waarbij u <app-name>
de naam van uw app vervangt door <connection-string-name>
de naam van de verbindingsreeks.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names <connection-string-name>
Uw ontwikkelomgeving instellen
Stel uw gekozen ontwikkelomgeving in en meld u aan bij Azure. Zie de Azure Identity-clientbibliotheek voor .NET voor meer informatie over het instellen van uw ontwikkelomgeving voor Microsoft Entra-verificatie.
Visual Studio voor Windows is geïntegreerd met Microsoft Entra-verificatie.
- Als u ontwikkeling en foutopsporing in Visual Studio wilt inschakelen, voegt u uw Microsoft Entra-gebruiker toe in Visual Studio doorBestandsaccountinstellingen> te selecteren in het bovenste menu en vervolgens Aanmelden of Toevoegen te selecteren.
- Als u de Microsoft Entra-gebruiker voor Azure-serviceverificatie wilt instellen, selecteert uExtra-opties> in het bovenste menu en selecteert u vervolgens Azure Service Authentication>Account Selection. Selecteer de Microsoft Entra-gebruiker die u hebt toegevoegd en selecteer OK.
Uw project wijzigen en uw app publiceren
Uw web-app met azure SQL-database maakt gebruik van een databasecontext om verbinding te maken met de database. Als u Microsoft Entra-verificatie wilt gebruiken om met de app te werken, moet u de databasecontext bijwerken om te verwijzen naar de Entity Framework SQL Server-provider, die afhankelijk is van de moderne Microsoft.Data.SqlClient-ADO.NET-provider .
De Entity Framework-provider vervangt de ingebouwde System.Data.SqlClient
SQL Server-provider en bevat ondersteuning voor Verificatiemethoden van Microsoft Entra ID. Zie Microsoft.EntityFramework.SqlServer voor meer informatie.
[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))]
werkt lokaal om Microsoft.Data.SqlClient
te gebruiken voor de databasecontext, maar omdat System.Data.SqlClient
hardcoded is als de provider in Azure App Service, moet u MicrosoftSqlDbConfiguration
uitbreiden om verwijzingen van System.Data.SqlClient
naar Microsoft.Data.SqlClient
om te leiden. De stappen verschillen, afhankelijk van of u een ASP.NET- of ASP.NET Core-app hebt.
Een ASP.NET Core-app maakt standaard gebruik van Entity Framework Core .
Voeg in de Visual Studio Package Manager-console het NuGet-pakket Microsoft.Data.SqlClient toe.
Install-Package Microsoft.Data.SqlClient
Vervang in appsettings.jsonde waarde van de verbindingsreeks door de volgende code, waarbij u de servernaam en databasenaam vervangt
<server-name
.<database-name>
"Server=tcp:<server-name>.database.windows.net;Authentication=Active Directory Default; Database=<database-name>;"
Notitie
U kunt active Directory-standaardverificatie zowel op uw lokale computer als in Azure App Service gebruiken. Het stuurprogramma kan op meerdere manieren een token verkrijgen van Microsoft Entra ID.
Als de app is geïmplementeerd, haalt het stuurprogramma een token op uit de door het systeem toegewezen beheerde identiteit van de app. De driver kan ook worden geverifieerd met een door de gebruiker toegewezen beheerde identiteit als u het
User Id=<client-id-of-user-assigned-managed-identity>;
opneemt in uw verbindingsreeks.De
DefaultAzureCredential
klasse slaat het token in het geheugen op en haalt het op bij Microsoft Entra ID voordat het verloopt. U hebt geen aangepaste code nodig om het token te vernieuwen.U hebt nu alles wat u nodig hebt om verbinding te maken met Azure SQL Database wanneer u debugt in Visual Studio. Uw code maakt gebruik van de Microsoft Entra-gebruiker die u hebt geconfigureerd bij het instellen van uw ontwikkelomgeving.
Voer uw app uit. De CRUD-app in uw browser maakt rechtstreeks verbinding met de Azure SQL-database met behulp van Microsoft Entra-verificatie. Met deze installatie kunt u databasemigraties uitvoeren vanuit Visual Studio.
Publiceer uw wijzigingen met behulp van de volgende Git-opdrachten:
git commit -am "configure managed identity" git push azure main
De app testen
Wanneer de nieuwe webpagina uw takenlijst weergeeft, maakt uw app verbinding met de database met behulp van de beheerde identiteit.
U kunt nu de to-do lijst bewerken.
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.
Verwante inhoud
- Zelfstudie: Een aangepast domein en een beheerd certificaat gebruiken om uw app te beveiligen
- Zelfstudie: Een App Service-app verbinden met SQL Database namens de aangemelde gebruiker
- Zelfstudie: Verbinding maken met Azure-databases vanuit App Service zonder geheimen met behulp van een beheerde identiteit
- Zelfstudie: Verbinding maken met Azure-services die geen ondersteuning bieden voor beheerde identiteiten met Key Vault
- Zelfstudie: Back-endcommunicatie isoleren met Virtual Network-integratie