Entità server di Microsoft Entra

Si applica a:Database SQL di AzureIstanza gestita di SQL di AzureAzure Synapse Analytics (solo pool SQL dedicati)

È ora possibile creare e usare entità server da Microsoft Entra ID (precedentemente Azure Active Directory), ovvero account di accesso nel database virtuale master di un database SQL. L'uso delle entità server di Microsoft Entra per database SQL presenta diversi vantaggi:

  • Supporto dei ruoli del server di database SQL di Azure per la gestione delle autorizzazioni.
  • Supporto di più utenti di Microsoft Entra con ruoli speciali per database SQL, ad esempio i ruoli loginmanager e dbmanager.
  • Parità funzionale tra gli account di accesso SQL e gli account di accesso Microsoft Entra.
  • Aumento del supporto per il miglioramento funzionale, ad esempio l'uso dell'autenticazione basata solo su Microsoft Entra. L'autenticazione basata solo su Microsoft Entra consente di disabilitare l'autenticazione SQL, che include l'amministratore di SQL Server e gli account di accesso e gli utenti SQL.
  • Consente alle entità di sicurezza di Microsoft Entra di supportare le repliche geografiche. Le entità di sicurezza di Microsoft Entra possono connettersi alla replica geografica di un database utente, con autorizzazioni di sola lettura e di rifiuto per il server primario.
  • Usare gli account di accesso dell'entità servizio di Microsoft Entra con ruoli speciali per automatizzare completamente la creazione e la manutenzione di utenti e database con le applicazioni Microsoft Entra.

Per altre informazioni sull'autenticazione di Microsoft Entra in Azure SQL, vedere Usare l'autenticazione di Microsoft Entra.

Nota

Le entità server (account di accesso) di Microsoft Entra attualmente sono in anteprima pubblica per database SQL di Azure e Azure Synapse Analytics. Gli account di accesso di Microsoft Entra sono disponibili a livello generale per Istanza gestita di SQL di Azure e SQL Server 2022.

Autorizzazioni

Per utilizzare o creare account di accesso di Microsoft Entra nel database virtuale master sono necessarie le seguenti autorizzazioni.

  • Autorizzazione o appartenenza dell'amministratore di Microsoft Entra al ruolo del server loginmanager. Il primo account di accesso Microsoft Entra può essere creato solo dall'amministratore di Microsoft Entra.
  • È necessario essere un membro di Microsoft Entra ID all'interno della stessa directory usata per il database SQL di Azure.

Per impostazione predefinita, agli account di accesso Microsoft Entra appena creati nel database master viene concessa l'autorizzazione VIEW ANY DATABASE.

Sintassi delle entità di sicurezza Microsoft Entra

Usare la sintassi seguente per creare e gestire le entità di database e del server di Microsoft Entra.

Creare un account di accesso

Questa sintassi crea un account di accesso a livello di server basato su un'identità di Microsoft Entra. Solo l'amministratore di Microsoft Entra può eseguire questo comando nel database virtuale master.

CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

Il login_name specifica l'entità di sicurezza di Microsoft Entra, ovvero un utente, un gruppo o un'applicazione Microsoft Entra.

Per altre informazioni, vedere CREATE LOGIN (Transact-SQL).

Creare un utente da un account di accesso

La sintassi T-SQL seguente crea un'entità di sicurezza Microsoft Entra a livello di database mappata a un account di accesso Microsoft Entra nel database virtuale master. Simile alla sintassi per la creazione di un utente di Microsoft Entra in un database indipendente, l'unica differenza consiste nello specificare FROM LOGIN [login_name] anziché FROM EXTERNAL PROVIDER.

Per creare un utente di Microsoft Entra da un account di accesso di Microsoft Entra, usare la sintassi seguente.

CREATE USER [user_name] FROM LOGIN [login_name]

È possibile usare la colonna SID di sys.database_principals per distinguere tra un utente del database indipendente di Microsoft Entra e un utente di Microsoft Entra creato da un account di accesso. Per un utente del database indipendente, SID è una stringa binaria di lunghezza 16. Per un utente basato su un account di accesso, SID è di lunghezza 18 con un suffisso AADE.

Nota

L'aggiunta del suffisso AADE al SID è il modo in cui viene identificato un utente di Microsoft Entra come creato da un account di accesso. Tuttavia, questo significa anche che i SID per l'account di accesso e i relativi utenti non corrispondono tra sys.server_principals e sys.database_principals. Per correlare l'utente al relativo account di accesso, è necessario prima rimuovere il suffisso AADE.

Per comprendere la differenza concettuale tra gli utenti basati su un account di accesso e gli utenti del database indipendente, vedere Utenti del database indipendente.

Per altre informazioni su tutta la sintassi per creare l'utente, vedere CREATE USER (Transact-SQL).

Disabilitare o abilitare un account di accesso usando ALTER LOGIN

La sintassi DDL ALTER LOGIN (Transact-SQL) viene usata per abilitare o disabilitare un account di accesso di Microsoft Entra nel database SQL di Azure.

ALTER LOGIN [login_name] DISABLE 

Quando un account di accesso è disabilitato, le connessioni usando tale entità server non sono più consentite. Ciò disabilita inoltre per tutte le entità di database (utenti) create da tale account di accesso la possibilità di connettersi ai rispettivi database.

