Kurz: Vytvoření a využití přihlášení k serveru Microsoft Entra

Platí pro:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (pouze vyhrazené fondy SQL)

Tento článek vás provede vytvářením a používáním přihlašovacích údajů založených na Microsoft Entra ID (dříve Azure Active Directory) ve virtuální master databázi Azure SQL.

V tomto kurzu se naučíte:

  • Vytvoření přihlášení Microsoft Entra ve virtuální master databázi s novým rozšířením syntaxe pro Azure SQL Database
  • Vytvoření uživatele namapovaného na přihlášení Microsoft Entra ve virtuální master databázi
  • Udělení rolí serveru uživateli Microsoft Entra
  • Zakázání přihlášení Microsoft Entra

Poznámka:

Instanční objekty serveru Microsoft Entra (přihlášení) jsou aktuálně ve verzi Public Preview pro Azure SQL Database. Spravovaná instance Azure SQL už může využívat přihlášení Microsoft Entra.

Požadavky

  • SQL Database nebo SQL Managed Instance s databází. Viz Rychlý start: Vytvoření izolované databáze Azure SQL Database, pokud jste ještě nevytvořili službu Azure SQL Database, nebo rychlý start: Vytvoření spravované instance Azure SQL.
  • Nastavení ověřování Microsoft Entra pro službu SQL Database nebo spravovanou instanci Další informace najdete v tématu Konfigurace a správa ověřování Microsoft Entra pro Azure SQL.
  • 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 loginmanager rolí může vytvořit přihlášení, ale ne uživatele ve virtuální master databázi.

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

  1. Vytvořte přihlášení k Azure SQL Database pro účet Microsoft Entra. V našem příkladu použijeme bob@contoso.com , které existuje v naší doméně Microsoft Entra s názvem contoso. Přihlášení lze vytvořit také ze skupiny Microsoft Entra nebo instančního objektu (aplikací). To je například mygroup skupina Microsoft Entra skládající se z účtů Microsoft Entra, které jsou členem této skupiny. 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í SQL nemůže vytvořit přihlášení Microsoft Entra.

  2. Pomocí aplikace SQL Server Management Studio (SSMS) se přihlaste ke službě SQL Database pomocí účtu správce Microsoft Entra nastaveného pro server.

  3. Spusťte tento dotaz:

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

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

    Zobrazí se podobný výstup jako následující:

    Name                            type_desc       type   is_disabled 
    bob@contoso.com                 EXTERNAL_LOGIN  E      0 
    
  5. bob@contoso.com Přihlášení bylo vytvořeno ve virtuální master databázi.

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

  1. Teď, když jsme vytvořili přihlášení Microsoft Entra, můžeme vytvořit uživatele Microsoft Entra na úrovni databáze, který je namapován na přihlášení Microsoft Entra ve virtuální master databázi. Budeme dál používat náš příklad k bob@contoso.com vytvoření uživatele ve virtuální master databázi, protože chceme předvést přidání uživatele do speciálních rolí. Ve virtuální master databázi může vytvářet uživatele pouze správce Microsoft Entra nebo správce SQL Serveru.

  2. Používáme virtuální master databázi, ale pokud chcete vytvářet uživatele v jiných databázích, můžete přejít na databázi podle vašeho výběru. Spusťte následující dotaz.

    Use master
    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.

  3. Zkontrolujte vytvořeného uživatele v sys.database_principalssouboru . Spusťte následující dotaz:

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

    Zobrazí se 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. Spuštěním následující syntaxe se vytvoří databáze obsažená uživatelem v konkrétní databázi, ke které jste připojení. Důležité je, že 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 názvem.

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

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

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

Poznámka:

Zde uvedené role na úrovni serveru nejsou podporovány 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

K uživatelům ve virtuální master databázi je možné přiřadit speciální role pro službu SQL Database.

Aby bylo možné uživateli udělit jednu ze speciálních databázových rolí, musí uživatel existovat ve virtuální master databázi.

Pokud chcete přidat uživatele do role, můžete spustit 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 našem příkladu jsme vytvořili uživatele bob@contoso.com. Dejte uživateli role dbmanager a loginmanager .

  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%' 
    

    Zobrazí se podobný výstup jako následující:

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

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

Syntaxi DDL ALTER LOGIN (Transact-SQL) lze použít k povolení nebo zakázání přihlášení Microsoft Entra ve službě Azure SQL Database.

ALTER LOGIN [bob@contoso.com] DISABLE

DISABLEENABLE Aby se změny projevily okamžitě, musí být mezipaměť ověřování a mezipaměť TokenAndPermUserStore vymazána pomocí následujících příkazů T-SQL:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS 

Spuštěním následujícího dotazu zkontrolujte, jestli je přihlášení zakázané:

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

Případ použití by byl povolený jen pro čtení na geografických replikách, ale odepřít připojení na primárním serveru.

Viz také

Další informace a příklady najdete tady: