Tutorial: Erstellen und Verwenden von Microsoft Entra-Serveranmeldungen

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

Dieser Artikel führt Sie durch das Erstellen und Verwenden Microsoft Entra ID-Anmeldungen (früher Azure Active Directory) in der virtuellen master-Datenbank von Azure SQL

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen einer Microsoft Entra-Anmeldung in der virtuellen master-Datenbank mit der neuen Syntaxerweiterung für Azure SQL-Datenbank
  • Erstellen eines Benutzers, der einer Microsoft Entra-Anmeldung in der virtuellen master-Datenbank zugeordnet ist
  • Gewähren von Serverrollen für einen Microsoft Entra-Benutzer
  • Deaktivieren einer Microsoft Entra-Anmeldung

Hinweis

Microsoft Entra-Dienstprinzipale (Anmeldungen) befinden sich derzeit in Public Preview für Azure SQL-Datenbank. Azure SQL Managed Instance kann bereits Microsoft Entra-Anmeldungen verwenden.

Voraussetzungen

  • Ein SQL-Datenbank oder SQL verwaltete Instanz einer Datenbank. Weitere Informationen finden Sie unter Schnellstart: Erstellen einer Azure SQL-Einzeldatenbank, wenn Sie noch keine Azure SQL-Datenbank erstellt haben, oder Schnellstart: Erstellen einer verwalteten Azure SQL-Instanz.
  • Einrichtung der Microsoft Entra-Authentifizierung für eine SQL-Datenbank oder verwaltete Instanz. Weitere Informationen finden Sie unter Konfigurieren und Verwalten der Microsoft Entra-Authentifizierung mit Azure SQL.
  • In diesem Artikel finden Sie Anweisungen zum Erstellen von Microsoft Entra-Anmeldungen und -Benutzern in der virtuellen master-Datenbank. Nur Microsoft Entra-Administrator*innen können Benutzer*innen in der virtuellen master-Datenbank erstellen. Daher wird empfohlen, das Microsoft Entra-Administratorkonto zu verwenden, wenn Sie dieses Tutorial durchführen. Ein Microsoft Entra-Prinzipal mit der Rolle loginmanager kann zwar eine Anmeldung erstellen, aber keine Benutzer innerhalb der virtuellen master-Datenbank.

Erstellen einer Microsoft Entra-Anmeldung

  1. Erstellen Sie eine Azure SQL-Datenbank-Anmeldung für ein Microsoft Entra-Konto. In unserem Beispiel verwenden wir bob@contoso.com, das in unserer Microsoft Entra-Domain mit dem Namen contoso vorhanden ist. Eine Anmeldung kann auch aus einer Microsoft Entra-Gruppe oder einem Dienstprinzipal (Anwendungen) erstellt werden. Beispiel: mygroup ist eine Microsoft Entra-Gruppe, die aus Microsoft Entra-Konten besteht, die Mitglied dieser Gruppe sind. Weitere Informationen finden Sie unter CREATE LOGIN (Transact-SQL).

    Hinweis

    Die erste Microsoft Entra-Anmeldung muss vom Microsoft Entra-Administrator erstellt werden. Der Microsoft Entra-Administrator kann ein Microsoft Entra-Benutzer oder eine -Gruppe sein. Eine SQL-Anmeldung kann keine Microsoft Entra-Anmeldungen erstellen.

  2. Melden Sie sich mit SQL Server Management Studio (SSMS) mit dem für den Server eingerichteten Microsoft Entra-Administratorkonto bei der SQL-Datenbank an.

  3. Führen Sie die folgende Abfrage aus:

    Use master
    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  4. Überprüfen Sie die erstellte Anmeldung in sys.server_principals. Führen Sie die folgenden Abfrage aus:

    SELECT name, type_desc, type, is_disabled 
    FROM sys.server_principals
    WHERE type_desc like 'external%'  
    

    Sie würden für Folgendes eine ähnliche Ausgabe sehen:

    Name                            type_desc       type   is_disabled 
    bob@contoso.com                 EXTERNAL_LOGIN  E      0 
    
  5. Die Anmeldung bob@contoso.com wurde in der virtuellen master-Datenbank erstellt.

Erstelleneines Benutzers aus einer Microsoft Entra-Anmeldung

  1. Nachdem wir nun eine Microsoft Entra-Anmeldung erstellt haben, können wir einen Microsoft Entra-Benutzer auf Datenbankebene erstellen, der der Microsoft Entra-Anmeldung in der virtuellen master-Datenbank zugeordnet ist. Sie verwenden weiterhin das Beispiel bob@contoso.com, um Benutzer*innen in der virtuellen master-Datenbank zu erstellen, da das Hinzufügen von Benutzer*innen zu speziellen Rollen veranschaulicht werden soll. Nur Microsoft Entra-Administrator*innen oder SQL-Serveradministrator*innen können Benutzer*innen in der virtuellen master-Datenbank erstellen.

  2. Sie verwenden die virtuelle master-Datenbank, aber Sie können eine beliebige Datenbank nutzen, wenn Sie Benutzer*innen in anderen Datenbanken erstellen möchten. Führen Sie die folgende Abfrage aus.

    Use master
    CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
    

    Tipp

    Obwohl es nicht erforderlich ist, Microsoft Entra-Benutzeraliase (z. B. bob@contoso.com) zu verwenden, empfiehlt es sich, den gleichen Alias für Microsoft Entra-Benutzer und Microsoft Entra-Anmeldungen zu verwenden.

  3. Überprüfen Sie den erstellten Benutzer in sys.database_principals. Führen Sie die folgenden Abfrage aus:

    SELECT name, type_desc, type 
    FROM sys.database_principals 
    WHERE type_desc like 'external%'
    

    Sie würden für Folgendes eine ähnliche Ausgabe sehen:

    Name                            type_desc       type
    bob@contoso.com                 EXTERNAL_USER   E
    

