Tutorial: Crea e usa gli account di accesso al server Microsoft Entra

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 master virtuale
  • Creare un utente mappato a un account di accesso Microsoft Entra nel database virtuale master
  • Usare la WITH OBJECT_ID sintassi 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 virtuale master, quindi è consigliabile usare l'account amministratore di Microsoft Entra durante questa esercitazione. Un'entità di sicurezza Microsoft Entra con il ruolo loginmanager può creare un account di accesso, ma non un utente all'interno del database virtuale master.

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

  1. Crea credenziali di accesso per un account Microsoft Entra. In questo esempio, usa bob@contoso.com, che esiste nel dominio Microsoft Entra chiamato contoso. 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_ID sintassica. 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.

  2. Utilizzando SQL Server Management Studio (SSMS), accedi al tuo pool SQL dedicato con l'account amministratore Microsoft Entra.

  3. Espandi il database >database di sistema. Fare clic con il pulsante destro del mouse sul database di master e selezionare Nuova query per aprire una nuova finestra di query nel contesto del database master.

  4. Eseguire la query riportata di seguito:

    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  5. Verifica 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      0
    
  6. Il login bob@contoso.com viene creato nel database virtuale master.

Creare un utente da un account di accesso Microsoft Entra

  1. 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 virtuale master . Solo un amministratore di Microsoft Entra o un amministratore di SQL Server può creare utenti nel database virtuale master.

  2. 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'
    
  3. 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.

  1. Eseguire la query riportata di seguito:

    ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com]
    ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
    
  2. 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