Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure App Service bietet einen hochgradig skalierbaren Webhostingdienst mit Self-Patching in Azure. Der App-Dienst stellt auch eine verwaltete Identität für Ihre App bereit, bei der es sich um eine schlüsselfertige Lösung zum Sichern des Zugriffs auf Azure SQL und andere Azure-Dienste handelt. Verwaltete Identitäten in App Service sorgen dafür, dass Ihre App sicherer wird, indem geheime Schlüssel wie Anmeldeinformationen in Verbindungszeichenfolgen eliminiert werden.
In diesem Lernprogramm erfahren Sie, wie Sie einer .NET-Beispiel-App verwaltete Identität hinzufügen, die über ein Azure SQL-Back-End verfügt. Nach Abschluss des Vorgangs kann Ihre App sicher eine Verbindung mit der Azure SQL-Datenbank herstellen, ohne dass ein Benutzername und ein Kennwort erforderlich sind.
In diesem Tutorial erfahren Sie:
- Aktivieren sie verwaltete Identitäten.
- Gewähren Sie Azure SQL-Datenbankzugriff auf die verwaltete Identität.
- Konfigurieren Sie Entity Framework für die Verwendung der Microsoft Entra-Authentifizierung mit SQL-Datenbank.
- Stellen Sie mithilfe der Microsoft Entra-Authentifizierung eine Verbindung mit der SQL-Datenbank aus Visual Studio her.
Anleitungen zur Verwendung von Azure Database for MySQL oder Azure Database for PostgreSQL in Node.js, Python und Java Frameworks finden Sie im Lernprogramm: Herstellen einer Verbindung mit Azure-Datenbanken von App Service ohne geheime Schlüssel mithilfe einer verwalteten Identität.
Hinweis
Microsoft Entra-ID und verwaltete Identitäten werden für lokale SQL Server nicht unterstützt.
Die Microsoft Entra-Authentifizierung unterscheidet sich von der integrierten Windows-Authentifizierung in lokalen Active Directory (AD) Domain Services (DS). AD DS und Microsoft Entra ID verwenden grundverschiedene Authentifizierungsprotokolle. Weitere Informationen finden Sie unter Dokumentation zu Microsoft Entra Domain Services.
Voraussetzungen
-
Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.
Verfügen Sie über einen einfachen Azure App Service ASP.NET MVC oder ASP.NET Core MVC create-read-update-delete (CRUD)-App, die Azure SQL-Datenbank mit SQL-Authentifizierung als Back-End verwendet. Die Schritte in diesem Lernprogramm unterstützen die folgenden .NET-Versionen:
- .NET Framework 4.8 und höher
- .NET 6.0 und höher
Lassen Sie die Clientverbindung von Ihrem Computer zu Azure zu, damit Sie Ihre App in Ihrer Entwicklungsumgebung debuggen können. Sie können die Client-IP-Adresse hinzufügen, indem Sie die Schritte unter Verwalten von IP-Firewallregeln auf Serverebene mithilfe des Azure-Portals ausführen.
Melden Sie sich bei Azure Cloud Shell an, oder bereiten Sie Ihre Umgebung für die Verwendung der Azure CLI vor.
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Erste Schritte mit Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Weitere Anmeldeoptionen finden Sie unter Authentifizieren bei Azure mithilfe der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden und Verwalten von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
Gewähren des Datenbankadministratorzugriffs auf einen Microsoft Entra-Benutzer
Aktivieren Sie die Microsoft Entra-Authentifizierung für die Azure SQL-Datenbank, indem Sie einen Microsoft Entra-Benutzer als Administrator des Azure SQL-Servers zuweisen. Der Microsoft Entra-Administrator muss ein Benutzer sein, der erstellt, importiert, synchronisiert oder zur Microsoft Entra-ID eingeladen wird. Dieser Benutzer ist möglicherweise nicht identisch mit dem Microsoft-Kontobenutzer für Ihr Azure-Abonnement.
- Weitere Informationen zum Erstellen eines Microsoft Entra-Benutzers finden Sie unter Hinzufügen oder Löschen von Benutzern mithilfe der Microsoft Entra-ID.
- Weitere Informationen zu zulässigen Microsoft Entra-Benutzern für SQL-Datenbank finden Sie unter Microsoft Entra-Features und -Einschränkungen in der SQL-Datenbank.
- Weitere Informationen zum Hinzufügen eines Azure SQL Server-Administrators finden Sie unter Bereitstellen eines Microsoft Entra-Administrators für Ihren Server.
Führen Sie die folgenden Befehle in der Bash-Umgebung von Azure Cloud Shell oder nach der lokalen Anmeldung bei Azure CLI aus.
Verwenden Sie
az ad user list
mit demdisplay-name
,filter
, oderupn
Parameter, um die Objekt-ID für den Microsoft Entra ID-Benutzer abzurufen, den Sie als Administratoren erstellen möchten. Führen Sieaz ad user list
eigenständig aus, um Informationen für alle Benutzer im Microsoft Entra-Verzeichnis anzuzeigen.Der folgende Befehl listet beispielsweise Informationen für einen Microsoft Entra ID-Benutzer mit dem
display-name
Vorname Nachname auf.az ad user list --display-name "Firstname Lastname"
Hier ist eine Beispielausgabe:
"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"
Fügen Sie den Microsoft Entra ID-Benutzer mithilfe von
az sql server ad-admin create
mit demobject-id
Parameter als Administrator auf dem Azure SQL-Server hinzu. Ersetzen Sie<server-name>
im folgenden Befehl durch den Servernamen minus dem.database.windows.net
Suffix und<entra-id>
durch denid
Wert aus der Ausgabe des vorherigenaz ad user list
Befehls.az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id <entra-id>
Einrichten der verwalteten Identitätskonnektivität für die App
Die folgenden Schritte konfigurieren Ihre App so, dass sie eine Verbindung mit der Azure SQL-Datenbank mithilfe einer vom System zugewiesenen verwalteten Identität herstellt. Informationen zum Verwenden einer vom Benutzer zugewiesenen Identität finden Sie im Lernprogramm: Herstellen einer Verbindung mit Azure-Datenbanken über App Service ohne geheime Schlüssel mithilfe einer verwalteten Identität.
Aktivieren der verwalteten Identität für die App
Um eine verwaltete Identität für Ihre Azure-App zu aktivieren, verwenden Sie den Befehl az webapp identity assign und ersetzen Sie <app-name>
durch den Namen Ihrer App. Der Name einer vom System zugewiesenen Identität ist immer identisch mit dem App-Namen.
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Beispiel für die Ausgabe:
{
"additionalProperties": {},
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
}
Um die verwaltete Identität für einen Bereitstellungsplatz zu aktivieren, fügen Sie --slot <slot-name>
zum vorherigen Befehl hinzu und verwenden Sie den Namen des Bereitstellungsplatzes in <slot-name>
. Der Name einer vom System zugewiesenen Identität für einen Bereitstellungsplatz lautet <app-name>/slots/<slot-name>
.
Sie können die Identität auch zu einer Microsoft Entra-Gruppe hinzufügen und dann sql-Datenbankzugriff auf die Microsoft Entra-Gruppe statt auf die Identität gewähren. Um Berechtigungen für eine Microsoft Entra-Gruppe zu erteilen, verwenden Sie den Anzeigenamen der Gruppe. Mit den folgenden Befehlen wird die Beispiel-Managed-Identität zu einer neuen Gruppe hinzugefügt, die myAzureSQLDBAccessGroup
genannt wird.
$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
Erteilen von Berechtigungen für die verwaltete Identität
Erteilen Sie der Identität die Mindestberechtigungen, die Ihre App benötigt.
Öffnen Sie eine PowerShell-Befehlszeile, und melden Sie sich mit dem folgenden SQLCMD-Befehl bei der SQL-Datenbank an. Ersetzen Sie
<server-name>
durch Ihren Servernamen,<db-name>
durch Ihren Datenbanknamen und<admin-user>
mit demuserPrincipalName
des Administratorbenutzers aus der Ausgabe des vorherigenaz ad user list
-Befehls.sqlcmd -S <servername>.database.windows.net -d <db-name> -U <admin-user> -G -l 30
Folge den Anweisungen, um sich anzumelden.
Führen Sie an der SQL-Eingabeaufforderung die folgenden Befehle aus, um der App die mindestberechtigungen zu erteilen, die sie für die Datenbank benötigt. Ersetzen Sie
<identity-name>
durch den Namen der verwalteten Identität in Microsoft Entra ID, der mit dem App-Name identisch ist.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
Hinweis
Die verwalteten Back-End-Identitätsdienste verwalten einen Tokencache , der das Token für eine Zielressource nur aktualisiert, wenn es abläuft. Wenn Sie versuchen, die Berechtigungen Ihrer SQL-Datenbank zu ändern, nachdem Sie mit Ihrer App ein Token erhalten haben, bekommen Sie erst ein neues Token mit aktualisierten Berechtigungen, wenn das zwischengespeicherte Token abläuft.
Entfernen der ursprünglichen Verbindungszeichenfolge
Jegliche Änderungen, die Sie in web.config oder appsettings.json vorgenommen haben, funktionieren mit der verwalteten Identität. Sie können die ursprüngliche Verbindungszeichenfolge entfernen, die Sie beim ersten Bereitstellen Der App verwendet haben. Führen Sie zum Löschen der Verbindungszeichenfolge den folgenden Azure CLI-Befehl aus, indem Sie `<app-name>
` durch den Namen Ihrer App und `<connection-string-name>
` durch den Namen der Verbindungszeichenfolge ersetzen.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names <connection-string-name>
Einrichten Ihrer Entwicklungsumgebung
Richten Sie Ihre ausgewählte Entwicklungsumgebung ein, und melden Sie sich bei Azure an. Weitere Informationen zum Einrichten der Entwicklungsumgebung für die Microsoft Entra-Authentifizierung finden Sie unter Azure Identity-Clientbibliothek für .NET.
Visual Studio für Windows ist in die Microsoft Entra-Authentifizierung integriert.
- Um die Entwicklung und das Debuggen in Visual Studio zu aktivieren, fügen Sie Ihren Microsoft Entra-Benutzer in Visual Studio hinzu, indem Sie im oberen Menü "Dateikontoeinstellungen>" auswählen und dann "Anmelden" oder "Hinzufügen" auswählen.
- Wenn Sie den Microsoft Entra-Benutzer für die Azure-Dienstauthentifizierung festlegen möchten, wählen Sie im oberen Menü Extras>Optionen, und wählen Sie dann Azure-Dienstauthentifizierung>Kontenauswahl aus. Wählen Sie die hinzugefügten Microsoft Entra-Benutzer*innen und dann OK aus.
Ändern Des Projekts und Veröffentlichen der App
Ihre azure SQL-Datenbank-gesicherte Web-App verwendet einen Datenbankkontext, um eine Verbindung mit der Datenbank herzustellen. Um die Microsoft Entra-Authentifizierung zum Arbeiten mit der App zu verwenden, müssen Sie den Datenbankkontext aktualisieren, um auf den Entity Framework SQL Server-Anbieter zu verweisen, der vom modernen Microsoft.Data.SqlClient-anbieter ADO.NET abhängt.
Der Entity Framework-Anbieter ersetzt den integrierten SQL Server-Anbieter und unterstützt die Microsoft Entra ID-Authentifizierungsmethoden System.Data.SqlClient
. Weitere Informationen finden Sie unter Microsoft.EntityFramework.SqlServer.
[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))]
funktioniert lokal mit der Verwendung von Microsoft.Data.SqlClient
für den Datenbankkontext, aber da System.Data.SqlClient
als Anbieter im Azure App Service hartcodiert ist, müssen Sie MicrosoftSqlDbConfiguration
erweitern, um Verweise von System.Data.SqlClient
zu Microsoft.Data.SqlClient
umzuleiten. Die Schritte unterscheiden sich je nachdem, ob Sie über eine ASP.NET oder ASP.NET Core-App verfügen.
Eine ASP.NET Core-App verwendet Entity Framework Core standardmäßig.
Fügen Sie in der Visual Studio Package Manager-Konsole das NuGet-Paket "Microsoft.Data.SqlClient" hinzu.
Install-Package Microsoft.Data.SqlClient
Ersetzen Sie in appsettings.json den Wert der Verbindungszeichenfolge mit dem folgenden Code und ersetzen Sie
<server-name
und<database-name>
durch Ihren Servernamen und Datenbanknamen."Server=tcp:<server-name>.database.windows.net;Authentication=Active Directory Default; Database=<database-name>;"
Hinweis
Sie können die Active Directory-Standardauthentifizierung sowohl auf Ihrem lokalen Computer als auch in Azure App Service verwenden. Der Treiber kann ein Token von microsoft Entra ID auf verschiedene Arten abrufen.
Wenn die App bereitgestellt wird, ruft der Treiber ein Token aus der systemseitig zugewiesenen verwalteten Identität der App ab. Der Treiber kann sich auch mit einer vom Benutzer zugewiesenen verwalteten Identität authentifizieren, wenn Sie
User Id=<client-id-of-user-assigned-managed-identity>;
in Ihre Verbindungszeichenfolge aufnehmen.Die
DefaultAzureCredential
Klasse speichert das Token im Arbeitsspeicher und ruft es vor dem Ablauf aus der Microsoft Entra ID ab. Sie benötigen keinen benutzerdefinierten Code, um das Token zu aktualisieren.Sie haben jetzt alles, was Sie zum Herstellen einer Verbindung mit der Azure SQL-Datenbank benötigen, wenn Sie in Visual Studio debuggen. Ihr Code verwendet den Microsoft Entra-Benutzer, den Sie beim Einrichten Ihrer Entwicklungsumgebung konfiguriert haben.
Führen Sie Ihre App aus. Die CRUD-App in Ihrem Browser stellt mithilfe der Microsoft Entra-Authentifizierung eine direkte Verbindung mit der Azure SQL-Datenbank bereit. Dieses Setup ermöglicht das Ausführen von Datenbankmigrationen über Visual Studio.
Veröffentlichen Sie Ihre Änderungen mithilfe der folgenden Git-Befehle:
git commit -am "configure managed identity" git push azure main
Testen der App
Wenn die neue Webseite Ihre Aufgabenliste anzeigt, stellt Ihre App unter Verwendung der verwalteten Identität eine Verbindung mit der Datenbank her.
Sie können jetzt die to-do Liste bearbeiten.
Bereinigen von Ressourcen
In den vorherigen Schritten haben Sie Azure-Ressourcen in einer Ressourcengruppe erstellt. Wenn Sie diese Ressourcen in Zukunft nicht mehr benötigen, löschen Sie die Ressourcengruppe, indem Sie den folgenden Befehl in Cloud Shell ausführen:
az group delete --name myResourceGroup
Die Ausführung dieses Befehls kann eine Minute in Anspruch nehmen.
Verwandte Inhalte
- Lernprogramm: Verwenden einer benutzerdefinierten Domäne und eines verwalteten Zertifikats zum Sichern Ihrer App
- Tutorial: Verbinden einer App Service-App mit SQL-Datenbank im Namen des angemeldeten Benutzers
- Tutorial: Verbindungsherstellung mit Azure-Datenbanken über App Service ohne Geheimnisse mithilfe einer verwalteten Identität
- Lernprogramm: Herstellen einer Verbindung mit Azure-Diensten, die verwaltete Identitäten nicht mithilfe von Key Vault unterstützen
- Tutorial: Isolieren der Back-End-Kommunikation mit Virtual Network-Integration