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

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.

Screenshot shows the System assigned tab for a virtual machine where you can turn on the System assigned status.

So aktivieren Sie eine systemseitig zugewiesene verwaltete Identität auf einem neuen virtuellen Computer:

  1. Melden Sie sich beim Azure-Portal

  2. 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:

  1. Aktivieren Sie die Microsoft Entra-Authentifizierung für den Server.
  2. 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:

  1. Wählen Sie im Azure-Portal im Navigationsbereich links SQL-Server aus.
  2. Klicken Sie auf den SQL-Server, für den die Microsoft Entra-Authentifizierung aktiviert werden soll.
  3. Klicken Sie auf dem Blatt im Bereich Einstellungen auf Active Directory-Administrator.
  4. Klicken Sie auf der Befehlsleiste auf Administrator festlegen.
  5. Wählen Sie ein Microsoft Entra-Benutzerkonto als Administrator des Servers aus, und klicken Sie auf Auswählen.
  6. 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:

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:

  1. Starten Sie SQL Server Management Studio.

  2. Geben Sie im Dialogfeld Mit Server verbinden im Feld Servername den Namen Ihres Servers ein.

  3. Wählen Sie im Feld Authentifizierung die Option Active Directory: universell mit MFA-Unterstützung aus.

  4. Geben Sie im Feld Benutzername den Namen des Microsoft Entra-Kontos ein, das Sie als Serveradministrator festlegen möchten, z.B, helen@woodgroveonline.com

  5. Klicken Sie auf Optionen.

  6. Geben Sie im Feld Mit Datenbank verbinden den Namen der systemfremden Datenbank ein, die Sie konfigurieren möchten.

  7. Klicken Sie auf Verbinden. Schließen Sie den Anmeldevorgang ab.

  8. Erweitern Sie im Objekt-Explorer den Ordner Datenbanken.

  9. Klicken Sie mit der rechten Maustaste auf eine Benutzerdatenbank, und wählen Sie Neue Abfrage aus.

  10. 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.

  11. 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.

  1. Navigieren Sie im Portal zu Virtuelle Computer, wechseln Sie dann zu Ihrem virtuellen Windows-Computer, und klicken Sie in der Übersicht auf Verbinden.

  2. Geben Sie Ihre VM-Administratoranmeldeinformationen ein, die Sie hinzugefügt haben, als Sie die Windows-VM erstellt haben.

  3. Sie haben nun eine Remotedesktopverbindung mit dem virtuellen Computer erstellt. Öffnen Sie jetzt PowerShell in der Remotesitzung.

  4. 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
    
  5. Ö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.

Screenshot shows the System assigned tab for a virtual machine where you can turn off the System assigned status.

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: