Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье рассказывается, как создать и использовать логины, поддерживаемые Microsoft Entra ID (ранее Azure Active Directory), в виртуальной master базе данных выделенного SQL-пула Azure Synapse Analytics (ранее SQL DW). Выделенные SQL-пулы в рабочих пространствах Azure Synapse Analytics не используют логические SQL-серверы.
Примечание.
Субъекты-серверы Microsoft Entra в настоящее время доступны в предварительной версии для Azure Synapse Analytics.
В этом руководстве вы узнаете, как:
- Создайте логин Microsoft Entra в виртуальной
masterбазе данных - Создайте пользователя, сопоставленного с учетной записью входа Microsoft Entra в виртуальной базе данных
master - Использование синтаксиса
WITH OBJECT_IDдля неуниковых отображаемых имен - Предоставление ролей сервера пользователю Microsoft Entra
- Отключение имени входа Microsoft Entra
Prerequisites
- Выделенный SQL-пул и база данных Azure Synapse Analytics.
- Настроена аутентификация Microsoft Entra для Azure Synapse Analytics. Для получения дополнительной информации смотрите «Настройка и управление аутентификацией Microsoft Entra с помощью Azure Synapse Analytics».
- В этой статье объясняется, как создать имя входа Microsoft Entra и пользователя в виртуальной базе данных
master. Только администратор Microsoft Entra может создать пользователя в виртуальнойmasterбазе данных, поэтому мы рекомендуем использовать учетную запись администратора Microsoft Entra при работе с этим руководством. Участник безопасности Microsoft Entra с рольюloginmanagerможет создать учетную запись для входа, но не может создать пользователя в виртуальной базе данныхmaster.
Примечание.
Для организаций, имеющих дело с неуникными отображаемыми именами в идентификаторе Microsoft Entra ID (особенно для субъектов-служб), убедитесь, что у вас есть сведения об идентификаторе объекта для всех субъектов-служб, для которых планируется создать имена входа. Расширение синтаксиса WITH OBJECT_ID может помочь устранить эти сценарии.
Создание входа Microsoft Entra
Создайте учетную запись Microsoft Entra. В этом примере используйте
bob@contoso.com, который существует в домене Microsoft Entra под названиемcontoso. Вы также можете создать логин из группы Microsoft Entra или субъекта-службы (приложения). Дополнительные сведения см. в статье CREATE LOGIN (Transact-SQL).Примечание.
Первая учетная запись Microsoft Entra для входа должна быть создана администратором Microsoft Entra. В роли администратора Microsoft Entra могут выступать пользователь или группа Microsoft Entra. Логин для аутентификации SQL не может создавать логины Microsoft Entra.
Tip
Если вы столкнулись с проблемами с неуникальными отображёнными именами в Microsoft Entra ID, используйте расширение синтаксиса
WITH OBJECT_ID. Эта функция особенно полезна для субъектов-служб с повторяющимися отображаемыми именами. Рассмотрим пример.CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'Для получения дополнительной информации см.: Соображения по названию.
Используя SQL Server Management Studio (SSMS), войдите в свой выделенный SQL-пул с учётной записью администратора Microsoft Entra.
Разверните базы данных, затем,>,, а также системные базы данных. Щелкните правой кнопкой мыши базу данных
masterи выберите создать запрос, чтобы открыть новое окно запроса в контексте базы данныхmaster.Выполните приведенный ниже запрос:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOПроверьте созданный логин в
sys.server_principals. Выполните следующий запрос:SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'Вы видите похожий результат:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0Логин
bob@contoso.comсоздаётся в виртуальнойmasterбазе данных.
Создать пользователя на основе учетной записи Microsoft Entra
После создания логина Microsoft Entra создайте пользователя Microsoft Entra на уровне базы данных, который сопоставлен с логином Microsoft Entra в виртуальной
masterбазе данных. Чтобы показать, как добавить пользователя в специальные роли, на примереbob@contoso.comсоздайте пользователя в виртуальной базе данныхmaster. Только администратор Microsoft Entra или администратор SQL Server могут создавать пользователей в виртуальнойmasterбазе данных.Используйте виртуальную
masterбазу данных, но если хотите создавать пользователей в других базах данных, вы можете снова подключиться к выбранной базе данных. Выполните следующий запрос.CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]Tip
Хотя не требуется использовать псевдонимы пользователей Microsoft Entra (например,
bob@contoso.com), рекомендуется использовать тот же псевдоним для пользователей Microsoft Entra и имен входа Microsoft Entra.Если вам нужно создать пользователя напрямую у внешнего провайдера с определённым идентификатором объекта (например, для решения проблем с неуникальными отображаемыми именами), используйте следующий синтаксис:
CREATE USER [user_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid'Проверьте созданного пользователя в
sys.database_principals. Выполните следующий запрос:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'Вы видите похожий результат:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Примечание.
Существующий синтаксис для создания пользователя Microsoft Entra без имени входа Microsoft Entra по-прежнему поддерживается. Если использовать следующий синтаксис, вы создаёте автономного пользователя базы данных в конкретной базе данных, к которой вы подключены. Этот пользователь не связан с каким-либо логином, даже если логин с таким же именем существует в виртуальной master базе данных.
Например: CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.
Вы можете создать логин Microsoft Entra, используя принципал сервиса с неуникальным отображаемым именем. Для получения дополнительной информации см. раздел «Рекомендации по именованию».
Предоставьте роли уровня сервера учетным записям для входа Microsoft Entra
Вы можете добавлять логины в фиксированные роли серверного уровня, такие как ##MS_DefinitionReader##, ##MS_ServerStateReader## или ##MS_ServerStateManager##, в базе данных master.
Примечание.
Упомянутые здесь роли уровня сервера не поддерживаются для групп 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];
Разрешения вступают в силу только после повторного подключения пользователя. Также очистите кэш DBCC:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Чтобы проверить, какие имена входа Microsoft Entra являются частью ролей уровня сервера, выполните следующий запрос:
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;
Предоставление специальных ролей пользователям Microsoft Entra
Вы можете назначать специальные роли для Azure Synapse Analytics пользователям в виртуальной master базе данных.
Чтобы предоставить пользователю одну из специальных ролей базы данных, пользователь должен существовать в виртуальной master базе данных.
Чтобы добавить пользователя в роль, выполните следующий запрос:
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
Чтобы удалить пользователя из роли, выполните следующий запрос:
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_object может быть пользователем Microsoft Entra, группой или субъектом-службой в идентификаторе Microsoft Entra.
В следующем примере вы создаёте пользователя bob@contoso.com. Назначьте пользователю роли dbmanager и loginmanager.
Выполните приведенный ниже запрос:
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]Проверьте назначение роли базы данных, выполнив следующий запрос:
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%'Вы видите похожий результат:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Необязательно — отключить вход
Используйте синтаксис DDL ALTER LOGIN (Transact-SQL), чтобы включить или отключить учетную запись Microsoft Entra в выделенном SQL-пуле.
ALTER LOGIN [bob@contoso.com] DISABLE
Чтобы изменения DISABLE или ENABLE немедленно вступили в силу, очистите кэш аутентификации и кэш TokenAndPermUserStore с помощью следующих команд T-SQL:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Проверьте, отключён ли вход, выполнив следующий запрос:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1