Freigeben über


Authentifizierung in SQL-Datenbank in Microsoft Fabric

Gilt für:SQL-Datenbank in Microsoft Fabric

In diesem Artikel wird die Authentifizierung für SQL-Datenbanken erläutert.

Wie andere Microsoft Fabric-Elementtypen basieren SQL-Datenbanken auf der Microsoft Entra-Authentifizierung.

Um sich erfolgreich bei einer SQL-Datenbank zu authentifizieren, muss ein Microsoft Entra-Benutzer, ein Dienstprinzipal oder seine Gruppe über die Berechtigung "Element lesen" für die Datenbank in Fabric verfügen. Informationen zum Gewähren eines Microsoft Entra-Identitätszugriffs auf einen Fabric-Arbeitsbereich oder eine bestimmte Datenbank finden Sie unter Fabric-Zugriffssteuerungen.

Informationen zum Suchen der Verbindungszeichenfolge mit Ihrer SQL-Datenbank in Fabric finden Sie unter Herstellen einer Verbindung mit Ihrer SQL-Datenbank in Microsoft Fabric.

Hinweis

Damit Dienstprinzipale eine Verbindung mit Fabric und SQL-Datenbanken herstellen können, müssen Sie auch die Dienstprinzipale aktivieren, die Fabric-APIs Fabric-Mandanteneinstellung verwenden können. Informationen zum Aktivieren der Mandanteneinstellungen finden Sie unter Fabric-Mandanteneinstellungen.

Herstellen einer Verbindung mit einer SQL-Datenbank mithilfe der Microsoft Entra-Authentifizierung

Sie können mithilfe der Microsoft Entra-Authentifizierung eine Verbindung mit einer Datenbank herstellen:

Anwendungen und Tools müssen Treiber auf Versionen aktualisieren, die die Microsoft Entra-Authentifizierung unterstützen, und ein Schlüsselwort für den Authentifizierungsmodus in ihrer SQL-Verbindungszeichenfolge hinzufügen, z. B.ActiveDirectoryInteractive, ActiveDirectoryServicePrincipal oder ActiveDirectoryPassword.

Erstellen von Datenbankbenutzern für Microsoft Entra-Identitäten

Wenn Sie SQL-Zugriffssteuerungen mit Transact-SQL konfigurieren möchten, müssen Sie zunächst mit CREATE USER (Transact-SQL) Datenbankbenutzer erstellen, die Ihren Microsoft Entra-Identitäten (Benutzer und Benutzerinnen, Dienstprinzipale oder Gruppen) entsprechen.

Das Erstellen von Datenbankbenutzern ist nicht erforderlich, wenn Sie Fabric-Zugriffssteuerungen (Arbeitsbereichsrollen oder Elementberechtigungen) verwenden. Sie müssen keine Benutzer erstellen, wenn Sie Rollen auf SQL-Datenbankebene über das Fabric-Portal verwalten. Das Portal erstellt bei Bedarf automatisch Benutzer.

Erstellen von Datenbankbenutzer bei einer bestehenden Verbindung als Microsoft Entra-Benutzer

Wenn Sie mit Ihrer Datenbank als Microsoft Entra-Benutzer verbunden sind, sollten Sie CREATE USER mit der Klausel FROM EXTERNAL PROVIDER verwenden, um Benutzer für Microsoft Entra-Prinzipale zu erstellen. FROM EXTERNAL PROVIDER überprüft den angegebenen Prinzipalnamen mit Microsoft Entra, ruft die Prinzipal-ID (Objekt-ID, Anwendungs-ID oder Client-ID des Benutzers) ab und speichert den Bezeichner als Sicherheits-ID (SID) des Benutzers in SQL-Metadaten. Sie müssen Mitglied der Rolle „Verzeichnisleser“ in Microsoft Entra sein, wenn Sie die Klausel FROM EXTERNAL PROVIDER verwenden. In den folgenden T-SQL-Beispielskripts wird FROM EXTERNAL PROVIDER verwendet, um einen Benutzer basierend auf einem Microsoft Entra-Benutzer, einem Dienstprinzipal in Microsoft Entra oder einer Gruppe in Microsoft Entra zu erstellen.

-- Create a user for a Microsoft Entra user
CREATE USER [alice@contoso.com] FROM EXTERNAL PROVIDER;
-- Create a user for a service principal in Microsoft Entra
CREATE USER [HRApp] FROM EXTERNAL PROVIDER;
-- Create a user for a group in Microsoft Entra
CREATE USER [HR] FROM EXTERNAL PROVIDER; 

Erstellen von Datenbankbenutzern bei einer bestehenden Verbindung als Microsoft Entra-Dienstprinzipal

Wenn eine Anwendung mit einem Dienstprinzipal mit einer Datenbank verbunden ist, muss die Anwendung CREATE USER mit den Klauseln SID und TYPE ausstellen, um Benutzer für Microsoft Entra-Prinzipale zu erstellen. Der angegebene Prinzipalname wird in Microsoft Entra nicht überprüft. Es liegt in der Verantwortung der Anwendung (Anwendungsentwicklungsfachkräfte), einen gültigen Namen, eine gültige SID und einen Benutzerobjekttyp anzugeben.

Wenn der angegebene Prinzipal ein Benutzerkontos oder eine Gruppe in Microsoft Entra ist, muss die SID eine Objekt-ID dieses Benutzerkontos oder dieser Gruppe in Microsoft Entra sein. Wenn der angegebene Prinzipal ein Dienstprinzipal in Microsoft Entra ist, muss die SID eine Anwendungs-ID (Client-ID) des Dienstprinzipals in Microsoft Entra sein. Objekt-IDs und Anwendungs-IDs (Client-IDs), die von Microsoft Entra abgerufen werden, müssen in binary(16) konvertiert werden.

Das Argument TYPE muss einen Wert haben, auf den Folgendes zutrifft:

  • E – wenn der angegebene Microsoft Entra-Prinzipal ein Benutzerkonto oder ein Dienstprinzipal ist.
  • X – wenn der angegebene Microsoft Entra-Prinzipal eine Gruppe ist.

Das folgende T-SQL-Beispielskript erstellt einen Datenbankbenutzer für den Microsoft Entra-Benutzer namens bob@contoso.com, wobei die SID des neuen Benutzers auf die Objekt-ID des Microsoft Entra-Benutzers festgelegt wird. Der eindeutige Bezeichner der Objekt-ID des Benutzers wird konvertiert und dann zu einer CREATE USER-Anweisung verkettet. Ersetzen Sie <unique identifier sid> durch die Objekt-ID des Benutzers in Microsoft Entra.

DECLARE @principal_name SYSNAME = 'bob@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);

Im folgenden Beispiel wird ein Datenbankbenutzer für den Microsoft Entra-Dienstprinzipal namens HRApp erstellt, wobei die SID des neuen Benutzers auf die Client-ID des Dienstprinzipals in Microsoft Entra festgelegt wird.

DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);

Im folgenden Beispiel wird ein Datenbankbenutzer für die Microsoft Entra-Gruppe namens HRerstellt, wobei die SID des neuen Benutzers auf die Objekt-ID der Gruppe festgelegt wird.

DECLARE @group_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);

Begrenzungen

  • Microsoft Entra ID ist die einzige SQL-Datenbank des Identitätsanbieters in Fabric. Insbesondere wird die SQL-Authentifizierung nicht unterstützt.
  • Anmeldungen (Serverprinzipals) werden nicht unterstützt.