Hinweis

Die vorhandene Syntax zum Erstellen eines Microsoft Entra-Benutzers ohne Microsoft Entra-Anmeldung wird weiterhin unterstützt. Durch Ausführen der folgenden Syntax wird eine Datenbank erstellt, die einen Benutzer in der spezifischen Datenbank enthält, mit der Sie verbunden sind. Wichtig ist, dass dieser Benutzer keiner Anmeldung zugeordnet ist, auch wenn eine Anmeldung mit demselben Namen in der virtuellen master-Datenbank vorhanden ist.

Beispielsweise CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.

Gewähren von Rollen auf Serverebene für Microsoft Entra-Anmeldungen

Sie können Anmeldungen zu den feste Rollen auf Serverebene hinzufügen, z. B. die Rollen ##MS_DefinitionReader##, ##MS_ServerStateReader## oder ##MS_ServerStateManager##.

Hinweis

Die hier erwähnten Rollen auf Serverebene werden für Microsoft Entra-Gruppen nicht unterstützt.

ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateManager## ADD MEMBER [AzureAD_object];

Berechtigungen sind erst wirksam, wenn der Benutzer die Verbindung wiederhergestellt hat. Leeren Sie auch den DBCC-Cache:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS 

Um zu überprüfen, welche Microsoft Entra Anmeldungen Teil von Rollen auf Serverebene sind, führen Sie die folgende Abfrage aus:

SELECT roles.principal_id AS RolePID,roles.name AS RolePName,
       server_role_members.member_principal_id AS MemberPID, members.name AS MemberPName
       FROM sys.server_role_members AS server_role_members
       INNER JOIN sys.server_principals AS roles
       ON server_role_members.role_principal_id = roles.principal_id
       INNER JOIN sys.server_principals AS members 
       ON server_role_members.member_principal_id = members.principal_id;

Gewähren spezieller Rollen für Microsoft Entra-Benutzer

Spezielle Rollen für SQL-Datenbank können Benutzer*innen in der virtuellen master-Datenbank zugewiesen werden.

Um Benutzer*innen eine der speziellen Datenbankrollen zuzuweisen, müssen die Benutzer*innen in der virtuellen master-Datenbank enthalten sein.

Zum Hinzufügen eines Benutzers zu einer Rolle können Sie die folgende Abfrage ausführen:

ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object] 

Führen Sie die folgende Abfrage aus, um einen Benutzer aus einer Rolle zu entfernen:

ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object] 

AzureAD_object kann ein Microsoft Entra-Benutzer, eine -Gruppe oder ein -Dienstprinzipal in Microsoft Entra ID sein.

In unserem Beispiel haben wir den Namen bob@contoso.com erstellt. Lassen Sie uns dem Benutzer die Rollen dbmanager und loginmanager zuweisen.

  1. Führen Sie die folgende Abfrage aus:

    ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] 
    ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com] 
    
  2. Überprüfen Sie die Zuweisung der Datenbankrolle, indem Sie die folgende Abfrage ausführen:

    SELECT DP1.name AS DatabaseRoleName,    
      isnull (DP2.name, 'No members') AS DatabaseUserName    
    FROM sys.database_role_members AS DRM   
    RIGHT OUTER JOIN sys.database_principals AS DP1   
      ON DRM.role_principal_id = DP1.principal_id   
    LEFT OUTER JOIN sys.database_principals AS DP2   
      ON DRM.member_principal_id = DP2.principal_id   
    WHERE DP1.type = 'R'and DP2.name like 'bob%' 
    

    Sie würden für Folgendes eine ähnliche Ausgabe sehen:

    DatabaseRoleName       DatabaseUserName 
    dbmanager              bob@contoso.com
    loginmanager           bob@contoso.com
    

Optional: Deaktivieren einer Anmeldung

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 [bob@contoso.com] DISABLE

Damit DISABLE- oder ENABLE-Änderungen sofort wirksam werden, müssen der Authentifizierungscache und der TokenAndPermUserStore-Cache mithilfe der folgenden T-SQL-Befehle gelöscht werden:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS 

Überprüfen Sie, ob die Anmeldung deaktiviert wurde, indem Sie die folgende Abfrage ausführen:

SELECT name, type_desc, type 
FROM sys.server_principals 
WHERE is_disabled = 1

Ein Anwendungsfall hierfür wäre, schreibgeschützt auf Georeplikaten zuzulassen, aber die Verbindung auf einem primären Server zu verweigern.

Siehe auch

Weitere Informationen und Beispiele finden Sie hier: