Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:База данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics (только выделенные пулы SQL)
Теперь вы можете создавать и использовать учетные записи сервера на основе Microsoft Entra ID (ранее Azure Active Directory), которые служат именами входа в виртуальной master базе данных База данных SQL Azure и Управляемый экземпляр SQL Azure.
Примечание.
Учетные записи уровня сервера Microsoft Entra (имена входа) стали общедоступными для База данных SQL Azure, Управляемый экземпляр SQL Azure и SQL Server 2022 и более поздних версий. Субъекты безопасности сервера Microsoft Entra в настоящее время доступны в рамках общедоступной предварительной версии для Azure Synapse Analytics.
Использование субъектов-пользователей сервера Microsoft Entra с ресурсом Azure SQL дает несколько преимуществ:
- Поддержка ролей сервера Базы данных SQL Azure для управления разрешениями.
- Поддерживаются несколько пользователей Microsoft Entra со специальными ролями для SQL Database, например
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 EXTERNAL PROVIDER указывается FROM LOGIN [login_name].
Чтобы создать пользователя 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.
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 PROVIDERCREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDEREXECUTE 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 команда скриптования для создания пользователя не проверяет, существует ли уже вход Microsoft Entra с тем же именем в
master. Он всегда создает T-SQL для пользователя Microsoft Entra в автономной базе данных. - Ошибка может возникнуть при попытке создать имя входа или пользователя из субъекта-службы с неуникальным отображаемым именем. Дополнительные сведения об устранении этой ошибки см. в статье Входы Microsoft Entra и пользователи с неуникальными отображаемыми именами.
- В Базе данных SQL Azure и Azure Synapse Analytics пользователи базы данных, созданные с помощью имен входа Microsoft Entra, могут столкнуться с задержками при предоставлении ролей и разрешений. Если вы столкнулись с этим, используйте следующие команды, чтобы устранить проблему:
- Удалите пользователя из пользовательской базы данных.
- Выполните,
DBCC FREESYSTEMCACHE('TokenAndPermUserStore')чтобы очистить кэши безопасности в базе данных. - Выполните
DBCC FLUSHAUTHCACHE, чтобы очистить кэш контекста федеративной аутентификации. - Создайте пользователя на основе имени входа.
Ограничения учётной записи сервера для группы 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.