Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:Управляемый экземпляр SQL Azure
В этой статье вы узнаете, как использовать серверные принципалы (имена входа), поддерживаемые Microsoft Entra ID (ранее Azure Active Directory) для обеспечения безопасности Управляемый экземпляр SQL Azure.
В этом руководстве описано следующее:
- Создайте учетную запись Microsoft Entra для управляемого экземпляра SQL.
- Предоставьте разрешения для входа в управляемом экземпляре SQL.
- Создайте пользователей Microsoft Entra из учетных записей.
- Назначение разрешений пользователям и управление безопасностью базы данных.
- Используйте олицетворение с пользователями.
- Используйте межбазовые запросы с учетом пользователей.
- Сведения о функциях безопасности, таких как защита от угроз, аудит, маскирование данных и шифрование.
Примечание.
Microsoft Entra ID ранее был известен как Azure Active Directory (Azure AD).
Предварительные условия
Чтобы завершить учебное пособие, убедитесь, что у вас есть следующие требования:
- SQL Server Management Studio (SSMS)
- Управляемый экземпляр SQL
- Следуйте этой статье. Краткое руководство. Создание управляемого экземпляра SQL
- Возможность получения доступа к управляемому экземпляру SQL и назначенному администратору Microsoft Entra для SQL управляемого экземпляра. Дополнительные сведения см. в следующем разделе:
Ограничить доступ
Управляемые экземпляры SQL можно получить через частный IP-адрес. Так же, как изолированная среда SQL Server, приложения или пользователи должны получить доступ к сети Управляемый экземпляр SQL (VNet), прежде чем можно будет установить подключение. Дополнительные сведения см. в статье Connect your application to Управляемый экземпляр SQL.
Кроме того, можно настроить конечную точку службы в управляемом экземпляре SQL, которая позволяет общедоступным подключениям таким же образом, как и для База данных SQL Azure. Дополнительные сведения см. в статье Настройка общедоступной конечной точки Управляемый экземпляр SQL Azure.
Создайте учётную запись Microsoft Entra с помощью SSMS
Администратор SQL может создать первый логин Microsoft Entra или использовать учетную запись администратора Microsoft Entra, созданную во время подготовки. Дополнительные сведения см. в разделе Создание администратора Microsoft Entra для управляемого экземпляра SQL.
Примеры подключения к Управляемый экземпляр SQL см. в следующих статьях:
- Quickstart: настройка Azure виртуальной машины для подключения к Управляемый экземпляр SQL
- Quickstart: настройте подключение типа "точка — сеть" для Управляемый экземпляр SQL из локальной среды
Подключитесь к управляемому экземпляру SQL, используя вход SQL от sysadmin или администратора Microsoft Entra через SQL Server Management Studio (SSMS).
В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.
В окне запроса используйте следующий синтаксис, чтобы создать имя входа для локальной учетной записи Microsoft Entra:
USE master GO CREATE LOGIN login_name FROM EXTERNAL PROVIDER GOВ этом примере создается логин для учетной записи
nativeuser@aadsqlmi.onmicrosoft.com.USE master GO CREATE LOGIN [nativeuser@aadsqlmi.onmicrosoft.com] FROM EXTERNAL PROVIDER GOНа панели инструментов выберите Выполнить, чтобы создать имя для входа.
Проверьте только что добавленное имя входа, выполнив следующую команду T-SQL:
SELECT * FROM sys.server_principals; GO
Дополнительные сведения можно найти в разделе CREATE LOGIN.
Предоставление прав для создания имен для входа
Существующие имена входа должны иметь соответствующие разрешения или быть частью соответствующих ролей сервера для создания других Microsoft Entra имен входа.
Имена входа проверки подлинности SQL
Если учётная запись является субъектом сервера с аутентификацией на основе SQL, ей должна быть назначена роль sysadmin для создания входов для учетных записей Microsoft Entra.
Microsoft Entra аутентификационные логины
- Если имя входа является учетной записью сервера Microsoft Entra, его необходимо назначить на роль сервера sysadmin или securityadmin для создания имен входа для других пользователей, групп и приложений Microsoft Entra.
- Разрешение
ALTER ANY LOGINдолжно быть предоставлено, как минимум, для создания других учетных записей Microsoft Entra. - По умолчанию стандартные разрешения, предоставленные только что созданным Microsoft Entra входам в
master, являютсяCONNECT SQLиVIEW ANY DATABASE. - Роль сервера sysadmin может быть предоставлена многим именам входа Microsoft Entra в управляемом экземпляре SQL.
Чтобы добавить имя входа в роль сервера sysadmin, выполните следующие действия.
Снова войдите в управляемый экземпляр SQL или используйте существующее соединение с администратором Microsoft Entra или субъектом SQL, который является sysadmin.
В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.
Предоставьте логину Microsoft Entra роль сервера sysadmin с помощью следующего синтаксиса T-SQL:
ALTER SERVER ROLE sysadmin ADD MEMBER login_name GOВ следующем примере для учетной записи
nativeuser@aadsqlmi.onmicrosoft.comпредоставляется роль сервера sysadmin.ALTER SERVER ROLE sysadmin ADD MEMBER [nativeuser@aadsqlmi.onmicrosoft.com] GO
Создайте дополнительные учетные записи Microsoft Entra с помощью SSMS
После того как учетная запись Microsoft Entra была создана и ей были предоставлены права sysadmin, эта учетная запись может создавать дополнительные логины, используя предложение FROM EXTERNAL PROVIDER с CREATE LOGIN.
Подключитесь к управляемому экземпляру SQL с помощью имени входа Microsoft Entra, выбрав Connect to Server в SQL Server Management Studio (SSMS).
- Введите имя узла Управляемый экземпляр SQL в Server name.
- Для параметра Authentication выберите Microsoft Entra MFA, чтобы открыть окно входа для многофакторной проверки подлинности. Вход. Дополнительные сведения см. в статье универсальной проверки подлинности (поддержка SSMS для многофакторной проверки подлинности).
В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.
В окне запроса используйте следующий синтаксис, чтобы создать имя входа для другой учетной записи Microsoft Entra:
USE master GO CREATE LOGIN login_name FROM EXTERNAL PROVIDER GOВ этом примере создается учетная запись для пользователя Microsoft Entra
bob@aadsqlmi.net, чей доменaadsqlmi.netявляется федеративным с доменом Microsoft Entraaadsqlmi.onmicrosoft.com.Выполните следующую команду T-SQL. Федеративные учетные записи Microsoft Entra являются заменой Управляемый экземпляр SQL для локальных входов и пользователей Windows.
USE master GO CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER GOСоздайте базу данных в управляемом экземпляре SQL с помощью синтаксиса CREATE DATABASE . Эта база данных будет использоваться для тестирования входов пользователей в следующем разделе.
В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.
В окне запроса создайте базу данных с именем MyMITestDB, используя следующий синтаксис.
CREATE DATABASE MyMITestDB; GO
Создайте учетную запись для Управляемый экземпляр SQL для группы в Microsoft Entra ID. Перед добавлением учётной записи в Управляемый экземпляр SQL группа должна существовать в Microsoft Entra ID. См. раздел Создание базовой группы и добавление участников с помощью Microsoft Entra ID. Создайте группу mygroup и добавьте участников в эту группу.
Откройте новое окно запроса в SQL Server Management Studio.
В этом примере предполагается, что в Microsoft Entra ID существует группа с именем mygroup. Выполните следующую команду:
USE master GO CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER GOВ качестве теста войдите в управляемый экземпляр SQL с помощью только что созданного имени входа или группы. Откройте новое подключение к управляемому экземпляру SQL и при проверке подлинности используйте новое имя входа.
В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query для нового подключения.
Проверьте разрешения сервера для только что созданного Microsoft Entra входа, выполнив следующую команду:
SELECT * FROM sys.fn_my_permissions (NULL, 'DATABASE') GO
поддержка Azure SQL субъектов Microsoft Entra в качестве пользователей и имен входа распространяется на Внешняя идентификация Microsoft Entra внутренних и внешних гостевых пользователей. Гостевые пользователи, как по отдельности, так и в составе группы, могут использоваться так же, как и любой другой пользователь Microsoft Entra в Azure SQL. Если вы хотите, чтобы гостевые пользователи могли создавать другие учётные записи серверов Microsoft Entra или пользователей для базы данных, у них должны быть права на чтение других идентификаторов в каталоге Microsoft Entra. Это разрешение настраивается на уровне каталога. Дополнительные сведения см. в разделе разрешения гостевого доступа в Microsoft Entra ID.
Создание пользователя Microsoft Entra из имени входа Microsoft Entra
Авторизация в отдельных базах данных в Управляемый экземпляр SQL работает почти так же, как с базами данных в SQL Server. Вы можете создать пользователя из существующего логина в базе данных, который имеет разрешения в этой базе данных или добавлен в роль базы данных.
Теперь, когда мы создали базу данных MyMITestDB и имя входа, которое имеет разрешения только по умолчанию, следующим шагом является создание пользователя из этого имени входа. На данный момент учетная запись может подключиться к управляемому экземпляру SQL и просмотреть все базы данных, однако она не может взаимодействовать с этими базами данных. Если вы войдите с помощью учетной записи Microsoft Entra с разрешениями по умолчанию и попытаетесь развернуть только что созданную базу данных, вы увидите следующую ошибку:
Дополнительные сведения о предоставлении разрешений базы данных см. в разделе Getting Started with ядро СУБД Permissions.
Создание пользователя Microsoft Entra и создание примера таблицы
Примечание.
Существуют некоторые ограничения, когда пользователь входит в группу Microsoft Entra.
Например, вызов SUSER_SID возвращает NULL, так как указанный пользователь Microsoft Entra не входит в таблицу sys.server_principals.
Поэтому доступ к определенным хранимым процедурам или списку предоставленных разрешений может быть ограничен в этом случае.
Войдите в управляемый экземпляр SQL с помощью учетной записи sysadmin в SQL Server Management Studio.
В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.
В окне запроса используйте следующий синтаксис, чтобы создать пользователя из имени входа Microsoft Entra:
USE <Database Name> -- provide your database name GO CREATE USER user_name FROM LOGIN login_name GOВ следующем примере создается пользователь
bob@aadsqlmi.netна основе имени для входаbob@aadsqlmi.net:USE MyMITestDB GO CREATE USER [bob@aadsqlmi.net] FROM LOGIN [bob@aadsqlmi.net] GOМожно также создать пользователя Microsoft Entra из учетной записи Microsoft Entra, принадлежащей группе.
В следующем примере создается имя входа для группы Microsoft Entra mygroup, существующей в клиенте Microsoft Entra:
USE MyMITestDB GO CREATE USER [mygroup] FROM LOGIN [mygroup] GOВсе пользователи, принадлежащие к mygroup, могут получить доступ к базе данных MyMITestDB.
Внимание
При создании USER из учетной записи Microsoft Entra укажите user_name как login_name из
LOGIN.Дополнительные сведения можно найти в статье CREATE USER.
В окне нового запроса создайте тестовую таблицу, используя следующую команду T-SQL:
USE MyMITestDB GO CREATE TABLE TestTable ( AccountNum varchar(10), City varchar(255), Name varchar(255), State varchar(2) );Создайте подключение в SSMS под именем созданного пользователя. Вы заметите, что таблица TestTable , созданная ранее sysadmin , не отображается. Необходимо предоставить пользователю разрешения на чтение данных из базы данных.
Вы можете проверить текущие разрешения пользователя, выполнив следующую команду:
SELECT * FROM sys.fn_my_permissions('MyMITestDB','DATABASE') GO
Добавление пользователей к ролям уровня базы данных
Чтобы пользователь мог просматривать данные в базе данных, ему можно предоставить роли уровня базы данных.
Войдите в управляемый экземпляр SQL с помощью учетной записи sysadmin с помощью SQL Server Management Studio.
В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.
Предоставьте пользователю Microsoft Entra роль базы данных db_datareader с помощью следующего синтаксиса T-SQL:
Use <Database Name> -- provide your database name ALTER ROLE db_datareader ADD MEMBER user_name GOСледующий пример предоставляет пользователю
bob@aadsqlmi.netи группе mygroup разрешения db_datareader в базе данных MyMITestDB :USE MyMITestDB GO ALTER ROLE db_datareader ADD MEMBER [bob@aadsqlmi.net] GO ALTER ROLE db_datareader ADD MEMBER [mygroup] GOУбедитесь, что пользователь Microsoft Entra, созданный в базе данных, действительно существует, выполнив следующую команду:
SELECT * FROM sys.database_principals GOСоздайте новое подключение к управляемому экземпляру SQL с пользователем, добавленным в роль db_datareader .
Разверните базу данных в обозреватель объектов, чтобы просмотреть таблицу.
Откройте новое окно запроса и выполните следующую
SELECTинструкцию:SELECT * FROM TestTableВы можете просматривать данные таблицы? Вы увидите возвращаемые столбцы, как показано на следующем снимке экрана:
Имитировать входы в Microsoft Entra
Управляемый экземпляр SQL поддерживает имперсонацию учетных записей Microsoft Entra.
Проверка олицетворения
Войдите в управляемый экземпляр SQL с помощью учетной записи sysadmin с помощью SQL Server Management Studio.
В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.
В окне запроса создайте новую хранимую процедуру, используя следующую команду:
USE MyMITestDB GO CREATE PROCEDURE dbo.usp_Demo WITH EXECUTE AS 'bob@aadsqlmi.net' AS SELECT user_name(); GOС помощью следующей команды убедитесь, что пользователь, которого вы олицетворяете при выполнении хранимой процедуры, — это
bob@aadsqlmi.net.Exec dbo.usp_DemoПротестируйте олицетворение с помощью инструкции
EXECUTE AS LOGIN:EXECUTE AS LOGIN = 'bob@aadsqlmi.net' GO SELECT SUSER_SNAME() REVERT GO
Примечание.
Только имена входа на уровне SQL Server, которые входят в роль sysadmin могут выполнять следующие операции, предназначенные для субъектов Microsoft Entra:
EXECUTE AS USEREXECUTE AS LOGIN
Использование межбазовых запросов
Запросы между базами данных поддерживаются для учетных записей Microsoft Entra с Microsoft Entra именами входа. Чтобы протестировать запрос между базами данных с помощью группы Microsoft Entra, необходимо создать другую базу данных и таблицу. Если уже существует другая база данных и таблица, их создание можно пропустить.
Войдите в управляемый экземпляр SQL с помощью учетной записи sysadmin с помощью SQL Server Management Studio.
В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.
В окне запроса создайте базу данных с именем MyMITestDB2 и таблицу с именем TestTable2, используя следующую команду.
CREATE DATABASE MyMITestDB2; GO USE MyMITestDB2 GO CREATE TABLE TestTable2 ( EmpId varchar(10), FirstName varchar(255), LastName varchar(255), Status varchar(10) );В новом окне запроса выполните следующую команду, чтобы создать пользовательную группу в новой базе данных MyMITestDB2 и предоставить
SELECTразрешения для этой базы данных mygroup:USE MyMITestDB2 GO CREATE USER [mygroup] FROM LOGIN [mygroup] GO GRANT SELECT TO [mygroup] GOВойдите в управляемый экземпляр SQL с помощью SQL Server Management Studio как член группы Microsoft Entra mygroup. Откройте новое окно запроса и выполните инструкцию между базами данных
SELECT:USE MyMITestDB SELECT * FROM MyMITestDB2..TestTable2 GOВы должны увидеть результаты таблицы TestTable2.
Дополнительные поддерживаемые сценарии
- Управление агентом SQL и выполнение заданий поддерживаются для логинов Microsoft Entra.
- Учетные записи Microsoft Entra могут выполнять операции резервного копирования и восстановления базы данных.
- Auditing всех заявлений, связанных с входами и аутентификационными событиями Microsoft Entra.
- Выделенное подключение администратора для входа Microsoft Entra, который входит в роль сервера sysadmin.
- Вход в Microsoft Entra поддерживается с помощью утилиты sqlcmd и инструмента SQL Server Management Studio.
- Триггеры входа поддерживаются для событий входа, поступающих из логинов Microsoft Entra.
- Службы Service Broker и почта базы данных могут быть настроены с использованием логинов Microsoft Entra.
Связанный контент
- функции безопасности Управляемый экземпляр SQL
- Начните с аудита Управляемый экземпляр SQL Azure
- Always Encrypted
- Настройка расширенной защиты от угроз в Управляемый экземпляр SQL Azure
- Динамическое маскирование данных
- Безопасность на уровне строк
- Прозрачное шифрование данных (TDE)
- Что такое Управляемый экземпляр SQL Azure?