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


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

Область применения: Управляемый экземпляр SQL Azure

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

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

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    В этом примере создается имя для входа для учетной записи [email protected].

    USE master
    GO
    CREATE LOGIN [[email protected]] FROM EXTERNAL PROVIDER
    GO
    
  4. На панели инструментов выберите Выполнить, чтобы создать имя для входа.

  5. Проверьте только что добавленное имя входа, выполнив следующую команду T-SQL:

    SELECT *
    FROM sys.server_principals;
    GO
    

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

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

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

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

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

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

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

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

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

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

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

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

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

    В следующем примере роль сервера sysadmin предоставляется для входа [email protected]:

    ALTER SERVER ROLE sysadmin ADD MEMBER [[email protected]]
    GO
    

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

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

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

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

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

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    В этом примере создается имя входа для пользователя [email protected]Microsoft Entra, домен aadsqlmi.net которого федеративн с доменом Microsoft Entra aadsqlmi.onmicrosoft.com .

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

    USE master
    GO
    CREATE LOGIN [[email protected]] FROM EXTERNAL PROVIDER
    GO
    
  4. Создайте базу данных в управляемом экземпляре SQL с помощью синтаксиса 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. В качестве теста войдите в управляемый экземпляр SQL с помощью только что созданного имени входа или группы. Откройте новое подключение к управляемому экземпляру SQL и при проверке подлинности используйте новое имя входа.

  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 и имя входа, которое имеет разрешения только по умолчанию, следующим шагом является создание пользователя из этого имени входа. На данный момент имя входа может подключиться к управляемому экземпляру SQL и просмотреть все базы данных, но он не может взаимодействовать с базами данных. Если вы войдите с помощью учетной записи Microsoft Entra с разрешениями по умолчанию и попытаетесь развернуть только что созданную базу данных, вы увидите следующую ошибку:

Снимок экрана сообщения об ошибке из обозревателя объектов SSMS, в котором говорится:

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

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

Примечание.

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

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

    В следующем примере создается пользователь [email protected] на основе имени для входа [email protected]:

    USE MyMITestDB
    GO
    CREATE USER [[email protected]] FROM LOGIN [[email protected]]
    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. Войдите в управляемый экземпляр SQL с помощью учетной записи sysadmin с помощью SQL Server Management Studio.

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

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

    Use <Database Name> -- provide your database name
    ALTER ROLE db_datareader ADD MEMBER user_name
    GO
    

    Следующий пример предоставляет пользователю [email protected] и группе mygroup разрешения db_datareader в базе данных MyMITestDB :

    USE MyMITestDB
    GO
    ALTER ROLE db_datareader ADD MEMBER [[email protected]]
    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. В обозревателе объектов щелкните сервер правой кнопкой мыши и выберите Создать запрос.

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

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

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

    EXECUTE AS LOGIN = '[email protected]'
    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. В обозревателе объектов щелкните сервер правой кнопкой мыши и выберите Создать запрос.

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