Tutorial: Erstellen und Verwenden von Microsoft Entra-Serveranmeldungen
Gilt für: Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics (nur dedizierte SQL-Pools)
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 SQL Managed Instance. 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 virtuellenmaster
-Datenbank erstellen. Daher wird empfohlen, das Microsoft Entra-Administratorkonto zu verwenden, wenn Sie dieses Tutorial durchführen. Ein Microsoft Entra-Prinzipal mit der Rolleloginmanager
kann zwar eine Anmeldung erstellen, aber keine Benutzer innerhalb der virtuellenmaster
-Datenbank.
Erstellen einer Microsoft Entra-Anmeldung
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 Namencontoso
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.
Melden Sie sich mit SQL Server Management Studio (SSMS) mit dem für den Server eingerichteten Microsoft Entra-Administratorkonto bei der SQL-Datenbank an.
Führen Sie die folgende Abfrage aus:
Use master CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GO
Ü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
Die Anmeldung
bob@contoso.com
wurde in der virtuellenmaster
-Datenbank erstellt.
Erstelleneines Benutzers aus einer Microsoft Entra-Anmeldung
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 Beispielbob@contoso.com
, um Benutzer*innen in der virtuellenmaster
-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 virtuellenmaster
-Datenbank erstellen.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.Ü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.
Beispiel: CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
.
Sie können eine Microsoft Entra-Anmeldung mit einem Dienstprinzipal mit einem nicht eindeutigen Anzeigenamen erstellen. Weitere Informationen finden Sie unter Microsoft Entra-Anmeldungen und Benutzer mit nicht eindeutigen Anzeigenamen
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.
Führen Sie die folgende Abfrage aus:
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
Ü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.