Субъекты сервера Microsoft Entra
Применимо: База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics (только выделенные пулы SQL)
Теперь вы можете создавать и использовать субъекты-серверы из идентификатора Microsoft Entra (ранее Azure Active Directory), которые являются именами входа в виртуальной master
базе данных База данных SQL Azure (предварительная версия) и Управляемым экземпляром SQL Azure.
Примечание.
Субъекты сервера Microsoft Entra (имена входа) в настоящее время находятся в общедоступной предварительной версии для База данных SQL Azure и Azure Synapse Analytics. Имена входа Microsoft Entra обычно доступны для Управляемый экземпляр SQL Azure и SQL Server 2022.
Существует несколько преимуществ использования субъектов сервера Microsoft Entra с ресурсом SQL Azure:
- Поддержка ролей сервера Базы данных 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 в виртуальной 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:
- Предложение EXECUTE AS (Transact-SQL)
- EXECUTE AS (Transact-SQL)
- Олицетворение субъектов базы данных Microsoft Entra (пользователей) в пользовательской базе данных поддерживается во всех продуктах Microsoft 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_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.