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

Применимо к:База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics (только выделенные пулы SQL)

Теперь вы можете создавать и использовать субъекты-серверы из идентификатора Microsoft Entra (ранее Azure Active Directory), которые являются именами входа в виртуальной master базе данных База данных SQL. Существует несколько преимуществ использования субъектов сервера Microsoft Entra для База данных SQL:

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

Дополнительные сведения о проверке подлинности Microsoft Entra в SQL Azure см. в разделе "Использование проверки подлинности Microsoft Entra".

Примечание.

Субъекты сервера Microsoft Entra (имена входа) в настоящее время находятся в общедоступной предварительной версии для База данных SQL Azure и Azure Synapse Analytics. Имена входа Microsoft Entra обычно доступны для Управляемый экземпляр SQL Azure и SQL Server 2022.

Разрешения

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

  • Разрешение администратора Microsoft Entra или членство в loginmanager роли сервера. Первое имя входа Microsoft Entra можно создать только администратором Microsoft Entra.
  • Должен быть членом идентификатора Microsoft Entra в том же каталоге, который используется для База данных SQL Azure.

По умолчанию только что созданные имена входа 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 Добавление суффикса к идентификатору безопасности заключается в том, как мы определяем пользователя 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.

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 
    

Роли для субъектов Microsoft Entra

Специальные роли для База данных SQL можно назначать пользователям в виртуальной master базе данных для субъектов Microsoft Entra, включая dbmanager и loginmanager.

База данных SQL Azure роли сервера можно назначить именам входа в виртуальной master базе данных.

Руководство по предоставлению этих ролей см. в руководстве по созданию и использованию имен входа сервера Microsoft Entra.

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

  • Администратор SQL Server не может создавать имена входа Microsoft Entra или пользователей в каких-либо базах данных.
  • Администратор 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 (имена входа) не поддерживается для База данных SQL Azure и Azure Synapse Analytics. Она поддерживается для Управляемый экземпляр SQL:
  • Имена входа 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 Azure. Все существующие открытые подключения с именем входа не затрагиваются. Чтобы принудительно изменить разрешения, вы можете вручную очистить проверку подлинности и TokenAndPermUserStore, как описано ранее в отключении или включении входа с помощью ALTER LOGIN. Это поведение также применяется при изменении членства в роли сервера с ПОМОЩЬЮ ALTER SERVER ROLE.
  • В SQL Server Management Studio и Azure Data Studio команда сценариев для создания пользователя не проверка, если у вас уже есть имя входа master Microsoft Entra с тем же именем. Он всегда создает T-SQL для пользователя Microsoft Entra в автономной базе данных.
  • Ошибка может возникнуть, если вы пытаетесь создать имя входа или пользователя из субъекта-службы с отображаемого имени, отличного от имени. Дополнительные сведения об устранении этой ошибки см. в статье microsoft Entra logins and users with nonunique display name.

Ограничения субъекта-сервера группы Microsoft Entra

При использовании имен входа Microsoft Entra в общедоступной предварительной версии для База данных SQL Azure и Azure Synapse Analytics известны следующие ограничения:

  • База данных SQL Azure роли сервера не поддерживаются для групп Microsoft Entra.
  • Если администратор SQL является группой Microsoft Entra, существуют некоторые ограничения при подключении пользователей этой группы. Каждый пользователь Microsoft Entra по отдельности не входит в таблицу sys.server_principals . Это имеет различные последствия, включая вызовы к возвращению SUSER_SIDNULL.
  • Имена входа пользователей 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.
      

Следующие шаги