Samouczek: tworzenie i używanie identyfikatorów logowania do serwera Microsoft Entra
Dotyczy: Azure SQL Database Azure SQL Managed InstanceAzure Synapse Analytics (tylko dedykowane pule SQL)
W tym artykule opisano proces tworzenia i używania identyfikatorów logowania wspieranych przez usługę Microsoft Entra ID (dawniej Azure Active Directory) w wirtualnej master
bazie danych usługi Azure SQL.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Tworzenie identyfikatora logowania entra firmy Microsoft w wirtualnej
master
bazie danych przy użyciu nowego rozszerzenia składni dla usługi Azure SQL Database - Tworzenie użytkownika zamapowanego na logowanie firmy Microsoft Entra w wirtualnej
master
bazie danych - Udzielanie ról serwera użytkownikowi firmy Microsoft Entra
- Wyłączanie logowania do usługi Microsoft Entra
Uwaga
Podmioty zabezpieczeń serwera Microsoft Entra (identyfikatory logowania) są obecnie dostępne w publicznej wersji zapoznawczej usługi Azure SQL Database. Usługa Azure SQL Managed Instance może już korzystać z identyfikatorów logowania usługi Microsoft Entra.
Wymagania wstępne
- Usługa SQL Database lub wystąpienie zarządzane SQL z bazą danych. Zobacz Szybki start: tworzenie pojedynczej bazy danych usługi Azure SQL Database, jeśli nie utworzono jeszcze bazy danych Azure SQL Database lub Szybki start: tworzenie wystąpienia zarządzanego Azure SQL.
- Uwierzytelnianie usługi Microsoft Entra skonfigurowane dla usługi SQL Database lub usługi SQL Managed Instance. Więcej informacji można znaleźć w temacie Konfigurowanie uwierzytelniania usługi Microsoft Entra i zarządzanie nim za pomocą usługi Azure SQL.
- W tym artykule przedstawiono instrukcje dotyczące tworzenia nazwy logowania i użytkownika firmy Microsoft w wirtualnej
master
bazie danych. Tylko administrator firmy Microsoft Entra może utworzyć użytkownika w wirtualnejmaster
bazie danych, dlatego zalecamy użycie konta administratora firmy Microsoft Entra podczas korzystania z tego samouczka. Podmiot zabezpieczeń firmy Microsoft zloginmanager
rolą może utworzyć identyfikator logowania, ale nie użytkownika w wirtualnejmaster
bazie danych.
Tworzenie identyfikatora logowania microsoft Entra
Utwórz identyfikator logowania usługi Azure SQL Database dla konta microsoft Entra. W naszym przykładzie użyjemy
bob@contoso.com
nazwy , która istnieje w naszej domenie Firmy Microsoft Entra o nazwiecontoso
. Identyfikator logowania można również utworzyć na podstawie grupy entra firmy Microsoft lub jednostki usługi (aplikacji). Na przykładmygroup
jest to grupa Microsoft Entra składająca się z kont Microsoft Entra, które są członkami tej grupy. 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. Identyfikator logowania SQL nie może utworzyć identyfikatorów logowania firmy Microsoft Entra.
Za pomocą programu SQL Server Management Studio (SSMS) zaloguj się do usługi SQL Database przy użyciu konta administratora usługi Microsoft Entra skonfigurowanego dla serwera.
Uruchom poniższe zapytanie:
Use master CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GO
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%'
Zostaną wyświetlone podobne dane wyjściowe do następujących:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0
Identyfikator logowania
bob@contoso.com
został utworzony w wirtualnejmaster
bazie danych.
Tworzenie użytkownika na podstawie identyfikatora logowania firmy Microsoft Entra
Teraz, gdy utworzyliśmy identyfikator logowania firmy Microsoft Entra, możemy utworzyć użytkownika firmy Microsoft Entra na poziomie bazy danych, który jest mapowany na logowanie microsoft Entra w wirtualnej
master
bazie danych. Będziemy nadal używać naszego przykładu,bob@contoso.com
aby utworzyć użytkownika w wirtualnejmaster
bazie danych, ponieważ chcemy zademonstrować dodanie użytkownika do ról specjalnych. Tylko administrator firmy Microsoft Entra lub administrator programu SQL Server mogą tworzyć użytkowników w wirtualnejmaster
bazie danych.Używamy wirtualnej
master
bazy danych, ale możesz przełączyć się do wybranej bazy danych, jeśli chcesz utworzyć użytkowników w innych bazach danych. Uruchom poniższe zapytanie.Use master CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Napiwek
Chociaż nie jest wymagane używanie aliasów użytkownika entra firmy Microsoft (na przykład
bob@contoso.com
), zaleca się użycie tego samego aliasu dla użytkowników firmy Microsoft Entra i logowań firmy Microsoft Entra.Sprawdź utworzonego użytkownika w pliku
sys.database_principals
. Wykonaj następujące zapytanie:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'
Zostaną wyświetlone podobne dane wyjściowe do następujących:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Uwaga
Istniejąca składnia tworzenia użytkownika entra firmy Microsoft bez logowania firmy Microsoft Entra jest nadal obsługiwana. Wykonanie poniższej składni powoduje utworzenie bazy danych zawartej przez użytkownika w określonej bazie danych, z którą masz połączenie. Co ważne, ten użytkownik nie jest skojarzony z żadnym logowaniem, nawet jeśli w wirtualnej master
bazie danych istnieje identyfikator logowania o tej samej nazwie.
Na przykład CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
.
Możesz utworzyć identyfikator logowania entra firmy Microsoft przy użyciu jednostki usługi z inną nazwą wyświetlaną. Aby uzyskać więcej informacji, zobacz Microsoft Entra logins and users with nonunique display names (Identyfikatory logowania i użytkownicy firmy Microsoft z nazwami wyświetlanymi bez nazwy).
Udzielanie ról na poziomie serwera do logowań usługi Microsoft Entra
Możesz dodawać identyfikatory logowania do stałych ról na poziomie serwera, takich jak ##MS_DefinitionReader##, ##MS_ServerStateReader##lub ##MS_ServerStateManager## rola.
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 identyfikatory logowania firmy Microsoft są częścią ról na poziomie 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
Role specjalne dla usługi SQL Database można przypisać do użytkowników w wirtualnej master
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, możesz uruchomić 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 naszym przykładzie utworzyliśmy użytkownika bob@contoso.com
. Nadajmy 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%'
Zostaną wyświetlone podobne dane wyjściowe do następujących:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Opcjonalne — wyłączanie logowania
Składnia DDL ALTER LOGIN (Transact-SQL) może służyć do włączania lub wyłączania logowania entra firmy Microsoft w usłudze Azure SQL Database.
ALTER LOGIN [bob@contoso.com] DISABLE
DISABLE
ENABLE
Aby zmiany zaczęły obowiązywać natychmiast, pamięć podręczna uwierzytelniania i pamięć podręczna TokenAndPermUserStore muszą zostać wyczyszczone przy użyciu następujących poleceń języka T-SQL:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Sprawdź, czy logowanie zostało wyłączone, wykonując następujące zapytanie:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1
W tym przypadku należy zezwolić na dostęp tylko do odczytu w replikach geograficznych, ale odmówić połączenia na serwerze podstawowym.