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

Применимо к:Управляемый экземпляр SQL Azure

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

В этом руководстве описано следующее:

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

Примечание.

Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).

Необходимые компоненты

Для работы с руководством требуется наличие следующих компонентов:

Ограничить доступ

Доступ к управляемому экземпляру возможен по частному IP-адресу. Так же как и в изолированной среде SQL Server, приложениям или пользователям потребуется доступ к сети Управляемого экземпляра SQL, прежде чем можно будет установить подключение. Дополнительные сведения см. в статье Подключение приложения к Управляемому экземпляру SQL.

Кроме того, можно настроить конечную точку службы в управляемом экземпляре, которая обеспечит общедоступные подключения таким же образом, как и База данных SQL Azure. Дополнительные сведения см. в статье о настройке общедоступной конечной точки в Управляемом экземпляре SQL Azure.

Создание имени входа Microsoft Entra с помощью SSMS

Первое имя входа Microsoft Entra можно создать администратором SQL или администратором Microsoft Entra, созданным во время подготовки. Дополнительные сведения см. в статье "Подготовка администратора Microsoft Entra для Управляемый экземпляр SQL".

Примеры подключения к Управляемому экземпляру SQL см. в следующих статьях:

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

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

  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
    

    Screenshot of the Results tab in the S S M S Object Explorer showing the name, principal_id, sid, type, and type_desc of the newly added login.

Дополнительные сведения можно найти в разделе CREATE LOGIN (Transact-SQL).

Предоставление прав для создания имен для входа

Существующие имена входа должны иметь соответствующие разрешения или быть частью соответствующих ролей сервера для создания других имен входа Microsoft Entra.

Имена входа проверки подлинности SQL

  • Если имя входа является субъектом сервера на основе проверки подлинности SQL, оно должно быть назначено sysadmin роли для создания имен входа для учетных записей Microsoft Entra.

Имена входа проверки подлинности Microsoft Entra

  • Если имя входа является субъектом сервера Microsoft Entra, оно должно быть назначено sysadmin роли или securityadmin роли сервера для создания имен входа для других пользователей, групп и приложений Microsoft Entra.
  • Как минимум, разрешение ALTER ANY LOGIN должно быть предоставлено для создания других имен входа Microsoft Entra.
  • По умолчанию стандартные разрешения, предоставленные только что созданным именам входа masterMicrosoft Entra: CONNECT SQL и VIEW ANY DATABASE.
  • Роль sysadmin сервера может быть предоставлена многим именам входа Microsoft Entra в управляемом экземпляре.

Чтобы присвоить имени для входа роль сервера sysadmin, сделайте следующее:

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

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

  3. Предоставьте учетной записи Microsoft Entra роль sysadmin сервера с помощью следующего синтаксиса T-SQL:

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

    В следующем примере роль сервера sysadmin предоставляется имени для входа nativeuser@aadsqlmi.onmicrosoft.com.

    ALTER SERVER ROLE sysadmin ADD MEMBER [nativeuser@aadsqlmi.onmicrosoft.com]
    GO
    

Создание дополнительных имен входа Microsoft Entra с помощью SSMS

После создания и предоставления sysadmin привилегий для входа Microsoft Entra имя входа может создавать дополнительные имена входа с помощью предложения FROM EXTERNAL PROVIDER с помощью CREATE LOGIN.

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

    1. Введите имя узла Управляемый экземпляр SQL в имени сервера.
    2. Для проверки подлинности выберите Active Directory — универсальная с поддержкой MFA, чтобы открыть окно входа для многофакторной проверки подлинности. Вход. Дополнительные сведения см. в статье универсальной проверки подлинности (поддержка SSMS для многофакторной проверки подлинности).
  2. В обозревателе объектов щелкните сервер правой кнопкой мыши и выберите Создать запрос.

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

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    В этом примере создается имя входа для пользователя bob@aadsqlmi.netMicrosoft Entra, домен которого 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. Создайте базу данных в управляемом экземпляре с помощью синтаксиса CREATE DATABASE. Эта база данных будет использоваться для проверки имен для входа пользователей в следующем разделе.

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

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

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

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

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

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

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

  9. Проверьте разрешения сервера для созданного имени входа Microsoft Entra, выполнив следующую команду:

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

Поддержка субъектов Microsoft Entra в Sql Azure в качестве пользователей и имен входа распространяется на Внешняя идентификация Microsoft Entra внутренних и внешних гостевых пользователей. Гостевые пользователи, как по отдельности, так и в составе группы, могут использоваться так же, как и любой другой пользователь Microsoft Entra в SQL Azure. Если вы хотите, чтобы гостевые пользователи могли создавать другие имена входа сервера Microsoft Entra или пользователи базы данных, у них должны быть разрешения на чтение других удостоверений в каталоге Microsoft Entra. Это разрешение настраивается на уровне каталога. Дополнительные сведения см. в разделе "Разрешения гостевого доступа" в идентификаторе Microsoft Entra.

Создание пользователя Microsoft Entra из имени входа Microsoft Entra

Авторизация в отдельных базах данных работает так же, Управляемый экземпляр SQL как и с базами данных в SQL Server. Вы можете создать пользователя из существующего имени входа в базу данных, которая предоставляет разрешения для этой базы данных или добавлена в роль базы данных.

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

Screenshot of an error message from the the S S M S Object Explorer that reads

Дополнительные сведения о предоставлении разрешений к базе данных см. в статье Приступая к работе с разрешениями Database Engine.

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

Примечание.

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

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

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

  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 group mygroup , которая существует в клиенте Microsoft Entra.

    USE MyMITestDB
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    

    Все пользователи, принадлежащие к mygroup, могут получить доступ к базе данных MyMITestDB.

    Внимание

    При создании пользователя из имени входа Microsoft Entra укажите user_name, как и те же login_name из LOGIN.

    Дополнительные сведения можно найти в статье CREATE USER (Transact-SQL).

  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. Войдите в управляемый экземпляр с помощью учетной записи sysadmin в SQL Server Management Studio.

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

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

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

    Screenshot from Object Explorer in S S M S showing the folder structure for Tables in MyMITestDB. The dbo.TestTable folder is highlighted.

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

    SELECT *
    FROM TestTable
    

    Вы можете просматривать данные таблицы? Должны отобразиться возвращаемые столбцы.

    Screenshot of the Results tab in the S S M S Object Explorer showing the table column headers AccountNum, City, Name, and State.

Олицетворения имен входа Microsoft Entra

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

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

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

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

  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. Войдите в управляемый экземпляр с помощью учетной записи sysadmin в SQL Server Management Studio.

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

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

    USE MyMITestDB2
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    GRANT SELECT TO [mygroup]
    GO
    
  5. Войдите в управляемый экземпляр с помощью SQL Server Management Studio в качестве члена группы Microsoft Entra mygroup. Откройте окно нового запроса и выполните межбазовую инструкцию SELECT:

    USE MyMITestDB
    SELECT * FROM MyMITestDB2..TestTable2
    GO
    

    Вы должны увидеть результаты таблицы TestTable2.

Дополнительные поддерживаемые сценарии

  • Управление агентом SQL и выполнение заданий поддерживаются для имен входа Microsoft Entra.
  • Операции резервного копирования и восстановления базы данных могут выполняться именами входа Microsoft Entra.
  • Аудит всех инструкций, связанных с именами входа Microsoft Entra и событиями проверки подлинности.
  • Выделенное подключение администратора для имен входа Microsoft Entra, входящих в sysadmin роль сервера.
  • Имена входа Microsoft Entra поддерживаются с помощью программы sqlcmd и средства SQL Server Management Studio .
  • Триггеры входа поддерживаются для событий входа, поступающих из имен входа Microsoft Entra.
  • Служба Service Broker и почта базы данных могут быть настроены с помощью имен входа Microsoft Entra.

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

Включение функций безопасности

Полный список способов защиты базы данных приведен в разделе Возможности безопасности Управляемого экземпляра SQL. Рассматриваются следующие средства безопасности:

Возможности Управляемого экземпляра SQL

Полный обзор возможностей Управляемого экземпляра SQL см. здесь: