Tutorial: Verwenden der systemseitig zugewiesenen verwalteten Identität eines virtuellen Windows-Computers für den Zugriff auf Azure SQL
In diesem Tutorial erfahren Sie, wie Sie eine systemseitig zugewiesene Identität für einen virtuellen Windows-Computer verwenden, um auf Azure SQL-Datenbank zuzugreifen. Verwaltete Dienstidentitäten werden von Azure automatisch verwaltet und ermöglichen Ihnen die Authentifizierung für Dienste, die die Microsoft Entra-Authentifizierung unterstützen, ohne dass Sie Anmeldeinformationen in Ihren Code einfügen müssen. Folgendes wird vermittelt:
- Gewähren des Zugriffs auf Azure SQL-Datenbank durch Ihren virtuellen Computer
- Microsoft Entra-Authentifizierung aktivieren
- Erstellen eines in der Datenbank enthaltenen Benutzers, der die vom System zugewiesene Identität des virtuellen Computers darstellt
- Abrufen eines Zugriffstokens mithilfe der Identität des virtuellen Computers und Verwenden dieses Zugriffstokens zum Abfragen von Azure SQL-Datenbank
Voraussetzungen
- Wenn Sie mit der Funktion für verwaltete Identitäten für Azure-Ressourcen nicht vertraut sind, finden Sie hier eine Übersicht.
- Wenn Sie kein Azure-Konto haben, sollten Sie sich für ein kostenloses Konto registrieren, bevor Sie fortfahren.
- Ihr Konto muss über die Berechtigung „Besitzer“ für den geeigneten Bereich (Ihr Abonnement oder die Ressourcengruppe) verfügen, um die erforderliche Ressourcenerstellung und eine Rollenverwaltung durchführen zu können. Wenn Sie Unterstützung bei der Rollenzuweisung benötigen, finden Sie weitere Informationen unter Zuweisen von Azure-Rollen zum Verwalten des Zugriffs auf Ihre Azure-Abonnementressourcen.
Aktivieren
Eine systemseitig zugewiesene verwaltete Identität wird mit einem Mausklick aktiviert. Sie können sie entweder während der Erstellung eines virtuellen Computers oder in den Eigenschaften eines vorhandenen virtuellen Computers aktivieren.
So aktivieren Sie eine systemseitig zugewiesene verwaltete Identität auf einem neuen virtuellen Computer:
Melden Sie sich beim Azure-Portal
Erstellen eines virtuellen Computers mit aktivierter systemseitig zugewiesener Identität
Gewähren von Zugriff
Um Ihrem virtuellen Computer Zugriff auf eine Datenbank in Azure SQL-Datenbank zu gewähren, können Sie einen vorhandenen logischen SQL-Server verwenden oder einen neuen erstellen. Zum Erstellen eines neuen Servers und einer Datenbank mithilfe des Azure-Portals befolgen Sie diesen Azure SQL-Schnellstart. Es gibt in der Azure SQL-Dokumentation auch Schnellstarts, in denen die Azure-Befehlszeilenschnittstelle und Azure PowerShell verwendet werden.
Zur Gewährung des Datenbankzugriffs für Ihren virtuellen Computer sind zwei Schritte erforderlich:
- Aktivieren Sie die Microsoft Entra-Authentifizierung für den Server.
- Erstellen eines in der Datenbank enthaltenen Benutzers, der die vom System zugewiesene Identität des virtuellen Computers darstellt
Microsoft Entra-Authentifizierung aktivieren
So konfigurieren Sie die Microsoft Entra-Authentifizierung:
- Wählen Sie im Azure-Portal im Navigationsbereich links SQL-Server aus.
- Klicken Sie auf den SQL-Server, für den die Microsoft Entra-Authentifizierung aktiviert werden soll.
- Klicken Sie auf dem Blatt im Bereich Einstellungen auf Active Directory-Administrator.
- Klicken Sie auf der Befehlsleiste auf Administrator festlegen.
- Wählen Sie ein Microsoft Entra-Benutzerkonto als Administrator des Servers aus, und klicken Sie auf Auswählen.
- Klicken Sie auf der Befehlsleiste auf Speichern.
Erstellen eines enthaltenen Benutzers
In diesem Abschnitt wird gezeigt, wie Sie einen in der Datenbank enthaltenen Benutzer erstellen, der die systemseitig zugewiesene Identität des virtuellen Computers darstellt. Für diesen Schritt benötigen Sie Microsoft SQL Server Management Studio (SSMS). Bevor Sie beginnen, sollten Sie die folgenden Artikel mit Hintergrundinformationen zur Microsoft Entra-Integration lesen:
- Universelle Authentifizierung bei SQL-Datenbank und Azure Synapse Analytics (SSMS-Unterstützung für MFA)
- Konfigurieren und Verwalten der Microsoft Entra-Authentifizierung mit SQL-Datenbank oder Azure Synapse Analytics
SQL DB erfordert eindeutige Microsoft Entra ID-Anzeigenamen. Mit dieser Option müssen die für verwaltete Identitäten aktivierten Microsoft Entra-Konten, wie z. B. Benutzer*innen, Gruppen und Dienstprinzipale (Anwendungen), und VM-Namen in Bezug auf den Anzeigenamen in Microsoft Entra ID eindeutig definiert werden. SQL-Datenbank überprüft den Microsoft Entra ID-Anzeigenamen während der T-SQL-Erstellung solcher Benutzer. Wenn er nicht eindeutig ist, kann der Befehl, der die Angabe eines Microsoft Entra ID-Anzeigenamens für ein bestimmtes Konto anfordert, nicht ausgeführt werden.
So erstellen Sie einen enthaltenen Benutzer:
Starten Sie SQL Server Management Studio.
Geben Sie im Dialogfeld Mit Server verbinden im Feld Servername den Namen Ihres Servers ein.
Wählen Sie im Feld Authentifizierung die Option Active Directory: universell mit MFA-Unterstützung aus.
Geben Sie im Feld Benutzername den Namen des Microsoft Entra-Kontos ein, das Sie als Serveradministrator festlegen möchten, z.B, helen@woodgroveonline.com
Klicken Sie auf Optionen.
Geben Sie im Feld Mit Datenbank verbinden den Namen der systemfremden Datenbank ein, die Sie konfigurieren möchten.
Klicken Sie auf Verbinden. Schließen Sie den Anmeldevorgang ab.
Erweitern Sie im Objekt-Explorer den Ordner Datenbanken.
Klicken Sie mit der rechten Maustaste auf eine Benutzerdatenbank, und wählen Sie Neue Abfrage aus.
Geben Sie im Abfragefenster die folgende Zeile ein, und klicken Sie auf der Symbolleiste auf Ausführen:
Hinweis
Im folgenden Befehl ist
VMName
der Name des virtuellen Computers, auf dem Sie im Abschnitt mit den Voraussetzungen die vom System zugewiesene Identität aktiviert haben.CREATE USER [VMName] FROM EXTERNAL PROVIDER
Der Befehl sollte erfolgreich ausgeführt werden und den enthaltenen Benutzer für die vom System zugewiesene Identität des virtuellen Computers erstellen.
Leeren Sie das Abfragefenster, geben Sie die folgende Zeile ein, und klicken Sie auf der Symbolleiste auf Ausführen:
Hinweis
Im folgenden Befehl ist
VMName
der Name des virtuellen Computers, auf dem Sie im Abschnitt mit den Voraussetzungen die vom System zugewiesene Identität aktiviert haben.Wenn der Fehler „Prinzipal
VMName
hat doppelten Anzeigenamen“ auftritt, fügen Sie die CREATE USER-Anweisung mit „WITH OBJECT_ID='xxx'“ an.ALTER ROLE db_datareader ADD MEMBER [VMName]
Der Befehl sollte erfolgreich abgeschlossen werden und dem enthaltenen Benutzer die Möglichkeit gewähren, die gesamte Datenbank zu lesen.
Auf dem virtuellen Computer ausgeführter Code kann jetzt unter Verwendung der systemseitig zugewiesenen verwalteten Identität ein Token abrufen und sich damit beim Server authentifizieren.
Zugreifen auf Daten
In diesem Abschnitt wird gezeigt, wie Sie mithilfe der systemseitig zugewiesenen verwalteten Identität des virtuellen Computers ein Zugriffstoken abrufen und damit Azure SQL aufrufen. Azure SQL unterstützt die Microsoft Entra-Authentifizierung nativ, sodass Zugriffstoken, die mit verwalteten Identitäten für Azure-Ressourcen abgerufen wurden, direkt angenommen werden können. Für diese Methode müssen in der Verbindungszeichenfolge keine Anmeldeinformationen angegeben werden.
Im Folgenden finden Sie ein .NET-Codebeispiel für das Öffnen einer Verbindung mit SQL mithilfe der Authentifizierung mit einer verwalteten Active Directory-Identität. Der Code muss auf dem virtuellen Computer ausgeführt werden, um auf den Endpunkt der systemseitig zugewiesenen verwalteten Identität des virtuellen Computers zugreifen zu können. Für die Verwendung dieser Methode ist .NET Framework 4.6.2 oder höher bzw. .NET Core 3.1 oder höher erforderlich. Ersetzen Sie die Werte von AZURE-SQL-SERVERNAME und DATABASE, und fügen Sie der Microsoft.Data.SqlClient-Bibliothek einen NuGet-Verweis hinzu.
using Microsoft.Data.SqlClient;
try
{
//
// Open a connection to the server using Active Directory Managed Identity authentication.
//
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>; Authentication=Active Directory Managed Identity; Encrypt=True";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
Hinweis
Sie können verwaltete Identitäten zusammen mit anderen Programmieroptionen über unsere SDKs verwenden.
Eine andere schnelle Möglichkeit zum Testen der umfassenden Einrichtung ohne Schreiben und Bereitstellen einer App auf dem virtuellen Computer bietet PowerShell.
Navigieren Sie im Portal zu Virtuelle Computer, wechseln Sie dann zu Ihrem virtuellen Windows-Computer, und klicken Sie in der Übersicht auf Verbinden.
Geben Sie Ihre VM-Administratoranmeldeinformationen ein, die Sie hinzugefügt haben, als Sie die Windows-VM erstellt haben.
Sie haben nun eine Remotedesktopverbindung mit dem virtuellen Computer erstellt. Öffnen Sie jetzt PowerShell in der Remotesitzung.
Erstellen Sie mithilfe des PowerShell-Befehls
Invoke-WebRequest
eine Anforderung an den lokalen Endpunkt der verwalteten Identität, um ein Zugriffstoken für Azure SQL zu erhalten.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F' -Method GET -Headers @{Metadata="true"}
Konvertieren Sie die Antwort aus einem JSON-Objekt in ein PowerShell-Objekt.
$content = $response.Content | ConvertFrom-Json
Extrahieren Sie das Zugriffstoken aus der Antwort.
$AccessToken = $content.access_token
Öffnen Sie eine Verbindung zum Server. Denken Sie daran, die Werte für AZURE-SQL-SERVERNAME und DATABASE zu ersetzen.
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>; Encrypt=True;" $SqlConnection.AccessToken = $AccessToken $SqlConnection.Open()
Als Nächstes erstellen Sie eine Abfrage und senden diese an den Server. Denken Sie daran, den Wert für TABLE zu ersetzen.
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = "SELECT * from <TABLE>;" $SqlCmd.Connection = $SqlConnection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet)
Überprüfen Sie den Wert von $DataSet.Tables[0]
zum Anzeigen der Ergebnisse der Abfrage.
Disable
Wenn Sie die systemseitig zugewiesene Identität auf Ihrem virtuellen Computer deaktivieren möchten, legen Sie ihren Status auf Aus fest.
Nächste Schritte
In diesem Tutorial haben Sie gelernt, wie Sie eine systemseitig zugewiesene verwaltete Identität für den Zugriff auf Azure SQL-Datenbank verwenden. Weitere Informationen zu Azure SQL-Datenbank: