Kurz: Vytvoření a používání serverových přihlášení Microsoft Entra

Tento článek vás provede vytvářením a používáním přihlášení podporovaných Microsoft Entra ID (dříve Azure Active Directory) ve master virtuální databázi dedikovaného SQL poolu Azure Synapse Analytics (dříve SQL DW). Dedikované SQL pooly v pracovních prostorech Azure Synapse Analytics nepoužívají logické SQL servery.

Poznámka:

Microsoft Entra server principals jsou momentálně v preview pro Azure Synapse Analytics.

V tomto návodu se naučíte, jak:

  • Vytvořte přihlašovací účet Microsoft Entra ve virtuální master databázi
  • Vytvořte uživatele namapovaného na přihlášení Microsoft Entra ve virtuální databázi master
  • Použijte syntaxi WITH OBJECT_ID pro neunikátní zobrazované názvy
  • Udělení rolí serveru uživateli Microsoft Entra
  • Zakázání přihlášení Microsoft Entra

Prerequisites

  • Dedikovaný SQL pool služby Azure Synapse Analytics a databáze.
  • Ověřování Microsoft Entra nakonfigurované pro Azure Synapse Analytics. Pro více informací viz Konfigurace a správa ověřování Microsoft Entra pomocí Azure Synapse Analytics.
  • Tento článek vás vyzve k vytvoření přihlášení a uživatele Microsoft Entra v rámci virtuální master databáze. Uživatele ve virtuální master databázi může vytvořit jenom správce Microsoft Entra, proto při procházení tohoto kurzu doporučujeme použít účet správce Microsoft Entra. Objekt zabezpečení Microsoft Entra s rolí loginmanager může vytvořit přihlášení, ale ne uživatele ve virtuální databázi master.

Poznámka:

Pro organizace, které mají neunikátní zobrazovací názvy v Microsoft Entra ID (zejména pro principy služeb), ujistěte se, že máte k dispozici informace o ID objektu pro všechny principy služeb, pro které plánujete vytvářet přihlášení. Rozšíření WITH OBJECT_ID syntaxe vám může pomoct tyto scénáře vyřešit.

Vytvoření přihlášení Microsoft Entra

  1. Vytvořte přihlašovací údaje pro účet Microsoft Entra. V tomto příkladu použijte bob@contoso.com, které existuje v doméně Microsoft Entra nazvané contoso. Můžete si také vytvořit přihlášení ze skupiny Microsoft Entra nebo z instančního objektu služby (aplikace). Další informace najdete v tématu CREATE LOGIN (Transact-SQL).

    Poznámka:

    První přihlášení Microsoft Entra musí vytvořit správce Microsoft Entra. Správcem Microsoft Entra může být uživatel nebo skupina Microsoft Entra. Přihlášení pro SQL autentizaci nemůže vytvořit přihlášení Microsoft Entra.

    Tip

    Pokud narazíte na problémy s neunikátními zobrazovacími názvy v Microsoft Entra ID, použijte WITH OBJECT_ID rozšíření syntaxe. Tato funkce je zvlášť užitečná pro instanční objekty s duplicitními zobrazovanými názvy. Příklady:

    CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER
      WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'
    

    Další informace najdete v článku Důležité informace k názvům.

  2. Pomocí SQL Server Management Studio (SSMS) se přihlaste do svého vyhrazeného SQL poolu pomocí administrátorského účtu Microsoft Entra.

  3. Rozbalte Databáze>Systémové databáze. Klikněte pravým tlačítkem na databázi master a vyberte Nový dotaz a otevřete okno nového dotazu v kontextu master databáze.

  4. Spusťte tento dotaz:

    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  5. Zkontrolujte vytvořené přihlášení v sys.server_principals. Spusťte následující dotaz:

    SELECT name, type_desc, type, is_disabled
    FROM sys.server_principals
    WHERE type_desc like 'external%'
    

    Vidíte podobný výstup jako následující:

    Name                            type_desc       type   is_disabled
    bob@contoso.com                 EXTERNAL_LOGIN  E      0
    
  6. Přihlašovací jméno bob@contoso.com se vytváří ve virtuální master databázi.

