Dela via


Autentisering i SQL-databas i Microsoft Fabric

Gäller för:SQL-databas i Microsoft Fabric

I den här artikeln beskrivs autentisering för SQL-databaser.

Precis som andra Microsoft Fabric objekttyper förlitar sig SQL-databaser på Microsoft Entra autentisering.

Om du vill autentisera till en SQL-databas måste en Microsoft Entra-användare, ett tjänsthuvudnamn eller deras grupp ha läsbehörighet för databasen i Fabric. Information om hur du ger åtkomst till en Fabric-arbetsyta eller en specifik databas för en Microsoft Entra-identitet finns i Fabric-åtkomstkontroller.

Information om hur du hittar anslutningssträngen till din SQL-databas i Fabric finns i Anslut till din SQL-databas i Microsoft Fabric.

Kommentar

Om du vill göra det möjligt för tjänsteprincipaler att ansluta till Fabric och till SQL-databaser måste du också aktivera inställningen Tjänsteprincipaler kan använda Fabric-API:er för Fabric-klienten. Information om hur du aktiverar klientinställningar finns i Fabric klientinställningar.

Ansluta till en SQL-databas med Microsoft Entra autentisering

Du kan ansluta till en databas med hjälp av Microsoft Entra autentisering med:

Program och verktyg måste uppgradera drivrutiner till versioner som stöder Microsoft Entra autentisering och lägga till ett nyckelord för autentiseringsläget i deras SQL connection string, till exempel ActiveDirectoryInteractive, ActiveDirectoryServicePrincipal eller ActiveDirectoryPassword.

Skapa databasanvändare för Microsoft Entra identiteter

Om du planerar att konfigurera SQL-åtkomstkontroller med Transact-SQL, Du måste först skapa databasanvändare som motsvarar dina Microsoft Entra identiteter – användare, tjänsthuvudnamn eller deras grupper – med CREATE USER (Transact-SQL).

Det krävs inte att du skapar databasanvändare om du använder åtkomstkontroller för infrastrukturresurser (arbetsyteroller eller objektbehörigheter). Du behöver inte heller skapa användare när du hanterar SQL-databasnivåroller från Fabric-portalen – portalen skapar automatiskt användare när det behövs.

Skapa databasanvändare när de är anslutna som en Microsoft Entra användare

När du är ansluten till databasen som en Microsoft Entra-användare bör du använda CREATE USER med satsen FROM EXTERNAL PROVIDER för att skapa användare för Microsoft Entra-principaler. FROM EXTERNAL PROVIDER validerar det angivna huvudnamnet med Microsoft Entra, hämtar huvudidentifieraren (användarens eller gruppens objekt-ID, program-ID eller klient-ID) och lagrar identifieraren som användarens säkerhetsidentifierare (SID) i SQL-metadata. Du måste vara medlem i rollen Directory Readers i Microsoft Entra när du använder satsen FROM EXTERNAL PROVIDER. Följande T-SQL-exempelskript använder FROM EXTERNAL PROVIDER för att skapa en användare baserat på en Microsoft Entra användare, ett tjänsthuvudnamn i Microsoft Entra eller en grupp i Microsoft Entra.

-- 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; 

Skapa databasanvändare när du är ansluten som Microsoft Entra tjänstens principanvändare

När ett program är anslutet till en databas med tjänstens huvudnamn måste programmet utfärda CREATE USER med satserna SID och TYPE för att skapa användare för Microsoft Entra huvudnamn. Det angivna huvudnamnet verifieras inte i Microsoft Entra. Det är ett ansvar för programmet (programutvecklaren) att ange ett giltigt namn och ett giltigt SID och en användarobjekttyp.

Om den angivna huvudenheten är en användare eller en grupp i Microsoft Entra måste SID motsvara ett objekt-ID för den användaren eller gruppen i Microsoft Entra. Om det angivna huvudnamnet är ett huvudnamn för tjänsten i Microsoft Entra måste SID vara ett program-ID (klient-ID) för tjänstens huvudnamn i Microsoft Entra. Objekt-ID och program-ID :er (klient-ID: er) som hämtats från Microsoft Entra måste konverteras till binary(16).

Argumentets TYPE värde måste vara:

  • E – om det angivna Microsoft Entra huvudkontot är en användare eller ett tjänstehuvudnamn.
  • X – om den angivna Microsoft Entra-principalen är en grupp.

Följande T-SQL-exempelskript skapar en databasanvändare för den Microsoft Entra användaren med namnet bob@contoso.com och anger SID för den nya användaren till objekt-ID:t för den Microsoft Entra användaren. Den unika identifieraren för användarens objekt-ID konverteras och sammanfogas sedan till en CREATE USER instruktion. Ersätt <unique identifier sid> med användarens objekt-ID i 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);

I följande exempel skapas en databasanvändare för tjänstens huvudkonto Microsoft Entra med namnet HRApp, och SID för den nya användaren anges till klient-ID för tjänstens huvudkonto i Microsoft Entra.

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);

I följande exempel skapas en databasanvändare för gruppen Microsoft Entra med namnet HR och anger SID för den nya användaren till objekt-ID för gruppen.

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);

Begränsningar

  • Microsoft Entra ID är den enda identitetsproviderns SQL-databas i Fabric som stöder. Mer specifikt stöds inte SQL-autentisering.
  • Inloggningar (serverhuvudnamn) stöds inte.
  • För närvarande är den enda anslutningsprincip som stöds för SQL-databasen i Microsoft Fabric Default. Mer information finns i Anslutningsprincip.