Account di accesso e utenti Microsoft Entra con nomi visualizzati non univoci (anteprima)
Si applica a: database SQL di Azure Istanza gestita di SQL di Azure database SQL in Fabric
Questo articolo illustra come usare la sintassi T-SQL Object_ID
per creare account di accesso e utenti di Microsoft Entra con nomi visualizzati non univoci in database SQL di Azure, database SQL di Infrastruttura e Istanza gestita di SQL di Azure.
Nota
L'uso WITH OBJECT_ID
di per creare utenti e account di accesso in database SQL di Azure e Istanza gestita di SQL di Azure è attualmente in anteprima.
È possibile creare utenti nel database SQL di Infrastruttura, ma non negli account di accesso.
Panoramica
Microsoft Entra ID supporta l’autenticazione per le entità servizio. Tuttavia, l'uso di un'entità servizio con un nome visualizzato non univoco nell'ID Microsoft Entra genera errori durante la creazione dell'account di accesso o dell'utente in database SQL di Azure e Istanza gestita di SQL di Azure.
Ad esempio, se l'applicazione myapp
non è univoca, potrebbe verificarsi l'errore seguente:
Msg 33131, Level 16, State 1, Line 4
Principal 'myapp' has a duplicate display name. Make the display name unique in Azure Active Directory and execute this statement again.
Quando si prova a eseguire l'istruzione T-SQL seguente:
CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER
L’estensione WITH OBJECT_ID
L'errore di nome visualizzato duplicato si verifica perché Microsoft Entra ID consente nomi visualizzati duplicati per l'applicazione Microsoft Entra (entità servizio), mentre Azure SQL richiede nomi univoci per creare account di accesso e utenti di Microsoft Entra. Per prevenire questo problema, l'istruzione DDL (Data Definition Language) per creare account di accesso e gli utenti è stata estesa in modo da includere l'ID oggetto della risorsa di Azure con la clausola WITH OBJECT_ID
.
Nota
La maggior parte dei nomi visualizzati non univoci in Microsoft Entra ID è correlata alle entità servizio, anche se occasionalmente i nomi di gruppo possono anche non essere univoci. I nomi delle entità utente di Microsoft Entra sono univoci, perché due utenti non possono avere la stessa entità utente. Tuttavia, è possibile creare una registrazione dell'app (entità servizio) con un nome visualizzato identico a quello di un’entità utente.
Se il nome visualizzato dell'entità servizio non è duplicato, è necessario usare l'istruzione CREATE LOGIN
o CREATE USER
predefinite. L'estensione WITH OBJECT_ID
è un elemento di ripristino della risoluzione dei problemi implementato per l'uso con entità servizio non univoche. Non è consigliabile usarlo con un'entità servizio univoca. L'uso dell'estensione WITH OBJECT_ID
per un'entità servizio senza l’aggiunta di un suffisso verrà eseguito correttamente, ma non risulterà chiaro per quale entità servizio sarà stato creato l'account di accesso o l'utente. È consigliabile creare un alias usando un suffisso per identificare in modo univoco l'entità servizio. L'estensione WITH OBJECT_ID
non è supportata da SQL Server.
Sintassi di creazione di account di accesso/utente T-SQL per nomi visualizzati non univoci
CREATE LOGIN [login_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
CREATE USER [user_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
Con l'estensione di supporto DDL T-SQL per creare account di accesso o utenti con l'ID oggetto, è possibile evitare l'errore 33131 e specificare anche un alias per l'account di accesso o l'utente creato con l'ID oggetto. Ad esempio, l'esempio T-SQL seguente creerà un account di accesso myapp4466e
usando l'ID 4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx
oggetto dell'applicazione .
CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = '4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx'
- Per eseguire questa query T-SQL, l'ID oggetto specificato deve esistere nel tenant di Microsoft Entra in cui risiede la risorsa SQL di Azure. In caso contrario, il comando
CREATE
avrà esito negativo con il messaggio di errore:Msg 37545, Level 16, State 1, Line 1 '' is not a valid object id for '' or you do not have permission.
- L'account di accesso o il nome utente devono contenere il nome dell'entità servizio originale esteso da un suffisso definito dall'utente quando si usa l'istruzione
CREATE LOGIN
oCREATE USER
. Come procedura consigliata, il suffisso può includere una parte iniziale del relativo ID oggetto. Ad esempio,myapp2ba6c
per l'ID oggetto2ba6c0a3-cda4-4878-a5ca-xxxxxxxxxxxx
. Tuttavia, è anche possibile definire un suffisso personalizzato. Non è necessario basare il suffisso sull'ID oggetto.
Questa convenzione di denominazione è consigliata per associare in modo esplicito l'utente del database o l'account di accesso al relativo oggetto in Microsoft Entra ID.
Nota
L'alias è conforme alla specifica T-SQL per sysname
, inclusa la lunghezza massima di 128 caratteri. È consigliabile limitare il suffisso ai primi 5 caratteri dell'ID oggetto.
Il nome visualizzato dell'entità servizio in Microsoft Entra ID non viene sincronizzato con l'account di accesso del database o l'alias utente. L'esecuzione di CREATE LOGIN
o CREATE USER
non influisce sul nome visualizzato nel portale di Azure. Analogamente, la modifica del nome visualizzato di Microsoft Entra ID non influirà sull'account di accesso del database o sull'alias utente.
Identificare l'utente creato per l'applicazione
Per le entità servizio non univoche, è importante verificare che l'alias Microsoft Entra sia associato all'applicazione corretta. Per verificare che l'utente sia stato creato per l'entità servizio corretta (applicazione):
Ottenere l'ID applicazione dell'applicazione o l'ID oggetto del gruppo Microsoft Entra dall'utente creato in database SQL. Provare le query seguenti:
Per ottenere l'ID applicazione dell'entità servizio dall'utente creato, eseguire la query seguente:
SELECT CAST(sid as uniqueidentifier) ApplicationID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'
Output di esempio:
L'ID applicazione viene convertito dal numero di identificazione di sicurezza (SID) per l'account di accesso o il nome utente specificato, che è possibile confermare eseguendo la query T-SQL successiva e confrontando le ultime cifre e creare date:
SELECT SID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'
Output di esempio:
Per ottenere l'ID oggetto del gruppo Microsoft Entra creato dall'utente, eseguire la query seguente:
SELECT CAST(sid as uniqueidentifier) ObjectID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'
Output di esempio:
Per controllare il SID del gruppo Microsoft Entra creato dall'utente, eseguire la query seguente:
SELECT SID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'
Output di esempio:
Per ottenere l'ID oggetto e l'ID applicazione dell'applicazione usando PowerShell, eseguire il comando seguente:
Get-AzADApplication -DisplayName "myapp2ba6c"
Passare al portale di Azure e, nella risorsa dell'applicazione aziendale o del gruppo Microsoft Entra, controllare rispettivamente l'ID applicazione o l'ID oggetto. Verificare se corrisponde a quello ottenuto dalla query precedente.
Nota
Quando si crea un utente da un'entità servizio, l'ID oggetto è obbligatorio quando si usa la clausola WITH OBJECT_ID
con l'istruzione T-SQL CREATE
. Questo valore è diverso dall'ID applicazione restituito quando si tenta di verificare l'alias in Azure SQL. Usando questo processo di verifica, è possibile identificare l'entità servizio o il gruppo associato all'alias SQL in Microsoft Entra ID ed evitare possibili errori durante la creazione di account di accesso o utenti con un ID oggetto.
Ricerca dell'ID oggetto corretto
Per informazioni sull'ID oggetto di un'entità servizio, vedere Oggetto entità servizio. È possibile individuare l'ID oggetto dell'entità servizio elencata accanto al nome dell'applicazione nel portale di Azure nella sezione Applicazioni aziendali.
Avviso
L'ID oggetto ottenuto nella pagina di panoramica della registrazione dell’app è diverso dall'ID oggetto ottenuto nella pagina di panoramica delle applicazioni aziendali. Nella pagina di panoramica della registrazione dell’app, selezionare il nome dell'applicazione di collegamento applicazione gestita nella directory locale per passare all'ID oggetto corretto nella pagina di panoramica delle applicazioni aziendali.