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 Microsoft Entra authentication.

Um sich erfolgreich bei einer SQL-Datenbank zu authentifizieren, muss ein Microsoft Entra Benutzer, ein serviceprinzipal oder seine group ü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.

Um den Connection String zu Ihrer SQL-Datenbank in Fabric zu finden, siehe Verbinden 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 Fabric-Mandanteneinstellung „Dienstprinzipale können Fabric-APIs verwenden“ aktivieren. Informationen zum Aktivieren der Mandanteneinstellungen finden Sie unter Fabric-Mandanteneinstellungen.

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

Sie können eine Verbindung zu einer Datenbank mithilfe von Microsoft Entra-Authentifizierung herstellen:

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

Erstellen von Datenbankbenutzern für Microsoft Entra Identitäten

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

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.

Datenbankbenutzer erstellen, wenn Sie als Microsoft Entra-Benutzer verbunden sind

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 Hauptbenutzernamen mit Microsoft Entra, ruft die Prinzipal-ID (Objekt-ID des Benutzers oder der Gruppe, Anwendungs-ID oder Client-ID) ab und speichert den Bezeichner als Sicherheitskennzeichen-ID (SID) des Benutzers in den SQL-Metadaten. Sie müssen Mitglied der Rolle Directory Readers in Microsoft Entra sein, wenn Sie die Klausel FROM EXTERNAL PROVIDER verwenden. Die folgenden T-SQL-Beispielskripts verwenden FROM EXTERNAL PROVIDER, 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, wenn eine Verbindung als Microsoft Entra Dienstprinzipal hergestellt wird

Wenn eine Anwendung mit einer Datenbank über einen Dienstprinzipal verbunden ist, muss die Anwendung CREATE USER mit den Klauseln SID und TYPE ausgeben, um Benutzer für Microsoft Entra Principals 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 Benutzer oder eine Gruppe in Microsoft Entra ist, muss die SID eine Objekt-ID dieses Benutzers 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 Benutzer 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 mit dem Namen bob@contoso.com und legt die SID des neuen Benutzers auf die Objekt-ID des Microsoft Entra Benutzers fest. 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 Serviceprincipal namens HRApp erstellt, wobei die SID des neuen Benutzers auf die Client-ID des Serviceprincipals 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 gruppe Microsoft Entra namens HR erstellt, 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 [' + @group_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);

Begrenzungen

  • Microsoft Entra ID ist der einzige Identitätsanbieter, den die SQL-Datenbank in Fabric unterstützt. Insbesondere wird die SQL-Authentifizierung nicht unterstützt.
  • Anmeldungen (Serverprinzipale) werden nicht unterstützt.
  • Derzeit ist die einzige unterstützte Verbindungsrichtlinie für sql-Datenbank in Microsoft Fabric Default. Weitere Informationen finden Sie unter Verbindungsrichtlinie.