Přihlášení a uživatelé Microsoft Entra s neunique zobrazovanými jmény (Preview)
Platí pro: Azure SQL Database Azure SQL Managed Instance SQL Database v prostředcích infrastruktury
V tomto článku se naučíte, jak pomocí syntaxe T-SQL Object_ID
vytvářet přihlášení a uživatele Microsoft Entra s neunique zobrazovanými názvy ve službě Azure SQL Database, Databázi Fabric SQL a azure SQL Managed Instance.
Poznámka:
Použití WITH OBJECT_ID
k vytváření uživatelů a přihlášení ve službě Azure SQL Database a Azure SQL Managed Instance je aktuálně ve verzi Preview.
V databázi SQL Fabric můžete vytvářet uživatele, ale ne přihlášení.
Přehled
ID Microsoft Entra podporuje ověřování pro instanční objekty. Použití instančního objektu se zobrazovaným názvem, který není jedinečný v Microsoft Entra ID, ale vede k chybám při vytváření přihlášení nebo uživatele ve službě Azure SQL Database a azure SQL Managed Instance.
Pokud například aplikace myapp
není jedinečná, může dojít k následující chybě:
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.
Při pokusu o spuštění následujícího příkazu T-SQL:
CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER
Rozšíření WITH OBJECT_ID
K chybě duplicitního zobrazovaného názvu dochází, protože ID Microsoft Entra umožňuje duplicitní zobrazované názvy pro aplikaci Microsoft Entra (instanční objekt), zatímco Azure SQL vyžaduje jedinečné názvy k vytvoření přihlášení a uživatelů Microsoft Entra. Pokud chcete tento problém zmírnit, příkaz DDL (Data Definition Language) pro vytvoření přihlášení a uživatelů byl rozšířen tak, aby zahrnoval ID objektu prostředku Azure s WITH OBJECT_ID
klauzulí.
Poznámka:
Většina neunique zobrazovaných názvů v Microsoft Entra ID souvisí s instančními objekty, i když občas mohou být názvy skupin také neunique. Hlavní názvy uživatelů Microsoft Entra jsou jedinečné, protože dva uživatelé nemohou mít stejný objekt zabezpečení uživatele. Registraci aplikace (instanční objekt) je však možné vytvořit s zobrazovaným názvem, který je stejný jako hlavní název uživatele.
Pokud zobrazovaný název instančního objektu není duplicitní, měl by se použít výchozí CREATE LOGIN
nebo CREATE USER
příkaz. Rozšíření WITH OBJECT_ID
je řešení potíží s opravou položky implementované pro použití s neunique instančními objekty. Použití s jedinečným instančním objektem se nedoporučuje. WITH OBJECT_ID
Použití rozšíření pro instanční objekt bez přidání přípony se úspěšně spustí, ale nebude zřejmé, pro který instanční objekt se vytvořil přihlášení nebo uživatel. Doporučujeme vytvořit alias pomocí přípony k jednoznačné identifikaci instančního objektu. Rozšíření WITH OBJECT_ID
není podporováno pro SQL Server.
Vytvoření syntaxe přihlášení/uživatele T-SQL pro nezobrazovat zobrazované názvy
CREATE LOGIN [login_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
CREATE USER [user_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
S rozšířením podpory T-SQL DDL pro vytváření přihlášení nebo uživatelů s ID objektu se můžete vyhnout chybě 33131 a také zadat alias pro přihlášení nebo uživatele vytvořeného pomocí ID objektu. Například následující ukázka T-SQL vytvoří přihlášení myapp4466e
pomocí ID 4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx
objektu aplikace .
CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = '4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx'
- Pokud chcete tento dotaz T-SQL spustit, musí zadané ID objektu existovat v tenantovi Microsoft Entra, kde se nachází prostředek Azure SQL. Jinak příkaz
CREATE
selže s chybovou zprávou:Msg 37545, Level 16, State 1, Line 1 '' is not a valid object id for '' or you do not have permission.
- Přihlašovací jméno nebo uživatelské jméno musí obsahovat původní hlavní název služby rozšířený uživatelem definovanou příponou při použití
CREATE LOGIN
příkazu neboCREATE USER
příkazu. Osvědčeným postupem je, že přípona může obsahovat počáteční část ID objektu.myapp2ba6c
Například pro ID2ba6c0a3-cda4-4878-a5ca-xxxxxxxxxxxx
objektu . Můžete ale také definovat vlastní příponu. Vytvoření přípony z ID objektu není povinné.
Tato konvence vytváření názvů se doporučuje explicitně přidružit uživatele databáze nebo se přihlásit zpět k jeho objektu v Microsoft Entra ID.
Poznámka:
Alias dodržuje specifikaci T-SQL, sysname
včetně maximální délky 128 znaků. Doporučujeme omezit příponu na prvních 5 znaků ID objektu.
Zobrazovaný název instančního objektu v MICROSOFT Entra ID se nesynchronuje s přihlašovacím jménem databáze ani s aliasem uživatele. Spuštění CREATE LOGIN
nebo CREATE USER
nebude mít vliv na zobrazovaný název na webu Azure Portal. Podobně úprava zobrazovaného názvu ID Microsoft Entra neovlivní přihlašovací jméno databáze ani alias uživatele.
Identifikace uživatele vytvořeného pro aplikaci
U neunique instančních objektů je důležité ověřit, že alias Microsoft Entra je svázaný se správnou aplikací. Kontrola vytvoření uživatele pro správný instanční objekt (aplikaci):
Získejte ID aplikace aplikace nebo ID objektu skupiny Microsoft Entra od uživatele vytvořeného ve službě SQL Database. Projděte si následující dotazy:
Pokud chcete získat ID aplikace instančního objektu od vytvořeného uživatelem, spusťte následující dotaz:
SELECT CAST(sid as uniqueidentifier) ApplicationID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'
Příklad výstupu:
ID aplikace se převede z identifikačního čísla zabezpečení (SID) pro zadané přihlašovací jméno nebo uživatelské jméno, které můžeme potvrdit spuštěním dalšího dotazu T-SQL a porovnáním posledních několika číslic a vytvořením kalendářních dat:
SELECT SID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'
Příklad výstupu:
Pokud chcete získat ID objektu skupiny Microsoft Entra od vytvořeného uživatele, spusťte následující dotaz:
SELECT CAST(sid as uniqueidentifier) ObjectID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'
Příklad výstupu:
Pokud chcete zkontrolovat identifikátor SID skupiny Microsoft Entra od vytvořeného uživatele, spusťte následující dotaz:
SELECT SID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'
Příklad výstupu:
Pokud chcete získat ID objektu a ID aplikace aplikace pomocí PowerShellu, spusťte následující příkaz:
Get-AzADApplication -DisplayName "myapp2ba6c"
Přejděte na web Azure Portal a v podnikové aplikaci nebo prostředku skupiny Microsoft Entra zkontrolujte ID aplikace nebo ID objektu. Zkontrolujte, jestli odpovídá té, která byla získána z předchozího dotazu.
Poznámka:
Při vytváření uživatele z instančního objektu se při použití WITH OBJECT_ID
klauzule s příkazem T-SQL vyžaduje ID objektuCREATE
. Toto se liší od ID aplikace, které se vrátí při pokusu o ověření aliasu v Azure SQL. Pomocí tohoto procesu ověřování můžete identifikovat instanční objekt nebo skupinu přidruženou k aliasu SQL v Microsoft Entra ID a zabránit možným chybám při vytváření přihlášení nebo uživatelů s ID objektu.
Vyhledání správného ID objektu
Informace o ID objektu instančního objektu naleznete v tématu Instanční objekt. ID objektu instančního objektu uvedeného vedle názvu aplikace najdete na webu Azure Portal v části Podnikové aplikace.
Upozorňující
ID objektu získané na stránce Přehled registrace aplikace se liší od ID objektu získaného na stránce Přehled podnikových aplikací . Pokud jste na stránce Přehled registrace aplikace, vyberte propojenou spravovanou aplikaci v názvu aplikace místního adresáře a přejděte na správné ID objektu na stránce Přehled podnikových aplikací .