Nota

  • ALTER LOGIN login_name DISABLE non influisce sugli utenti del database indipendente, poiché non sono associati agli account di accesso.

  • ALTER LOGIN login_name DISABLE non è supportato per i gruppi Microsoft Entra.

  • Un singolo account di accesso disabilitato non può appartenere a un utente che fa parte di un gruppo di accesso creato nel database master (ad esempio, un gruppo di amministrazione di Microsoft Entra).

  • Per rendere immediatamente effettive le modifiche DISABLE o ENABLE, è necessario cancellare la cache di autenticazione e la cache TokenAndPermUserStore usando i comandi T-SQL.

    DBCC FLUSHAUTHCACHE
    DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS 
    

Ruoli per le entità di sicurezza Microsoft Entra

I ruoli speciali per database SQL possono essere assegnati agli utenti nel database virtuale master per le entità di sicurezza Microsoft Entra, tra cui dbmanager e loginmanager.

I ruoli del server di database SQL di Azure possono essere assegnati agli account di accesso nel database virtuale master.

Per un'esercitazione su come concedere questi ruoli, vedere Esercitazione: creare e usare gli account di accesso al server Microsoft Entra.

Limitazioni e commenti

  • L'amministratore del server SQL non può creare account di accesso o utenti di Microsoft Entra in alcun database.
  • Un amministratore SQL o un utente SQL non può eseguire le seguenti operazioni di Microsoft Entra:
    • CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
    • EXECUTE AS USER [bob@contoso.com]
    • ALTER AUTHORIZATION ON securable::name TO [bob@contoso.com]
  • La rappresentazione delle entità server (account di accesso) Microsoft Entra non è supportata per database SQL di Azure e Azure Synapse Analytics. È supportato per Istanza gestita di SQL:
  • Gli account di accesso Microsoft Entra non possono sovrapporsi all'amministratore di Microsoft Entra. L'amministratore di Microsoft Entra ha la precedenza su tutti gli account di accesso. Se un account Microsoft Entra ha già accesso al server come amministratore di Microsoft Entra, singolarmente o come parte di un gruppo, tutti gli account di accesso creati per questo account non avranno alcun effetto. Tuttavia, la creazione dell'account di accesso non è bloccata tramite T-SQL. Dopo l'autenticazione dell'account nel server, l'account di accesso avrà le autorizzazioni effettive di un amministratore di Microsoft Entra e non di un nuovo account di accesso appena creato.
  • La modifica delle autorizzazioni per uno specifico oggetto di accesso Microsoft Entra non è supportata:
    • GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
  • Quando si modificano le autorizzazioni per un account di accesso Microsoft Entra, per impostazione predefinita le modifiche diventano effettive solo alla successiva connessione dell'account di accesso al database SQL di Azure. Le connessioni aperte esistenti con l'account di accesso non vengono interessate. Per forzare l'applicazione immediata delle modifiche alle autorizzazioni, è possibile cancellare manualmente l'autenticazione e TokenAndPermUserStore, come descritto precedentemente in Disabilitare o abilitare un account di accesso usando ALTER LOGIN. Questo comportamento si applica anche quando si apportano modifiche all'appartenenza al ruolo del server con ALTER SERVER ROLE.
  • In SQL Server Management Studio e Azure Data Studio il comando script per creare un utente non verifica se è già presente un account di accesso di Microsoft Entra in master con lo stesso nome. Genera sempre il T-SQL per un utente Microsoft Entra del database indipendente.
  • Può verificarsi un errore se si sta tentando di creare un account di accesso o un utente da un'entità servizio con un nome visualizzato non univoco. Per altre informazioni sulla prevenzione di questo errore, vedere Account di accesso e utenti di Microsoft Entra con nomi visualizzati non univoci.

Limitazioni dell'entità server di un gruppo Microsoft Entra

Di seguito sono riportate le limitazioni note con gli account di accesso di Microsoft Entra in anteprima pubblica per database SQL di Azure e Azure Synapse Analytics:

  • I ruoli del server di database SQL di Azure non sono supportati per i gruppi di Microsoft Entra.
  • Se l'amministratore SQL è un gruppo di Microsoft Entra, esistono alcune limitazioni quando gli utenti di tale gruppo si connettono. Ogni utente di Microsoft Entra singolarmente non fa parte della tabella sys.server_principals. Ciò ha varie conseguenze, incluse le chiamate a SUSER_SID che restituiscono NULL.
  • Anche gli account di accesso utente Microsoft Entra che fanno parte degli account di accesso al gruppo Microsoft Entra non vengono creati in modo implicito, ovvero non avranno uno schema predefinito e non potranno eseguire operazioni come CREATE SCHEMA fino a quando non viene creato un account di accesso per l'utente di Microsoft Entra o viene assegnato uno schema predefinito al gruppo.
  • La modifica della titolarità di un database in un gruppo Microsoft Entra come proprietario del database non è supportata.
    • ALTER AUTHORIZATION ON database::<mydb> TO [my_aad_group] ha esito negativo con messaggio di errore:

      Msg 33181, Level 16, State 1, Line 4
      The new owner cannot be Azure Active Directory group.
      

Passaggi successivi