Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
masterdanych - Utwórz użytkownika powiązanego z loginem Microsoft Entra w wirtualnej
masterbazie danych - Użyj składni
WITH OBJECT_IDdla 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 wirtualnejmasterbazie danych, dlatego zalecamy użycie konta administratora firmy Microsoft Entra podczas korzystania z tego samouczka. Podmiot zabezpieczeń Microsoft Entra z roląloginmanagermoże utworzyć login, ale nie użytkownika w wirtualnej bazie danychmaster.
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
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 nazwiecontoso. 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.
Korzystając z SQL Server Management Studio (SSMS), zaloguj się do dedykowanej puli SQL za pomocą konta administratora Microsoft Entra.
Rozwiń Bazy danych>Bazy danych systemowych. Kliknij prawym przyciskiem myszy bazę danych
masteri wybierz pozycję Nowe zapytanie, aby otworzyć nowe okno zapytania w kontekście bazy danychmaster.Uruchom poniższe zapytanie:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOSprawdź 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 0Login
bob@contoso.comjest tworzony w wirtualnejmasterbazie danych.
Utwórz użytkownika na podstawie logowania Microsoft Entra
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
masterbazie danych. Aby pokazać, jak dodać użytkownika do ról specjalnych, użyj naszego przykładu,bob@contoso.com, aby utworzyć użytkownika w wirtualnejmasterbazie danych. Tylko administrator firmy Microsoft Entra lub administrator programu SQL Server mogą tworzyć użytkowników w wirtualnejmasterbazie danych.Użyj wirtualnej
masterbazy 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'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 .
Uruchom poniższe zapytanie:
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]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