Condividi tramite


Autenticazione nel database SQL in Microsoft Fabric

Si applica a:Database SQL in Microsoft Fabric

Questo articolo illustra l'autenticazione per i database SQL.

Analogamente ad altri tipi di elementi di Microsoft Fabric, i database SQL si basano sull'autenticazione Microsoft Entra.

Per eseguire correttamente l'autenticazione a un database SQL, un utente di Microsoft Entra, un'entità servizio o il relativo gruppo, deve disporre dell'autorizzazione Read item per il database in Fabric. Per informazioni su come concedere a un'identità Di Microsoft Entra l'accesso a un'area di lavoro fabric o a un database specifico, vedere Controlli di accesso dell'infrastruttura.

Per trovare il stringa di connessione al database SQL in Fabric, vedere Connettersi al database SQL in Microsoft Fabric.

Nota

Per consentire alle entità servizio di connettersi a Fabric e ai database SQL, è anche necessario abilitare le entità servizio possono usare l'impostazione del tenant di Infrastruttura API di Infrastruttura. Per informazioni su come abilitare le impostazioni del tenant, vedere Impostazioni del tenant di Fabric.

Connettersi a un database SQL usando l'autenticazione Microsoft Entra

È possibile connettersi a un database usando l'autenticazione di Microsoft Entra con:

Le applicazioni e gli strumenti devono aggiornare i driver alle versioni che supportano l'autenticazione di Microsoft Entra e aggiungere una parola chiave della modalità di autenticazione nel relativo stringa di connessione SQL, ad esempio ActiveDirectoryInteractive, ActiveDirectoryServicePrincipalo ActiveDirectoryPassword.

Creare utenti di database per le identità di Microsoft Entra

Se si prevede di configurare i controlli di accesso SQL con Transact-SQL, è prima necessario creare utenti di database corrispondenti alle identità di Microsoft Entra, ovvero utenti, entità servizio o gruppi, con CREATE USER (Transact-SQL).

La creazione di utenti del database non è necessaria se si usano i controlli di accesso dell'infrastruttura (ruoli dell'area di lavoro o autorizzazioni per gli elementi). Non è necessario creare utenti quando si gestiscono ruoli a livello di database SQL dal portale di Fabric. Il portale crea automaticamente gli utenti quando necessario.

Creare utenti di database quando si è connessi come utente di Microsoft Entra

Quando si è connessi al database come utente di Microsoft Entra, è consigliabile usare CREATE USER con la clausola FROM EXTERNAL PROVIDER per creare utenti per le entità di sicurezza di Microsoft Entra. FROM EXTERNAL PROVIDER convalida il nome dell'entità specificato con Microsoft Entra, recupera l'identificatore principale (ID oggetto dell'utente o del gruppo, ID applicazione o ID client) e archivia l'identificatore come SID (Security Identifier) dell'utente nei metadati SQL. È necessario essere membri del ruolo Lettori directory in Microsoft Entra quando si usa la FROM EXTERNAL PROVIDER clausola . Gli script T-SQL di esempio seguenti usano FROM EXTERNAL PROVIDER per creare un utente basato su un utente di Microsoft Entra, un'entità servizio in Microsoft Entra o un gruppo in 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; 

Creare utenti di database quando si è connessi come entità servizio Microsoft Entra

Quando un'applicazione è connessa a un database con un'entità servizio, l'applicazione deve emettere CREATE USER con le clausole SID e TYPE per creare utenti per le entità di sicurezza Di Microsoft Entra. Il nome dell'entità specificato non viene convalidato in Microsoft Entra. È responsabilità dell'applicazione (sviluppatore di applicazioni) specificare un nome valido e un SID valido e un tipo di oggetto utente.

Se l'entità specificata è un utente o un gruppo in Microsoft Entra, il SID deve essere un ID oggetto di tale utente o gruppo in Microsoft Entra. Se l'entità servizio specificata è un'entità servizio in Microsoft Entra, il SID deve essere un ID applicazione (ID client) dell'entità servizio in Microsoft Entra. Gli ID oggetto e gli ID applicazione (ID client) ottenuti da Microsoft Entra devono essere convertiti in binary(16).

Il valore dell'argomento TYPE deve essere:

  • E - se l'entità microsoft Entra specificata è un utente o un'entità servizio.
  • X - se l'entità Microsoft Entra specificata è un gruppo.

Lo script di esempio T-SQL seguente crea un utente di database per l'utente di Microsoft Entra, denominato bob@contoso.com, impostando il SID del nuovo utente sull'ID oggetto dell'utente Microsoft Entra. L'identificatore univoco dell'ID oggetto dell'utente viene convertito e quindi concatenato in un'istruzione CREATE USER . Sostituire <unique identifier sid> con l'ID oggetto dell'utente 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);

Nell'esempio seguente viene creato un utente di database per l'entità servizio Microsoft Entra, denominata HRApp, impostando il SID del nuovo utente sull'ID client dell'entità servizio in 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);

Nell'esempio seguente viene creato un utente di database per il gruppo Microsoft Entra, denominato HR, impostando il SID del nuovo utente sull'ID oggetto del gruppo.

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

Limiti

  • Microsoft Entra ID è l'unico database SQL del provider di identità supportato da Fabric. In particolare, l'autenticazione SQL non è supportata.
  • Gli account di accesso (entità server) non sono supportati.