Freigeben über


Microsoft Entra Dienstprinzipale mit Azure SQL

Gilt für: Azure SQL-Datenbank Azure SQL Managed Instance

Azure-SQL-Ressourcen unterstützen den programmgesteuerten Zugriff für Anwendungen unter Verwendung von Dienstprinzipalen und verwalteten Identitäten in Microsoft Entra ID (früher Azure Active Directory).

Unterstützung von Dienstprinzipalen (Microsoft Entra-Anwendungen)

Dieser Artikel bezieht sich auf Anwendungen, die in Microsoft Entra ID registriert sind. Die Verwendung von Anwendungsanmeldeinformationen für den Zugriff auf Azure SQL unterstützt das Sicherheitsprinzip der Aufgabentrennung und ermöglicht es Unternehmen, den Zugriff für jede Anwendung, die sich mit ihren Datenbanken verbindet, genau zu konfigurieren. Verwaltete Identitäten, eine spezielle Form von Dienstprinzipalen, sind empfehlenswert, da sie kennwortlos sind und keine vom Entwickler verwalteten Anmeldedaten benötigen.

Microsoft Entra ID ermöglicht außerdem erweiterte Authentifizierungsszenarien wie OAuth 2.0 On-Behalf-Of-Fluss (OBO). OBO ermöglicht es Anwendungen, angemeldete Benutzeranmeldeinformationen anzufordern, für Szenarien, in denen Anwendungen selbst keinen Datenbankzugriff ohne delegierte Berechtigungen erhalten sollten.

Weitere Informationen zu Microsoft Entra-Anwendungen finden Sie unter Anwendungs- und Dienstprinzipalobjekte in Microsoft Entra id und Erstellen eines Azure-Dienstprinzipals mit Azure PowerShell.

Microsoft Entra-Benutzererstellung mithilfe von Dienstprinzipalen

Die Unterstützung dieser Funktionalität ist hilfreich in Automatisierungsprozessen für Microsoft Entra-Prinzipale, in denen Microsoft Entra-Objekte in SQL-Datenbank oder SQL Managed Instance ohne menschlichen Eingriff erstellt und verwaltet werden. Dienstprinzipale können ein Microsoft Entra-Admin für den logischen SQL-Server oder die verwaltete Instanz sein, als Teil einer Gruppe oder als eigenständige Identität. Die Anwendung kann die Erstellung von Microsoft Entra-Objekten in SQL-Datenbank oder SQL Managed Instance automatisieren und ermöglicht die vollständige Automatisierung der Erstellung von Datenbankbenutzern.

Aktivieren von Dienstprinzipalen zum Erstellen von Microsoft Entra-Benutzern

Bei der Verwendung von Anwendungen für den Zugriff auf Azure SQL erfordert die Erstellung von Microsoft Entra-Benutzern und -Logins Berechtigungen, die Dienstprinzipalen oder verwalteten Identitäten nicht standardmäßig zugewiesen sind: die Fähigkeit, Benutzer, Gruppen und Anwendungen in einem Mandanten aus Microsoft Graph zu lesen. Diese Berechtigungen sind notwendig, damit die SQL-Engine die in CREATE LOGIN oder CREATE USER angegebene Identität validieren und wichtige Informationen abrufen kann, darunter die Objekt- oder Anwendungs-ID der Identität, die zur Erstellung der Anmeldung oder des Benutzers verwendet wird.

Wenn ein Microsoft Entra-Benutzer diese Befehle ausführt, verwendet die Microsoft-Anwendung von Azure SQL delegierte Berechtigungen, um den angemeldeten Benutzer zu verkörpern und Microsoft Graph mit dessen Berechtigungen abzufragen. Dieser Flow ist mit Dienstprinzipalen nicht möglich, denn eine Anwendung kann sich nicht als eine andere Anwendung ausgeben. Stattdessen versucht die SQL-Engine, ihre Serveridentität zu verwenden, die die primäre verwaltete Identität ist, die einer SQL Managed Instance, einem logischen Azure SQL-Server oder einem Azure Synapse-Arbeitsbereich zugewiesen ist. Die Serveidentität muss vorhanden sein und über die Microsoft Graph-Abfrageberechtigung verfügen, andernfalls schlägt der Vorgang fehl.

