Sdílet prostřednictvím


Přihlášení a uživatelé Microsoft Entra s neunique zobrazovanými jmény (Preview)

Platí pro: Azure SQL Database Azure SQL Managed Instance

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 a Azure SQL Managed Instance.

Poznámka:

Použití WITH OBJECT_ID k vytváření uživatelů a přihlášení v Azure SQL je aktuálně ve verzi Preview.

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 v Azure SQL.

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:

Rozšíření WITH OBJECT_ID je aktuálně ve verzi Public Preview.

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í je ve verzi Public Preview a jedná se WITH OBJECT_ID o položku pro řešení potíží implementovanou 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. Následující příklad vytvoří přihlášení myapp4466e pomocí ID 4466e2f8-0fea-4c61-a470-xxxxxxxxxxxxobjektu aplikace .

CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER 
  WITH OBJECT_ID = '4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx' 
  • Pokud chcete spustit výše uvedený dotaz, musí zadané ID objektu existovat v tenantovi Microsoft Entra, ve kterém 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 nebo CREATE 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 ID 2ba6c0a3-cda4-4878-a5ca-xxxxxxxxxxxxobjektu . 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, sysnamevč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):

  1. 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:

      Snímek obrazovky s výstupem SSMS pro ID aplikace

      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 následujícího dotazu a porovnáním posledních několika číslic a vytvoření kalendářních dat:

      SELECT SID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c' 
      

      Příklad výstupu:

      Snímek obrazovky s výstupem SSMS pro SID aplikace

    • 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:

      Snímek obrazovky s výstupem SSMS pro ID objektu skupiny Microsoft Entra

      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:

      Snímek obrazovky s výstupem SSMS pro SID skupiny

    • Pokud chcete získat ID objektu a ID aplikace aplikace pomocí PowerShellu, spusťte následující příkaz:

      Get-AzADApplication -DisplayName "myapp2ba6c"
      
  2. 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 se shoduje s dotazem získaným z výše uvedené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í .