Samouczek: tworzenie i używanie loginów serwera Microsoft Entra

Ten artykuł przeprowadzi Cię przez tworzenie i korzystanie z loginów wspieranych przez Microsoft Entra ID (dawniej Azure Active Directory) w master wirtualnej bazie danych dedykowanej puli SQL Azure Synapse Analytics (dawniej SQL DW). Dedykowane pule SQL w przestrzeniach roboczych Azure Synapse Analytics nie używają logicznych serwerów SQL.

Uwaga

Jednostki zabezpieczeń serwera Microsoft Entra są obecnie dostępne w wersji zapoznawczej dla usługi Azure Synapse Analytics.

W tym poradniku nauczysz się, jak:

  • Utwórz logowanie Microsoft Entra w wirtualnej bazie master danych
  • Utwórz użytkownika powiązanego z loginem Microsoft Entra w wirtualnej master bazie danych
  • Użyj składni WITH OBJECT_ID dla nieunikalnych nazw wyświetlanych
  • Udzielanie ról serwera użytkownikowi firmy Microsoft Entra
  • Wyłączanie logowania do usługi Microsoft Entra

Prerequisites

  • Dedykowana pula SQL w Azure Synapse Analytics oraz baza danych.
  • Microsoft Entra authentication configured for Azure Synapse Analytics. Więcej informacji można znaleźć w artykule Configure and manage Microsoft Entra authentication with Azure Synapse Analytics.
  • Ten artykuł zawiera instrukcje, jak utworzyć login i użytkownika Microsoft Entra w wirtualnej bazie danych master. Tylko administrator firmy Microsoft Entra może utworzyć użytkownika w wirtualnej master bazie danych, dlatego zalecamy użycie konta administratora firmy Microsoft Entra podczas korzystania z tego samouczka. Podmiot zabezpieczeń Microsoft Entra z rolą loginmanager może utworzyć login, ale nie użytkownika w wirtualnej bazie danych master.

Uwaga

W przypadku organizacji, które mają do czynienia z nieunikatowymi nazwami wyświetlanymi w usłudze Microsoft Entra ID (szczególnie w przypadku podmiotów usługi), upewnij się, że masz dostępne informacje o identyfikatorze obiektu (Object ID) dla wszystkich podmiotów usługi, dla których planujesz utworzyć loginy. WITH OBJECT_ID Rozszerzenie składni może pomóc rozwiązać te scenariusze.

Utwórz login Microsoft Entra

  1. Utwórz dane logowania do konta Microsoft Entra. W tym przykładzie użyj bob@contoso.com, która istnieje w domenie Microsoft Entra o nazwie contoso. Możesz też utworzyć logowanie z grupy Microsoft Entra lub z service principal (aplikacje). Aby uzyskać więcej informacji, zobacz CREATE LOGIN (Transact-SQL).

    Uwaga

    Pierwszy identyfikator logowania firmy Microsoft Entra musi zostać utworzony przez administratora firmy Microsoft Entra. Administrator firmy Microsoft Entra może być użytkownikiem lub grupą firmy Microsoft Entra. Login uwierzytelniania SQL nie może tworzyć loginów Microsoft Entra.

    Wskazówka

    Jeśli napotkasz problemy z nieunikatowymi nazwami wyświetlanymi w Microsoft Entra ID, użyj rozszerzenia składni WITH OBJECT_ID. Ta funkcja jest szczególnie przydatna w przypadku jednostek usługi z zduplikowanymi nazwami wyświetlanymi. Przykład:

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

    Aby uzyskać więcej informacji, zobacz Uwagi dotyczące nazwy.

  2. Korzystając z SQL Server Management Studio (SSMS), zaloguj się do dedykowanej puli SQL za pomocą konta administratora Microsoft Entra.

  3. Rozwiń Bazy danych>Bazy danych systemowych. Kliknij prawym przyciskiem myszy bazę danych master i wybierz pozycję Nowe zapytanie, aby otworzyć nowe okno zapytania w kontekście bazy danych master.

  4. Uruchom poniższe zapytanie:

    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  5. Sprawdź utworzone logowanie w pliku sys.server_principals. Wykonaj następujące zapytanie:

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

    Widzisz wynik podobny do następującego:

    Name                            type_desc       type   is_disabled
    bob@contoso.com                 EXTERNAL_LOGIN  E      0
    
  6. Login bob@contoso.com jest tworzony w wirtualnej master bazie danych.