Die folgenden Schritte erläutern, wie Sie dem Server eine verwaltete Identität zuweisen und ihr die Microsoft Graph-Berechtigungen zuweisen, damit Dienstprinzipale Microsoft Entra-Benutzer und -Anmeldungen in der Datenbank erstellen können.

  1. Weisen Sie die Serveridentität zu. Die Serveridentität kann eine systemseitig oder eine benutzerseitig zugewiesene verwaltete Identität sein. Weitere Informationen finden Sie unter Verwaltete Identitäten in Microsoft Entra für Azure SQL.

    • Der folgende PowerShell-Befehl erstellt einen neuen logischen Server, der mit einer systemseitig zugewiesenen verwalteten Identität bereitgestellt wird:
    New-AzSqlServer -ResourceGroupName <resource group> -Location <Location name> -ServerName <Server name> -ServerVersion "12.0" -SqlAdministratorCredentials (Get-Credential) -AssignIdentity
    

    Weitere Informationen finden Sie im Befehl New-AzSqlServer oder im Befehl New-AzSqlInstance für SQL Managed Instance.

    • Führen Sie für einen vorhandenen logischen Server den folgenden Befehl aus, um ihm eine systemseitig zugewiesene verwaltete Identität hinzuzufügen:
    Set-AzSqlServer -ResourceGroupName <resource group> -ServerName <Server name> -AssignIdentity
    

    Weitere Informationen finden Sie im Befehl Set-AzSqlServer oder im Befehl Set-AzSqlInstance für SQL Managed Instance.

    • Führen Sie den Befehl Get-azsqlserver oder den Befehl Get-AzSqlInstance für SQL Managed Instance aus, um zu überprüfen, ob die Serveridentität dem Server zugewiesen wurde.

    Hinweis

    Die Serveridentität kann auch mit der REST-API und CLI-Befehlen zugewiesen werden. Weitere Informationen finden Sie unter az sql server create, az sql server update und Server – REST-API.

  2. Erteilen Sie der Serveridentität die Berechtigung zur Abfrage von Microsoft Graph. Dies kann auf mehrere Arten geschehen: durch Hinzufügen der Identität zur Microsoft Entra Verzeichnisleseberechtigte-Rolle, durch Zuweisung der individuellen Microsoft Graph-Berechtigungen oder durch Hinzufügen der Identität zu einer Gruppe mit Rollenzuweisung, die die Verzeichnisleseberechtigte-Rolle hat:

    • Hinzufügen der Serveridentität zu einer rollenzuweisenden Gruppe

      In Produktionsumgebungen wird empfohlen, dass ein Mandantenadministrator eine rollenzuweisungsfähige Gruppe erstellt und ihm die Rolle Verzeichnisleseberechtigte zuweist. Gruppenbesitzer können dann der Gruppe Serveridentitäten hinzufügen und diese Berechtigungen erben. Dadurch entfällt die Anforderung, dass ein globaler Administrator oder ein Administrator für privilegierte Rollen jeder einzelnen Serveridentität Berechtigungen erteilen muss, so dass Administratoren die Zuweisung von Berechtigungen für dieses Szenario an Eigentümer der Gruppe delegieren können. Weitere Informationen finden Sie unter Rolle „Verzeichnisleseberechtigte“ in Microsoft Entra ID für Azure SQL.

    • Zuweisen von Microsoft-Graph-Berechtigungen zur Serveridentität

      Um der Server-Identität die individuellen Microsoft Graph-Berechtigungen zuzuweisen, müssen Sie die Rolle Microsoft Entra Global Administrator oder Administrator für privilegierte Rollen haben. Dies wird gegenüber der Zuweisung der Rolle Verzeichnisleseberechtigte empfohlen, da diese Rolle Berechtigungen enthält, die die Serveridentität nicht benötigt. Durch die Zuweisung von Leseberechtigungen nur für den einzelnen Microsoft Graph werden die Berechtigungen der Serveridentität innerhalb Ihres Mandanten eingeschränkt und das Prinzip der geringsten Berechtigung beibehalten. Anweisungen finden Sie unter Verwaltete Identitäten in Microsoft Entra für Azure SQL.

    • Hinzufügen der Serveridentität zur Rolle „Verzeichnisleseberechtigte“

      Um die Server-Identität zur Rolle Verzeichnisleseberechtigte hinzuzufügen, müssen Sie Mitglied der Rolle Microsoft Entra Global Administrator oder Administrator für privilegierte Rollen sein. In Produktionsumgebungen wird diese Option aus zwei Gründen nicht empfohlen: Die Verzeichnisleseberechtigte-Rolle gibt mehr Berechtigungen, als die Serveridentität benötigt, und der Rollenzuweisungsprozess erfordert immer noch die Genehmigung des Administrators für jede Serveridentität (im Gegensatz zur Verwendung von Gruppen). Folgen Sie den Anweisungen für SQL Managed Instance, die im Artikel Festlegen des Microsoft Entra-Administrators (SQL Managed Instance) verfügbar sind.

Problembehandlung

Bei der Problembehandlung tritt möglicherweise der folgende Fehler auf:

Msg 33134, Level 16, State 1, Line 1
Principal 'test-user' could not be resolved.
Error message: 'Server identity is not configured. Please follow the steps in "Assign an Azure AD identity to your server and add Directory Reader permission to your identity" (https://aka.ms/sqlaadsetup)'

Dieser Fehler zeigt an, dass die Serveridentität nicht erstellt wurde oder dass ihr keine Microsoft-Graph-Berechtigungen zugewiesen wurden. Führen Sie die Schritte zum Zuweisen einer Identität zum logischen Server und Zuweisen der Berechtigung „Verzeichnisleseberechtigte“ zur Identität des logischen Servers aus.

Begrenzungen

  • Dienstprinzipale können sich nicht über die Grenzen von Mandanten hinweg authentifizieren. Der Versuch, mit einer Microsoft-Entra-Anwendung, die in einem anderen Mandanten erstellt wurde, auf eine SQL-Datenbank oder eine SQL Managed Instance zuzugreifen, schlägt fehl.

  • Das Modul Az.Sql 2.9.0 oder höher ist erforderlich, um eine Microsoft-Entra-Anwendung als Microsoft Entra-Administrator für Azure SQL einzurichten. Stellen Sie sicher, dass Sie ein Upgrade auf das neueste Modul ausgeführt haben.