Субъекты сервера Microsoft Entra

Вы можете создавать и использовать серверные принципы из Microsoft Entra ID (ранее Azure Active Directory) в качестве логинов в виртуальную master базу данных выделенного SQL-пула Azure Synapse Analytics.

Примечание.

Серверные участники Microsoft Entra в настоящее время доступны в предварительной версии для Azure Synapse Analytics.

Существует несколько преимуществ использования учетных записей уровня сервера Microsoft Entra с выделенным SQL-пулом:

  • Поддерживать серверные роли для управления правами.
  • Поддержка нескольких пользователей Microsoft Entra с особыми ролями для Azure Synapse Analytics, такими как loginmanager и dbmanager роли.
  • Функциональный паритет между именами входа SQL и именами входа Microsoft Entra.
  • Расширьте поддержку улучшений функциональности, например, используя аутентификацию только через Microsoft Entra. Аутентификация только через Microsoft Entra позволяет отключить SQL-аутентификацию, к которой относятся администратор SQL Server, имена входа SQL и пользователи.
  • Используйте учетные данные для входа субъектов-служб Microsoft Entra со специальными ролями, чтобы полностью автоматизировать создание пользователей и баз данных, а также управление ими с помощью приложений Microsoft Entra.

Для получения дополнительной информации см. Microsoft Entra authentication for Azure Synapse Analytics.

Permissions

Чтобы использовать или создавать учетные записи Microsoft Entra в виртуальной master базе данных, вам нужны следующие права:

  • Разрешение администратора Microsoft Entra или членство в loginmanager роли сервера. Только администратор Microsoft Entra может создать первую учетную запись для входа в Microsoft Entra.
  • Должен быть членом Microsoft Entra ID в том же каталоге, который используется Azure Synapse Analytics.

По умолчанию вновь созданным именам входа Microsoft Entra в базе данных master предоставляется разрешение VIEW ANY DATABASE.

Синтаксис субъектов Microsoft Entra

Используйте следующий синтаксис для создания сервера и субъектов базы данных Microsoft Entra и управления ими.

Создание имени входа

Этот синтаксис создает имя входа на уровне сервера на основе удостоверения Microsoft Entra. Только администратор Microsoft Entra может выполнить эту команду в виртуальной master базе данных.

CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

Login_name указывает субъект Microsoft Entra, который является пользователем, группой или приложением Microsoft Entra.

Дополнительные сведения см. в статье CREATE LOGIN (Transact-SQL).

Создать пользователя из логина

Следующий синтаксис T-SQL создает субъект Microsoft Entra уровня базы данных, сопоставленный с именем входа Microsoft Entra в виртуальной master базе данных. Синтаксис аналогичен синтаксису создания пользователя Microsoft Entra в базе данных; единственное отличие заключается в том, что вместо FROM LOGIN [login_name] указывается FROM EXTERNAL PROVIDER.

Чтобы создать пользователя Microsoft Entra из имени входа Microsoft Entra, используйте следующий синтаксис.

CREATE USER [user_name] FROM LOGIN [login_name]

Вы можете использовать столбец SID из sys.database_principals, чтобы отличать пользователя автономной базы данных Microsoft Entra от пользователя Microsoft Entra, созданного на основе логина. Для пользователя SID автономной базы данных это двоичная строка длиной 16. Для пользователя, использующего вход в систему, SID имеет длину 18 и суффикс AADE.

Примечание.

Добавление суффикса AADE к SID позволяет определить пользователя Microsoft Entra как созданного на основе учетной записи входа. Однако это также означает, что идентификаторы SID для входа и его пользователей не совпадают между sys.server_principals и sys.database_principals. Чтобы связать пользователя с его логином, сначала нужно удалить AADE суффикс.

Чтобы понять концептуальную разницу между пользователями на основе входа и пользователями автономной базы данных, ознакомьтесь с пользователями автономной базы данных.

Дополнительные сведения обо всех синтаксисах создания пользователей см. в статье CREATE USER (Transact-SQL).

Отключите или включите учетную запись входа, используя ALTER LOGIN

Используйте синтаксис DDL ALTER LOGIN (Transact-SQL), чтобы включить или отключить вход Microsoft Entra в выделенном SQL-пуле Azure Synapse Analytics.

ALTER LOGIN [login_name] DISABLE

Когда вы отключаете учетную запись входа, субъект безопасности сервера больше не может подключиться. Отключение имени входа также предотвращает подключение всех субъектов-получателей прав базы данных (пользователей), созданных из этого имени входа, к их соответствующим базам данных.

Примечание.

  • ALTER LOGIN login_name DISABLE не может повлиять на автономных пользователей базы данных, потому что они не связаны с логинами.

  • ALTER LOGIN login_name DISABLEне поддерживается для групп Microsoft Entra.

  • Отдельный логин не может принадлежать пользователю, который входит в группу входа, созданную вами в базе данных master (например, в группу администраторов Microsoft Entra).

  • Чтобы изменения DISABLE или ENABLE немедленно вступили в силу, очистите кэш аутентификации и кэш TokenAndPermUserStore с помощью следующих команд T-SQL:

    DBCC FLUSHAUTHCACHE
    DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
    

Ограничения и примечания

  • Администратор SQL Server не может создавать имена входа Microsoft Entra или пользователей в каких-либо базах данных.
  • Выделенные SQL-пулы в рабочих пространствах Azure Synapse Analytics не используют логические SQL-серверы.
  • Администратор SQL или пользователь SQL не могут выполнять следующие операции Microsoft Entra:
    • CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
    • EXECUTE AS USER [bob@contoso.com]
    • ALTER AUTHORIZATION ON securable::name TO [bob@contoso.com]
  • Олицетворение серверных субъектов Microsoft Entra (учетных записей для входа) не поддерживается в Azure Synapse Analytics:
  • Учетные записи Microsoft Entra не должны совпадать с учетной записью администратора Microsoft Entra. Администратор Microsoft Entra имеет приоритет перед любым входом. Если учетная запись Microsoft Entra уже имеет доступ к серверу в качестве администратора Microsoft Entra, по отдельности или в составе группы, любое имя входа, созданное для этой учетной записи, не будет иметь никакого влияния. Однако создание имени входа не блокируется с помощью T-SQL. После аутентификации аккаунта на сервере вход имеет действующие права администратора Microsoft Entra, а не вновь созданного входа.
  • Изменение разрешений на конкретном объекте входа Microsoft Entra не поддерживается:
    • GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
  • Когда вы изменяете права доступа для логина Microsoft Entra, по умолчанию изменения вступают в силу только при следующем подключении логина к выделенному SQL-пулу. Все существующие открытые подключения для этой учетной записи не затронуты. Чтобы изменения разрешений вступили в силу немедленно, вы можете вручную очистить данные аутентификации и TokenAndPermUserStore, как описано ранее в разделе отключение или включение учетной записи для входа с помощью ALTER LOGIN. Это поведение также действует при изменении членства в ролях сервера с помощью ALTER SERVER ROLE.
  • В SQL Server Management Studio команда скриптования для создания пользователя не проверяет, существует ли уже вход Microsoft Entra с тем же именем в master. Он всегда создает T-SQL для пользователя Microsoft Entra в автономной базе данных.
  • Ошибка может возникнуть при попытке создать имя входа или пользователя из субъекта-службы с неуникальным отображаемым именем. Для получения дополнительной информации о предотвращении этой ошибки см. раздел «Соображения по названиям».
  • Пользователи базы данных, созданные с использованием учетных данных Microsoft Entra, могут испытывать задержки при получении ролей и разрешений. Если вы столкнётесь с этой проблемой, используйте следующие команды:
    • Удалите пользователя из пользовательской базы данных.
    • Выполните, DBCC FREESYSTEMCACHE('TokenAndPermUserStore') чтобы очистить кэши безопасности в базе данных.
    • Выполните DBCC FLUSHAUTHCACHE, чтобы очистить кэш контекста федеративной аутентификации.
    • Создайте пользователя на основе имени входа.

Ограничения учётной записи сервера для группы Microsoft Entra

Следующие ограничения применимы к групповым входам Microsoft Entra в Azure Synapse Analytics:

  • Серверные роли не поддерживаются для групп Microsoft Entra.
  • Если ваш SQL-администратор — группа Microsoft Entra, пользователи этой группы сталкиваются с определёнными ограничениями при подключении. Каждый пользователь Microsoft Entra не указан отдельно в sys.server_principals таблице. Это ограничение имеет различные последствия, включая то, что вызовы SUSER_SID возвращают NULL.
  • Учетные записи входа пользователей Microsoft Entra, входящие в групповые входы Microsoft Entra, не создаются неявно. У этих пользователей нет стандартной схемы, и они не могут выполнять операции, напримерCREATE SCHEMA, пока вы не создадите логин для пользователя Microsoft Entra или не назначите схему по умолчанию группе.
  • Вы не можете назначить группу Microsoft Entra владельцем базы данных.
    • ALTER AUTHORIZATION ON database::<mydb> TO [my_aad_group] завершается с сообщением об ошибке:

      Msg 33181, Level 16, State 1, Line 4
      The new owner cannot be Azure Active Directory group.
      

Дальнейшие действия