Handledning: Skapa och använd Microsoft Entra-serverinloggningar

Den här artikeln guidar dig genom att skapa och använda inloggningar som backas upp av Microsoft Entra ID (tidigare Azure Active Directory) i den virtuella master databasen i en dedikerad SQL-pool för Azure Synapse Analytics (tidigare SQL DW). Dedikerade SQL-pooler i Azure Synapse Analytics-arbetsytor använder inte logiska SQL-servrar.

Note

Microsoft Entra Server Principals är för närvarande i förhandsvisning för Azure Synapse Analytics.

I den här tutorialen lär du dig följande:

  • Skapa en Microsoft Entra-inloggning i den virtuella master databasen
  • Skapa en användare som mappats till en Microsoft Entra-inloggning i den virtuella master-databasen
  • Använd syntaxen WITH OBJECT_ID för icke-anpassade visningsnamn
  • Bevilja serverroller till en Microsoft Entra-användare
  • Inaktivera Microsoft Entra-inloggning

Prerequisites

  • En dedikerad SQL-pool för Azure Synapse Analytics och en databas.
  • Microsoft Entra-autentisering har konfigurerats för Azure Synapse Analytics. För mer information, se Konfigurera och hantera Microsoft Entra-autentisering med Azure Synapse Analytics.
  • Den här artikeln beskriver hur du skapar en Microsoft Entra-inloggning och användare i den virtuella master-databasen. Endast en Microsoft Entra-administratör kan skapa en användare i den virtuella master-databasen, så vi rekommenderar att du använder Microsoft Entra-administratörskontot när du går igenom den här självstudien. Ett Microsoft Entra-huvudnamn med rollen loginmanager kan skapa en inloggning, men inte en användare i den virtuella master-databasen.

Note

För organisationer som hanterar icke-unika visningsnamn i Microsoft Entra-ID (särskilt för tjänstens huvudnamn) ser du till att du har objekt-ID-informationen tillgänglig för alla tjänsthuvudnamn som du planerar att skapa inloggningar för. Syntaxtillägget WITH OBJECT_ID kan hjälpa dig att lösa dessa scenarier.

Skapa Microsoft Entra-inloggning

  1. Skapa en inloggning för ett Microsoft Entra-konto. I detta exempel använder du bob@contoso.com som finns i Microsoft Entra-domänen kallad contoso. Du kan också skapa en inloggning från en Microsoft Entra-grupp eller tjänstens huvudnamn (applikationer). Mer information finns i CREATE LOGIN (Transact-SQL).

    Note

    Den första Microsoft Entra-inloggningen måste skapas av Microsoft Entra-administratören. Microsoft Entra-administratören kan vara en Microsoft Entra-användare eller grupp. Ett SQL-autentiseringsinloggningsnamn kan inte skapa Microsoft Entra-inloggningsnamn.

    Tip

    Om du stöter på problem med icke-unika visningsnamn i Microsoft Entra ID, använd syntaxtilläggetWITH OBJECT_ID. Den här funktionen är särskilt användbar för tjänstens huvudnamn med dubbla visningsnamn. Ett exempel:

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

    För mer information, se Namnöverväganden.

  2. Med SQL Server Management Studio (SSMS) loggar du in på din dedikerade SQL-pool med Microsoft Entra-administratörskontot.

  3. Expandera Databaser>Systemdatabaser. Högerklicka på master-databasen och välj Ny fråga för att öppna ett nytt frågefönster i kontexten för master-databasen.

  4. Kör följande fråga:

    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  5. Kontrollera den skapade inloggningen i sys.server_principals. Kör följande fråga:

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

    Du ser liknande utdata som följande:

    Name                            type_desc       type   is_disabled
    bob@contoso.com                 EXTERNAL_LOGIN  E      0
    
  6. Inloggningskontot bob@contoso.com skapas i den virtuella master databasen.

Skapa användare från en Microsoft Entra-inloggning

  1. Efter att du har skapat en Microsoft Entra-inloggning, skapa en databasnivå Microsoft Entra-användare som mappas till Microsoft Entra-inloggningen i den virtuella master databasen. För att visa hur man lägger till användaren i specialroller, använd vårt exempel, bob@contoso.com, för att skapa en användare i den virtuella master databasen. Endast en Microsoft Entra-administratör eller SQL Server-administratör kan skapa användare i den virtuella master databasen.

  2. Använd den virtuella master databasen, men du kan återansluta till en databas du väljer om du vill skapa användare i andra databaser. Kör följande fråga.

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

    Tip

    Även om det inte krävs att använda Microsoft Entra-användaralias (till exempel bob@contoso.com), är det en rekommenderad metod att använda samma alias för Microsoft Entra-användare och Microsoft Entra-inloggningar.

    Om du behöver skapa en användare direkt från en extern leverantör med ett specifikt Objekt-ID (till exempel för att lösa problem med icke-unika visningsnamn), använd följande syntax:

    CREATE USER [user_name] FROM EXTERNAL PROVIDER
      WITH OBJECT_ID = 'objectid'
    
  3. Kontrollera den skapade användaren i sys.database_principals. Kör följande fråga:

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

    Du ser liknande utdata som följande:

    Name                            type_desc       type
    bob@contoso.com                 EXTERNAL_USER   E
    

Note

Den befintliga syntaxen för att skapa en Microsoft Entra-användare utan Microsoft Entra-inloggning stöds fortfarande. Om du kör följande syntax skapar du en databasanvändare i den specifika databas du är ansluten till. Denna användare är inte kopplad till någon inloggning, även om en inloggning med samma namn finns i den virtuella master databasen.

Till exempel CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.

Du kan skapa en Microsoft Entra-inloggning genom att använda en tjänsteprincip med ett icke-unikt visningsnamn. För mer information, se Namnöverväganden.

Bevilja roller på servernivå till Microsoft Entra-inloggningar

Du kan lägga till inloggningar till fasta roller på servernivå, såsom ##MS_DefinitionReader##, ##MS_ServerStateReader## eller ##MS_ServerStateManager##-rollen i databasen master.

Note

De roller på servernivå som nämns här stöds inte för Microsoft Entra-grupper.

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];

Behörigheter gäller inte förrän användaren återansluter. Töm DBCC-cachen också:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS

Kör följande fråga för att kontrollera vilka Microsoft Entra-inloggningar som ingår i roller på servernivå:

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;

Bevilja särskilda roller för Microsoft Entra-användare

Du kan tilldela särskilda roller för Azure Synapse Analytics till användare i den virtuella master databasen.

För att tilldela en av de speciella databasrollerna till en användare måste användaren existera i den virtuella master databasen.

För att lägga till en användare i en roll, kör följande kommando:

ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]

Om du vill ta bort en användare från en roll kör du följande fråga:

ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]

AzureAD_object kan vara microsoft entra-användare, grupp eller tjänstens huvudnamn i Microsoft Entra-ID.

I följande exempel skapar du användaren bob@contoso.com. Tilldela dbmanager- och loginmanager-rollerna till användaren.

  1. Kör följande fråga:

    ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com]
    ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
    
  2. Kontrollera databasrolltilldelningen genom att köra följande fråga:

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

    Du ser liknande utdata som följande:

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

Valfritt – Inaktivera en inloggning

Använd DDL-syntaxen ALTER LOGIN (Transact-SQL) för att aktivera eller inaktivera en Microsoft Entra-inloggning i en dedikerad SQL-pool.

ALTER LOGIN [bob@contoso.com] DISABLE

För att ändringar i DISABLE eller ENABLE ska träda i kraft omedelbart, rensa autentiseringscachen och cachen för TokenAndPermUserStore med följande T-SQL-kommandon:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS

Kontrollera att inloggningen är inaktiverad genom att köra följande fråga:

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