Utwórz użytkownika na podstawie logowania Microsoft Entra

  1. Po utworzeniu logowania Microsoft Entra, stwórz użytkownika Microsoft Entra na poziomie bazy danych, który mapuje się na logowanie Microsoft Entra w wirtualnej master bazie danych. Aby pokazać, jak dodać użytkownika do ról specjalnych, użyj naszego przykładu, bob@contoso.com, aby utworzyć użytkownika w wirtualnej master bazie danych. Tylko administrator firmy Microsoft Entra lub administrator programu SQL Server mogą tworzyć użytkowników w wirtualnej master bazie danych.

  2. Użyj wirtualnej master bazy danych, ale możesz ponownie połączyć się z wybraną bazą, jeśli chcesz tworzyć użytkowników w innych bazach. Uruchom następujące zapytanie.

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

    Wskazówka

    Chociaż nie jest wymagane używanie aliasów użytkownika Microsoft Entra (na przykład bob@contoso.com), zaleca się użycie tego samego aliasu dla użytkowników Microsoft Entra i logowań Microsoft Entra.

    Jeśli musisz utworzyć użytkownika bezpośrednio u zewnętrznego dostawcy z określonym identyfikatorem obiektu (na przykład, aby rozwiązać problemy z nieunikalnymi nazwami wyświetlanymi), użyj następującej składni:

    CREATE USER [user_name] FROM EXTERNAL PROVIDER
      WITH OBJECT_ID = 'objectid'
    
  3. Sprawdź utworzonego użytkownika w sys.database_principals. Wykonaj następujące zapytanie:

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

    Widzisz podobny wynik do następującego:

    Name                            type_desc       type
    bob@contoso.com                 EXTERNAL_USER   E
    

Uwaga

Istniejąca składnia służąca do tworzenia użytkownika Microsoft Entra bez logowania Microsoft Entra jest nadal obsługiwana. Jeśli uruchomisz następującą składnię, utworzysz użytkownika autonomicznego bazy danych w konkretnej bazie danych, z którą nawiązano połączenie. Ten użytkownik nie jest powiązany z żadnym logowaniem, nawet jeśli w wirtualnej master bazie danych istnieje login o tej samej nazwie.

Na przykład CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.

Możesz utworzyć logowanie do Microsoft Entra, używając nazwy głównej usługi o nieunikalnej nazwie wyświetlanej. Więcej informacji znajduje się w Rozważania dotyczące nazwy.

Udzielanie ról na poziomie serwera do logowań usługi Microsoft Entra

Możesz dodać loginy do stałych ról na poziomie serwera, takich jak ##MS_DefinitionReader##, ##MS_ServerStateReader## lub ##MS_ServerStateManager## w bazie danych master.

Uwaga

Role na poziomie serwera wymienione tutaj nie są obsługiwane w przypadku grup firmy 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];

Uprawnienia nie będą obowiązywać, dopóki użytkownik nie połączy się ponownie. Opróżnij również pamięć podręczną DBCC:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS

Aby sprawdzić, które logowania Microsoft Entra należą do ról serwera, uruchom następujące zapytanie:

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;

Przyznawanie ról specjalnych użytkownikom firmy Microsoft Entra

Możesz przypisać użytkownikom master w wirtualnej bazie danych.

Aby przyznać użytkownikowi jedną ze specjalnych ról bazy danych, użytkownik musi istnieć w wirtualnej master bazie danych.

Aby dodać użytkownika do roli, wykonaj następujące zapytanie:

ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]

Aby usunąć użytkownika z roli, uruchom następujące zapytanie:

ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]

AzureAD_object może być użytkownikiem, grupą lub jednostką usługi firmy Microsoft w usłudze Microsoft Entra ID.

W poniższym przykładzie tworzysz użytkownika bob@contoso.com. Przypisz użytkownikowi role dbmanager i loginmanager .

  1. Uruchom poniższe zapytanie:

    ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com]
    ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
    
  2. Sprawdź przypisanie roli bazy danych, uruchamiając następujące zapytanie:

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

    Widzisz wynik podobny do poniższego:

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

Opcjonalne — wyłączanie logowania

Użyj składni DDL ALTER LOGIN (Transact-SQL), aby włączyć lub wyłączyć login Microsoft Entra w dedykowanej puli SQL.

ALTER LOGIN [bob@contoso.com] DISABLE

Aby zmiany DISABLE lub ENABLE weszły w życie natychmiast, wyczyść pamięć podręczną uwierzytelniania i pamięć podręczną TokenAndPermUserStore, używając następujących poleceń T-SQL:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS

Sprawdź, czy logowanie jest wyłączone, uruchamiając następujące zapytanie:

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