Поделиться через


Руководство: Защита с помощью входов Microsoft Entra — Управляемый экземпляр SQL Azure

Применимо к:Управляемый экземпляр 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 можно получить через частный 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 см. в следующих статьях:

  1. Подключитесь к управляемому экземпляру SQL, используя вход SQL от sysadmin или администратора Microsoft Entra через SQL Server Management Studio (SSMS).

  2. В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.

  3. В окне запроса используйте следующий синтаксис, чтобы создать имя входа для локальной учетной записи 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
    
  4. На панели инструментов выберите Выполнить, чтобы создать имя для входа.

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

  1. Снова войдите в управляемый экземпляр SQL или используйте существующее соединение с администратором Microsoft Entra или субъектом SQL, который является sysadmin.

  2. В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.

  3. Предоставьте логину 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.

  1. Подключитесь к управляемому экземпляру SQL с помощью имени входа Microsoft Entra, выбрав Connect to Server в SQL Server Management Studio (SSMS).

    1. Введите имя узла Управляемый экземпляр SQL в Server name.
    2. Для параметра Authentication выберите Microsoft Entra MFA, чтобы открыть окно входа для многофакторной проверки подлинности. Вход. Дополнительные сведения см. в статье универсальной проверки подлинности (поддержка SSMS для многофакторной проверки подлинности).
  2. В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.

  3. В окне запроса используйте следующий синтаксис, чтобы создать имя входа для другой учетной записи Microsoft Entra:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    В этом примере создается учетная запись для пользователя Microsoft Entra bob@aadsqlmi.net, чей домен aadsqlmi.net является федеративным с доменом Microsoft Entra aadsqlmi.onmicrosoft.com.

    Выполните следующую команду T-SQL. Федеративные учетные записи Microsoft Entra являются заменой Управляемый экземпляр SQL для локальных входов и пользователей Windows.

    USE master
    GO
    CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER
    GO
    
  4. Создайте базу данных в управляемом экземпляре SQL с помощью синтаксиса CREATE DATABASE . Эта база данных будет использоваться для тестирования входов пользователей в следующем разделе.

    1. В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.

    2. В окне запроса создайте базу данных с именем MyMITestDB, используя следующий синтаксис.

      CREATE DATABASE MyMITestDB;
      GO
      
  5. Создайте учетную запись для Управляемый экземпляр SQL для группы в Microsoft Entra ID. Перед добавлением учётной записи в Управляемый экземпляр SQL группа должна существовать в Microsoft Entra ID. См. раздел Создание базовой группы и добавление участников с помощью Microsoft Entra ID. Создайте группу mygroup и добавьте участников в эту группу.

  6. Откройте новое окно запроса в SQL Server Management Studio.

    В этом примере предполагается, что в Microsoft Entra ID существует группа с именем mygroup. Выполните следующую команду:

    USE master
    GO
    CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
    GO
    
  7. В качестве теста войдите в управляемый экземпляр SQL с помощью только что созданного имени входа или группы. Откройте новое подключение к управляемому экземпляру SQL и при проверке подлинности используйте новое имя входа.

  8. В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query для нового подключения.

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

Скриншот сообщения об ошибке из обозреватель объектов SSMS, которое содержит текст

Дополнительные сведения о предоставлении разрешений базы данных см. в разделе Getting Started with ядро СУБД Permissions.

Создание пользователя Microsoft Entra и создание примера таблицы

Примечание.

Существуют некоторые ограничения, когда пользователь входит в группу Microsoft Entra. Например, вызов SUSER_SID возвращает NULL, так как указанный пользователь Microsoft Entra не входит в таблицу sys.server_principals. Поэтому доступ к определенным хранимым процедурам или списку предоставленных разрешений может быть ограничен в этом случае.

  1. Войдите в управляемый экземпляр SQL с помощью учетной записи sysadmin в SQL Server Management Studio.

  2. В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.

  3. В окне запроса используйте следующий синтаксис, чтобы создать пользователя из имени входа 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
    
  4. Можно также создать пользователя 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.

  5. В окне нового запроса создайте тестовую таблицу, используя следующую команду T-SQL:

    USE MyMITestDB
    GO
    CREATE TABLE TestTable
    (
    AccountNum varchar(10),
    City varchar(255),
    Name varchar(255),
    State varchar(2)
    );
    
  6. Создайте подключение в SSMS под именем созданного пользователя. Вы заметите, что таблица TestTable , созданная ранее sysadmin , не отображается. Необходимо предоставить пользователю разрешения на чтение данных из базы данных.

  7. Вы можете проверить текущие разрешения пользователя, выполнив следующую команду:

    SELECT * FROM sys.fn_my_permissions('MyMITestDB','DATABASE')
    GO
    

Добавление пользователей к ролям уровня базы данных

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

  1. Войдите в управляемый экземпляр SQL с помощью учетной записи sysadmin с помощью SQL Server Management Studio.

  2. В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.

  3. Предоставьте пользователю 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
    
  4. Убедитесь, что пользователь Microsoft Entra, созданный в базе данных, действительно существует, выполнив следующую команду:

    SELECT * FROM sys.database_principals
    GO
    
  5. Создайте новое подключение к управляемому экземпляру SQL с пользователем, добавленным в роль db_datareader .

  6. Разверните базу данных в обозреватель объектов, чтобы просмотреть таблицу.

    Скриншот из обозреватель объектов в SSMS, показывающий структуру папок для таблиц в MyMITestDB. Папка dbo.TestTable выделена.

  7. Откройте новое окно запроса и выполните следующую SELECT инструкцию:

    SELECT *
    FROM TestTable
    

    Вы можете просматривать данные таблицы? Вы увидите возвращаемые столбцы, как показано на следующем снимке экрана:

    Снимок экрана вкладки

Имитировать входы в Microsoft Entra

Управляемый экземпляр SQL поддерживает имперсонацию учетных записей Microsoft Entra.

Проверка олицетворения

  1. Войдите в управляемый экземпляр SQL с помощью учетной записи sysadmin с помощью SQL Server Management Studio.

  2. В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.

  3. В окне запроса создайте новую хранимую процедуру, используя следующую команду:

    USE MyMITestDB
    GO
    CREATE PROCEDURE dbo.usp_Demo
    WITH EXECUTE AS 'bob@aadsqlmi.net'
    AS
    SELECT user_name();
    GO
    
  4. С помощью следующей команды убедитесь, что пользователь, которого вы олицетворяете при выполнении хранимой процедуры, — это bob@aadsqlmi.net.

    Exec dbo.usp_Demo
    
  5. Протестируйте олицетворение с помощью инструкции EXECUTE AS LOGIN :

    EXECUTE AS LOGIN = 'bob@aadsqlmi.net'
    GO
    SELECT SUSER_SNAME()
    REVERT
    GO
    

Примечание.

Только имена входа на уровне SQL Server, которые входят в роль sysadmin могут выполнять следующие операции, предназначенные для субъектов Microsoft Entra:

  • EXECUTE AS USER
  • EXECUTE AS LOGIN

Использование межбазовых запросов

Запросы между базами данных поддерживаются для учетных записей Microsoft Entra с Microsoft Entra именами входа. Чтобы протестировать запрос между базами данных с помощью группы Microsoft Entra, необходимо создать другую базу данных и таблицу. Если уже существует другая база данных и таблица, их создание можно пропустить.

  1. Войдите в управляемый экземпляр SQL с помощью учетной записи sysadmin с помощью SQL Server Management Studio.

  2. В обозреватель объектов щелкните правой кнопкой мыши сервер и выберите New Query.

  3. В окне запроса создайте базу данных с именем MyMITestDB2 и таблицу с именем TestTable2, используя следующую команду.

    CREATE DATABASE MyMITestDB2;
    GO
    USE MyMITestDB2
    GO
    CREATE TABLE TestTable2
    (
    EmpId varchar(10),
    FirstName varchar(255),
    LastName varchar(255),
    Status varchar(10)
    );
    
  4. В новом окне запроса выполните следующую команду, чтобы создать пользовательную группу в новой базе данных MyMITestDB2 и предоставить SELECT разрешения для этой базы данных mygroup:

    USE MyMITestDB2
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    GRANT SELECT TO [mygroup]
    GO
    
  5. Войдите в управляемый экземпляр 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.