Microsoft Entra-Serverprinzipale

Gilt für:Azure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse Analytics (nur dedizierte SQL-Pools)

Sie können jetzt Serverprinzipale aus Microsoft Entra ID (vormals Azure Active Directory) erstellen und nutzen, die Anmeldungen in der virtuellen master Datenbank von Azure SQL-Datenbank und Azure SQL Managed Instance sind.

Hinweis

Microsoft Entra Serverprinzipale (Anmeldungen) sind in der Regel für Azure SQL-Datenbank, Azure SQL Managed Instance und SQL Server 2022 und höher verfügbar. Microsoft Entra Serverprinzipale sind derzeit als öffentliche Vorschau für Azure Synapse Analytics verfügbar.

Die Verwendung von Microsoft Entra-Serverprinzipalen mit Ihrer Azure SQL-Ressource bietet mehrere Vorteile:

  • Unterstützung für Serverrollen in Azure SQL-Datenbank zur Berechtigungsverwaltung.
  • Unterstützung mehrerer Microsoft Entra-Benutzer mit speziellen Rollen für SQL-Datenbank, z. B. die Rollen loginmanager und dbmanager.
  • Funktionale Parität zwischen SQL- und Microsoft Entra-Anmeldungen.
  • Erhöhen der Unterstützung der funktionalen Verbesserung, z. B. Nutzung der reinen Microsoft Entra-Authentifizierung. Die reine Microsoft Entra-Authentifizierung ermöglicht es, die SQL-Authentifizierung zu deaktivieren, einschließlich SQL-Serveradministratoren, SQL-Anmeldungen und -Benutzer.
  • Ermöglicht Microsoft Entra-Prinzipalen die Unterstützung von Georeplikaten. Microsoft Entra-Prinzipale können eine Verbindung mit dem Geo-Replikat einer Benutzerdatenbank herstellen und verfügen auf dem primären Server über die Berechtigungen schreibgeschützt und Verweigern.
  • Verwenden Sie Microsoft Entra-Dienstprinzipalanmeldungen mit speziellen Rollen, um die Erstellung und Verwaltung von Benutzern und Datenbanken mithilfe von Microsoft Entra-Anwendungen vollständig zu automatisieren.

Weitere Informationen zur Microsoft Entra-Authentifizierung in Azure SQL finden Sie unter Verwenden der Microsoft Entra-Authentifizierung.

Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um Microsoft Entra-Anmeldungen in der virtuellen master-Datenbank zu verwenden oder zu erstellen.

  • Administratorberechtigung für Microsoft Entra oder Mitgliedschaft in der Serverrolle loginmanager. Die erste Microsoft Entra-Anmeldung kann nur vom Microsoft Entra-Administrator erstellt werden.
  • Muss ein Mitglied von Microsoft Entra ID innerhalb desselben Verzeichnisses sein, das für die Azure SQL-Datenbank verwendet wird.

Standardmäßig wird neu erstellten Microsoft Entra-Logins in der master-Datenbank die Berechtigung VIEW ANY DATABASE gewährt.

Syntax der Microsoft Entra-Prinzipale

Verwenden Sie die folgende Syntax, um Microsoft Entra-Server und Datenbankprinzipale zu erstellen und zu verwalten.

Erstellen der Anmeldung

Diese Syntax erstellt eine Anmeldung auf Serverebene basierend auf einer Microsoft Entra-Identität. Nur Microsoft Entra-Administratoren können diesen Befehl in der virtuellen master-Datenbank ausführen.

CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

Der login_name gibt den Microsoft Entra-Prinzipal an, bei dem es sich um einen Benutzer, eine Gruppe oder eine Anwendung von Microsoft Entra handelt.

Weitere Informationen finden Sie unter CREATE LOGIN (Transact-SQL).

Benutzer aus der Anmeldung erstellen

Die folgende T-SQL-Syntax erstellt einen datenbankbezogenen Microsoft Entra-Prinzipal, der einer Microsoft Entra-Anmeldung in der virtuellen master-Datenbank zugeordnet ist. Ähnlich wie bei der Syntax zum Erstellen einer Datenbank, die Microsoft Entra-Benutzer enthält, ist die Angabe von FROM LOGIN [login_name] anstelle von FROM EXTERNAL PROVIDER der einzige Unterschied.

Verwenden Sie die folgende Syntax, um einen Microsoft Entra-Benutzer aus einer Microsoft Entra-Anmeldung zu erstellen.

CREATE USER [user_name] FROM LOGIN [login_name]

Sie können die Spalte SID aus sys.database_principals verwenden, um zwischen einem in Microsoft Entra-enthaltenen Datenbankbenutzer und einem Microsoft Entra-Benutzer zu unterscheiden, der aus einer Anmeldung erstellt wurde. Bei einem eigenständigen Datenbankbenutzer ist SID eine binäre Zeichenfolge mit einer Länge von 16. Bei einem anmeldebasierten Benutzer weist SID eine Länge von 18 und ein Suffix von AADE auf.

Hinweis

Durch Anhängen des Suffixes AADE an die SID erkennen wir, dass ein Microsoft Entra-Benutzer aus einer Anmeldung erstellt wurde. Dies bedeutet jedoch auch, dass die SIDs für die Anmeldung und deren Benutzer zwischen sys.server_principals und sys.database_principals nicht übereinstimmen. Um den Benutzer wieder mit seiner Anmeldung zu korrelieren, muss das Suffix AADE zuerst entfernt werden.

Informationen zum konzeptionellen Unterschied zwischen anmeldebasierten Benutzern und eigenständigen Datenbankbenutzern finden Sie unter Eigenständige Datenbankbenutzer.

Weitere Informationen zur gesamten CREATE USER-Syntax finden Sie unter CREATE USER (Transact-SQL).

Deaktivieren oder Aktivieren einer Anmeldung mithilfe von ALTER LOGIN

Die DDL-Syntax ALTER LOGIN (Transact-SQL) kann verwendet werden, um eine Microsoft Entra-Anmeldung in Azure SQL-Datenbank zu aktivieren oder zu deaktivieren.

ALTER LOGIN [login_name] DISABLE 

Wenn eine Anmeldung deaktiviert ist, sind Verbindungen mit diesem Serverprinzipal nicht mehr zulässig. Außerdem wird dadurch verhindert, dass alle Datenbankprinzipale (Benutzer), die aus dieser Anmeldung erstellt wurden, eine Verbindung zu ihren jeweiligen Datenbanken herstellen können.

Hinweis

  • ALTER LOGIN login_name DISABLE wirkt sich nicht auf eigenständige Datenbankbenutzer aus, da sie den Anmeldeinformationen nicht zugeordnet sind.

  • ALTER LOGIN login_name DISABLE wird für Microsoft Entra-Gruppen nicht unterstützt.

  • Eine einzelne deaktivierte Anmeldung kann nicht zu Benutzer*innen gehören, die Teil einer Anmeldegruppe sind, die in der master-Datenbank erstellt wurde (z. B. Microsoft Entra-Administratorgruppe).

  • Damit die DISABLE- oder ENABLE-Änderungen sofort wirksam werden, müssen der Authentifizierungs-Cache und der TokenAndPermUserStore-Cache mit den T-SQL-Befehlen gelöscht werden.

    DBCC FLUSHAUTHCACHE
    DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS 
    

Rollen für Microsoft Entra-Prinzipale

Spezielle Rollen für SQL-Datenbank können Benutzer*innen in der virtuellen master-Datenbank für Microsoft Entra-Prinzipale zugewiesen werden, einschließlich dbmanager und loginmanager.

Azure SQL-Datenbank-Serverrollen können Anmeldungen in der virtuellen master-Datenbank zugewiesen werden.

Ein Tutorial zum Erteilen dieser Rollen finden Sie unter Tutorial: Erstellen und Verwenden Microsoft Entra-Serveranmeldungen.

