Principal del 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 (in precedenza Azure Active Directory), ovvero account di accesso nel database virtuale master di database SQL di Azure e Istanza gestita di SQL di Azure.

Nota

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

L'uso delle entità di sicurezza del server di Microsoft Entra con la risorsa Azure 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.

Autorizzazioni

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

  • Autorizzazioni di amministratore di Microsoft Entra o appartenenza 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 di 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'identità Microsoft Entra, ovvero un utente, un gruppo o un'applicazione di Microsoft Entra.

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

Crea un utente dal login

La sintassi T-SQL seguente crea un'entità di sicurezza Microsoft Entra a livello di database associata a un login Microsoft Entra nel database virtuale master. Analogamente alla sintassi per la creazione di un utente Microsoft Entra contenuto nel database, l'unica differenza è che viene specificato 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 di un database contenuto, SID è una stringa binaria di lunghezza pari a 16. Per un utente con accesso tramite login, SID ha una lunghezza di 18 caratteri e il 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 attivare un login tramite 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 login è disabilitato, non sono più consentite connessioni tramite tale principal del server. 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 di database contenuti, poiché non sono associati a login.

  • 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à Microsoft Entra

Ruoli speciali per il database SQL possono essere assegnati agli utenti nel database virtuale master per le identità 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]
  • L'impersonificazione dei principal del server Microsoft Entra (account di accesso) 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'accesso non vengono influenzate. 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 il comando di scripting per creare un utente non verifica se è già presente un account di accesso a Microsoft Entra con master lo stesso nome. Genera sempre il T-SQL per un utente Microsoft Entra di un database contenuto.
  • 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.
  • Nel database SQL di Azure e in Azure Synapse Analytics, gli utenti del database creati usando gli account di accesso di Microsoft Entra possono riscontrare ritardi durante la concessione di ruoli e autorizzazioni. Se si verifica questo problema, usare i comandi seguenti per risolvere il problema:
    • Eliminare l'utente dal database utente.
    • Eseguire DBCC FREESYSTEMCACHE('TokenAndPermUserStore') per cancellare le cache di sicurezza nel database.
    • Eseguire DBCC FLUSHAUTHCACHE per cancellare la cache del contesto di autenticazione federata.
    • Crea l'utente basato sul login.

Limitazioni delle entità server dei gruppi Microsoft Entra

Di seguito sono riportate le limitazioni note per gli account di accesso di Microsoft Entra gruppi in 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.
  • Non è supportato modificare la proprietà di un database impostando come proprietario del database un gruppo Microsoft Entra.
    • 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