Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo ti guida nella creazione e nell'utilizzo dei login supportati da Microsoft Entra ID (precedentemente Azure Active Directory) all'interno del database virtuale master di un pool SQL dedicato Azure Synapse Analytics (precedentemente SQL DW). I pool SQL dedicati negli spazi di lavoro di Azure Synapse Analytics non usano server SQL logici.
Nota
Le entità server di Microsoft Entra sono attualmente in anteprima per Azure Synapse Analytics.
In questa esercitazione apprenderai a:
- Crea un accesso Microsoft Entra nel database
mastervirtuale - Creare un utente mappato a un account di accesso Microsoft Entra nel database virtuale
master - Usare la
WITH OBJECT_IDsintassi per i nomi visualizzati non univoci - Concedere ruoli server a un utente Microsoft Entra
- Disabilitare un account di accesso Microsoft Entra
Prerequisites
- Un pool SQL dedicato di Azure Synapse Analytics e un database.
- Microsoft Entra authentication configurata per Azure Synapse Analytics. Per maggiori informazioni, consulta Configurare e gestire l'autenticazione Microsoft Entra con Azure Synapse Analytics.
- Questo articolo illustra come creare un account di accesso e un utente di Microsoft Entra all'interno del database virtuale
master. Solo un amministratore di Microsoft Entra può creare un utente all'interno del database virtualemaster, quindi è consigliabile usare l'account amministratore di Microsoft Entra durante questa esercitazione. Un'entità di sicurezza Microsoft Entra con il ruolologinmanagerpuò creare un account di accesso, ma non un utente all'interno del database virtualemaster.
Nota
Per le organizzazioni che gestiscono nomi visualizzati non univoci in Microsoft Entra ID (in particolare per le entità servizio), assicurarsi di disporre delle informazioni sull'ID oggetto disponibili per tutte le entità servizio per cui si prevede di creare gli account di accesso. L'estensione WITH OBJECT_ID della sintassi consente di risolvere questi scenari.
Creare un account di accesso a Microsoft Entra
Crea credenziali di accesso per un account Microsoft Entra. In questo esempio, usa
bob@contoso.com, che esiste nel dominio Microsoft Entra chiamatocontoso. Puoi anche creare un accesso da un gruppo Microsoft Entra o service principal (applicazioni). Per altre informazioni, vedere CREATE LOGIN (Transact-SQL).Nota
Il primo account di accesso di Microsoft Entra deve essere creato dall'amministratore di Microsoft Entra. L'amministratore di Microsoft Entra può essere un utente o un gruppo Microsoft Entra. Un login di autenticazione SQL non può creare login Microsoft Entra.
Tip
Se incontri problemi con nomi di visualizzazione non unici in Microsoft Entra ID, usa l'estensione
WITH OBJECT_IDsintassica. Questa funzionalità è particolarmente utile per i principali di servizio con nomi visualizzati duplicati. Ad esempio:CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'Per maggiori informazioni, vedi considerazioni sul nome.
Utilizzando SQL Server Management Studio (SSMS), accedi al tuo pool SQL dedicato con l'account amministratore Microsoft Entra.
Espandi il database >database di sistema. Fare clic con il pulsante destro del mouse sul database di
mastere selezionare Nuova query per aprire una nuova finestra di query nel contesto del databasemaster.Eseguire la query riportata di seguito:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOVerifica il login creato in
sys.server_principals. Esegui la query seguente:SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'Vedi un output simile al seguente:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0Il login
bob@contoso.comviene creato nel database virtualemaster.
Creare un utente da un account di accesso Microsoft Entra
Dopo aver creato un login Microsoft Entra, crea un utente Microsoft Entra a livello di database che corrisponda all'accesso Microsoft Entra nel database virtuale
master. Per mostrare come aggiungere l'utente a ruoli speciali, usa il nostro esempio,bob@contoso.com, per creare un utente nel database virtualemaster. Solo un amministratore di Microsoft Entra o un amministratore di SQL Server può creare utenti nel database virtualemaster.Usa il database virtuale
master, ma puoi riconnetterti a un database a tua scelta se vuoi creare utenti in altri database. Esegui la query seguente.CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]Tip
Anche se non è necessario usare gli alias utente di Microsoft Entra (ad esempio,
bob@contoso.com), è consigliabile usare lo stesso alias per gli utenti di Microsoft Entra e gli account di accesso di Microsoft Entra.Se devi creare un utente direttamente da un provider esterno con un ID Oggetto specifico (ad esempio, per risolvere problemi di nomi di visualizzazione non univi), usa la seguente sintassi:
CREATE USER [user_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid'Controllare l'utente creato in
sys.database_principals. Esegui la query seguente:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'Vedi un output simile al seguente:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Nota
La sintassi esistente per creare un utente Microsoft Entra senza un account di accesso di Microsoft Entra è ancora supportata. Se esegui la seguente sintassi, crei un utente contenuto del database nel database specifico a cui sei collegato. Questo utente non è associato ad alcun login, anche se esiste un login con lo stesso nome nel master database virtuale.
Ad esempio: CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.
Puoi creare un accesso Microsoft Entra utilizzando un service principal con un nome visualizzato non univoco. Per maggiori informazioni, vedi considerazioni sul nome.
Concedere i ruoli a livello di server agli account di accesso di Microsoft Entra
Puoi aggiungere account di accesso a ruoli fissi a livello di server, come il ruolo ##MS_DefinitionReader##, ##MS_ServerStateReader## o ##MS_ServerStateManager## nel master database.
Nota
I ruoli a livello di server indicati qui non sono supportati per i gruppi di Microsoft Entra.
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];
Le autorizzazioni non sono effettive fino a quando l'utente non si riconnette. Svuotare anche la cache DBCC:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Per verificare quali account di accesso Microsoft Entra fanno parte dei ruoli a livello di server, eseguire la seguente query:
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;
Concedere ruoli speciali per gli utenti Microsoft Entra
Puoi assegnare ruoli speciali di Azure Synapse Analytics agli utenti nel database virtualemaster.
Per assegnare uno dei ruoli speciali di database a un utente, l'utente deve esistere nel database virtuale master .
Per aggiungere un utente a un ruolo, esegui la seguente query:
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
Per rimuovere un utente da un ruolo, eseguire la seguente query:
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_object può essere un utente, un gruppo o un'entità servizio di Microsoft Entra in Microsoft Entra ID.
Nel seguente esempio, si crea l'utente bob@contoso.com. Assegna i ruoli dbmanager e loginmanager all'utente.
Eseguire la query riportata di seguito:
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]Controllare l'assegnazione di ruolo del database eseguendo la seguente query:
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%'Vedi un output simile al seguente:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Facoltativo: disabilitare un account di accesso
Usa la sintassi DDL ALTER LOGIN (Transact-SQL) per abilitare o disabilitare un login Microsoft Entra in un pool SQL dedicato.
ALTER LOGIN [bob@contoso.com] DISABLE
Per rendere immediatamente effettive le modifiche DISABLE o ENABLE, svuota la cache di autenticazione e la cache TokenAndPermUserStore utilizzando i seguenti comandi T-SQL:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Controlla che il login sia disabilitato eseguendo la seguente interrogazione:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1