Vytvoření uživatele z přihlášení Microsoft Entra

  1. Po vytvoření přihlášení přes Microsoft Entra vytvořte uživatele na úrovni databáze Microsoft Entra, který se namapuje na přihlášení Microsoft Entra ve virtuální master databázi. Pro ukázání, jak přidat uživatele do speciálních rolí, použijte náš příklad bob@contoso.com, k vytvoření uživatele ve virtuální master databázi. Ve virtuální master databázi může vytvářet uživatele pouze správce Microsoft Entra nebo správce SQL Serveru.

  2. Použijte virtuální master databázi, ale pokud chcete vytvářet uživatele v jiných databázích, můžete se znovu připojit k databázi dle vlastního výběru. Spusťte následující dotaz.

    CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
    

    Tip

    I když není nutné používat uživatelské aliasy Microsoft Entra (například bob@contoso.com), doporučuje se použít stejný alias pro uživatele Microsoft Entra a přihlášení Microsoft Entra.

    Pokud potřebujete vytvořit uživatele přímo od externího poskytovatele s konkrétním Object ID (například pro řešení problémů s neunikátním zobrazovaným jménem), použijte následující syntaxi:

    CREATE USER [user_name] FROM EXTERNAL PROVIDER
      WITH OBJECT_ID = 'objectid'
    
  3. Zkontrolujte vytvořeného uživatele v sys.database_principals. Spusťte následující dotaz:

    SELECT name, type_desc, type
    FROM sys.database_principals
    WHERE type_desc like 'external%'
    

    Vidíte podobný výstup jako následující:

    Name                            type_desc       type
    bob@contoso.com                 EXTERNAL_USER   E
    

Poznámka:

Stávající syntaxe pro vytvoření uživatele Microsoft Entra bez přihlášení Microsoft Entra je stále podporována. Pokud spustíte následující syntaxi, vytvoříte uživatele obsaženého v databázi v konkrétní databázi, ke které jste připojeni. Tento uživatel není přidružen k žádnému přihlášení, i když ve virtuální master databázi existuje přihlášení se stejným jménem.

Například: CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.

Přihlášení Microsoft Entra můžete vytvořit pomocí instančního objektu služby s nejedinečným zobrazovaným názvem. Další informace najdete v článku Aspekty názvu.

Udělení rolí na úrovni serveru pro přihlášení Microsoft Entra

Přihlášení můžete přidat k pevně daným rolím na úrovni serveru, například k rolím ##MS_DefinitionReader##, ##MS_ServerStateReader## nebo ##MS_ServerStateManager## v databázi master.

Poznámka:

Zde uvedené role na úrovni serveru nejsou podporované pro skupiny Microsoft Entra.

ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateManager## ADD MEMBER [AzureAD_object];

Oprávnění nejsou platná, dokud se uživatel znovu nepřipojí. Vyprázdněte také mezipaměť DBCC:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS

Pokud chcete zkontrolovat, která přihlášení Microsoft Entra jsou součástí rolí na úrovni serveru, spusťte následující dotaz:

SELECT roles.principal_id AS RolePID,roles.name AS RolePName,
       server_role_members.member_principal_id AS MemberPID, members.name AS MemberPName
       FROM sys.server_role_members AS server_role_members
       INNER JOIN sys.server_principals AS roles
       ON server_role_members.role_principal_id = roles.principal_id
       INNER JOIN sys.server_principals AS members
       ON server_role_members.member_principal_id = members.principal_id;

Udělení zvláštních rolí pro uživatele Microsoft Entra

Můžete uživatelům ve virtuální databázi master přiřadit speciální role pro Azure Synapse Analytics.

Pro udělení jedné ze speciálních databázových rolí uživateli musí uživatel existovat ve virtuální master databázi.

Chcete-li přidat uživatele do role, spusťte následující dotaz:

ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]

Pokud chcete odebrat uživatele z role, spusťte následující dotaz:

ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]

AzureAD_object může být uživatelem, skupinou nebo instančním objektem Microsoft Entra v MICROSOFT Entra ID.

V následujícím příkladu vytvoříte uživatele bob@contoso.com. Přiřaďte role dbmanager a loginmanager uživateli.

  1. Spusťte tento dotaz:

    ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com]
    ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
    
  2. Spuštěním následujícího dotazu zkontrolujte přiřazení role databáze:

    SELECT DP1.name AS DatabaseRoleName,
      isnull (DP2.name, 'No members') AS DatabaseUserName
    FROM sys.database_role_members AS DRM
    RIGHT OUTER JOIN sys.database_principals AS DP1
      ON DRM.role_principal_id = DP1.principal_id
    LEFT OUTER JOIN sys.database_principals AS DP2
      ON DRM.member_principal_id = DP2.principal_id
    WHERE DP1.type = 'R'and DP2.name like 'bob%'
    

    Vidíte podobný výstup jako následující:

    DatabaseRoleName       DatabaseUserName
    dbmanager              bob@contoso.com
    loginmanager           bob@contoso.com
    

Volitelné – Zakázání přihlášení

Použijte syntaxi DDL ALTER LOGIN (Transact-SQL) k povolení nebo zakázání přihlášení Microsoft Entra v dedikovaném SQL poolu.

ALTER LOGIN [bob@contoso.com] DISABLE

Aby se změny DISABLE nebo ENABLE projevily okamžitě, vymažte ověřovací mezipaměť a mezipaměť TokenAndPermUserStore pomocí následujících příkazů T-SQL:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS

Zkontrolujte, zda je přihlášení deaktivováno, spuštěním následujícího dotazu:

SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1