Einschränkungen und Hinweise

  • Der SQL Server-Administrator kann keine Microsoft Entra-Anmeldungen oder -Benutzer in einer Datenbank erstellen.
  • Ein SQL-Administrator oder SQL-Benutzer kann die folgenden Microsoft Entra-Vorgänge nicht ausführen:
    • CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
    • EXECUTE AS USER [bob@contoso.com]
    • ALTER AUTHORIZATION ON securable::name TO [bob@contoso.com]
  • Der Identitätswechsel von Microsoft Entra-Serverprinzipalen (Anmeldungen) wird in Azure SQL-Datenbank und Azure Synapse Analytics nicht unterstützt. Für Azure SQL Managed Instance wird er unterstützt.
  • Microsoft Entra-Anmeldekonten dürfen nicht mit dem Microsoft Entra-Administrator identisch sein. Der Microsoft Entra-Administrator hat Vorrang vor jeder Anmeldung. Wenn ein Microsoft Entra-Konto bereits Zugriff auf den Server als Microsoft Entra-Administrator hat, entweder direkt oder als Teil einer Gruppe, hat die für dieses Konto erstellte Anmeldung keine Auswirkungen. Die Erstellung der Anmeldung wird nicht durch T-SQL blockiert. Nachdem sich das Konto beim Server authentifiziert hat, verfügt die Anmeldung über die effektiven Berechtigungen eines Microsoft Entra-Administrators und nicht über die einer neu erstellten Anmeldung.
  • Das Ändern von Berechtigungen für ein bestimmtes Microsoft Entra-Anmeldeobjekt wird nicht unterstützt:
    • GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
  • Wenn Sie die Berechtigungen für eine Microsoft Entra-Anmeldung ändern, werden die Änderungen standardmäßig erst wirksam, wenn die Anmeldung das nächste Mal eine Verbindung mit der Azure SQL-Datenbank herstellt. Alle vorhandenen offenen Verbindungen mit der Anmeldung sind nicht betroffen. Um zu erzwingen, dass Berechtigungsänderungen sofort wirksam werden, können Sie die Authentifizierung und TokenAndPermUserStore manuell löschen, wie weiter oben beschrieben, indem Sie eine Anmeldung mit ALTER LOGIN deaktivieren oder aktivieren. Dieses Verhalten gilt auch beim Vornehmen von Änderungen der Serverrollenmitgliedschaft mit ALTER SERVER ROLE.
  • In SQL Server Management Studio überprüft der Skriptbefehl zum Erstellen eines Benutzers nicht, ob bereits eine Microsoft Entra-Anmeldung master mit demselben Namen vorhanden ist. Es wird immer das T-SQL für einen Microsoft Entra-Benutzer einer eigenständigen Datenbank generiert.
  • Wenn Sie versuchen, eine Anmeldung oder einen Benutzer aus einem Dienstprinzipal mit einem nicht eindeutigen Anzeigenamen zu erstellen, tritt möglicherweise ein Fehler auf. Weitere Informationen zum Verhindern dieses Fehlers finden Sie unter Microsoft Entra-Anmeldungen und Benutzer mit nicht eindeutigen Anzeigenamen.
  • In Azure SQL-Datenbank und Azure Synapse Analytics kann es bei der Erteilung von Rollen und Berechtigungen an Datenbankbenutzer, die mit Microsoft Entra-Anmeldungen erstellt wurden, zu Verzögerungen kommen. Wenn dies auftritt, verwenden Sie die folgenden Befehle, um das Problem zu beheben:
    • Legen Sie den Benutzer aus der Benutzerdatenbank ab.
    • Führen Sie DBCC FREESYSTEMCACHE('TokenAndPermUserStore') aus, um Sicherheitscaches in der Datenbank zu löschen.
    • Führen Sie DBCC FLUSHAUTHCACHE aus, um den Kontextcache der Verbundauthentifizierung zu löschen.
    • Erstellen Sie den Benutzer basierend auf der Anmeldung.

Einschränkungen für Microsoft Entra-Gruppenserverprinzipale

Es folgen bekannte Einschränkungen für Microsoft Entra Gruppenanmeldungen in Azure SQL-Datenbank und Azure Synapse Analytics:

  • Azure SQL-Datenbank-Serverrollen werden für Microsoft Entra-Gruppen nicht unterstützt.
  • Wenn Ihr SQL-Administrator eine Microsoft Entra-Gruppe ist, gibt es einige Einschränkungen, wenn Benutzer dieser Gruppe eine Verbindung herstellen. Jeder Microsoft Entra-Benutzer ist nicht Teil der sys.server_principals-Tabelle. Dies hat verschiedene Folgen, einschließlich Aufrufen an SUSER_SID, die NULL zurückgeben.
  • Microsoft Entra-Benutzeranmeldungen, die Teil von Microsoft Entra-Gruppenanmeldungen sind, werden ebenfalls nicht implizit erstellt, d. h. sie verfügen nicht über ein Standardschema und können keine Vorgänge wie z. B. CREATE SCHEMA ausführen, bis eine Anmeldung für den Microsoft Entra-Benutzer erstellt wird oder der Gruppe ein Standardschema zugewiesen wird.
  • Das Ändern des Besitzers einer Datenbank zu einer Microsoft Entra-Gruppe wird nicht unterstützt.
    • ALTER AUTHORIZATION ON database::<mydb> TO [my_aad_group] schlägt mit einer Fehlermeldung fehl:

      Msg 33181, Level 16, State 1, Line 4
      The new owner cannot be Azure Active Directory group.
      

Nächste Schritte