Управление SQL Server, управляемым Azure Arc, с минимальными привилегиями

Область применения:SQL Server

Принцип информационной безопасности наименьших привилегий утверждает, что учетные записи и приложения имеют доступ только к данным и операциям, которым они требуются. С помощью SQL Server с поддержкой Azure Arc можно запустить службу расширения агента с минимальными привилегиями. В этой статье объясняется, как запустить службу расширения агента с минимальными привилегиями.

Настройка учетных записей службы Windows и разрешений для расширения Azure для SQL Server описывает минимальные разрешения привилегий для службы расширений агента.

Наименьшие привилегии включены по умолчанию

Минимальное право по умолчанию включено в следующих версиях Azure Extension for SQL Server:

  • Версия 1.1.3453.436
  • Версия 1.1.3518.465 и более поздние версии

Наименьшие привилегии по умолчанию не включены в версиях раньше 1.1.3453.436 или в версиях 1.1.3464.439, 1.1.3494.451 и 1.1.3500.453. Для этих версий следуйте шагам из этой статьи, чтобы вручную включить наименьшие привилегии.

Примечание.

Для существующих серверов, использующих 1.1.2859.223 или более поздние версии, при включении автообновления в конечном итоге применяется конфигурация с наименьшими привилегиями в рамках автоматического обновления. Чтобы предотвратить автоматическое применение конфигурации с минимально необходимыми привилегиями, заблокируйте обновления расширений после 1.1.2859.223.

Когда включён принцип наименьших привилегий, Расширение Azure для SQL Server автоматически создаёт NT SERVICE\SqlServerExtension и управляет им как локальной учётной записью службы Windows и учётной записью для входа в SQL Server:

  • Расширение предоставляет учетной записи только права Windows, необходимые для чтения и хранения конфигурации и записи журналов.
  • Расширение предоставляет учётной записи минимальные разрешения SQL Server, необходимые для работы включённых функций.
  • Расширение отменяет права, когда они больше не нужны, например, когда вы отключаете функцию.
  • Расширение удаляет учетную запись при удалении Azure Extension for SQL Server или при отключении наименьшей привилегии.

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

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

Требования к системе

Настройка наименьшей привилегии требует:

  • Windows Server 2016 и более поздние версии.
  • SQL Server 2014 (12.x) или более поздние версии.
  • Учетная запись службы SQL Server должна быть членом предопределенной роли сервера sysadmin.
  • Все базы данных должны быть онлайн и обновляемыми.

Наименьшая привилегия в настоящее время не поддерживается на Linux.

Инструменты

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

  • Azure CLI;
  • arcdataрасширение Azure CLI версия 1.5.9 или более поздняя
  • Расширение Azure для SQL Server версии 1.1.2859.223 или более поздней версии для ручного включения принципа наименьших привилегий.

Включить или отключить наименьшую привилегию

  1. Войдите с помощью Azure CLI.

    az login
    
  2. Проверьте версию arcdata расширения.

    az extension list -o table
    

    Если результаты включают поддерживаемую версию arcdata, перейдите к следующему шагу.

    При необходимости установите или обновите arcdata расширение Azure CLI.

    Чтобы установить расширение, сделайте следующее.

    az extension add --name arcdata
    

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

    az extension update --name arcdata
    
  3. Включите минимальные привилегии с помощью Azure CLI.

    Чтобы включить минимальные привилегии, установите значение флага функции LeastPrivilege на true. Чтобы отключить, установите флаг функции на false. Чтобы выполнить эту задачу, выполните следующую команду с вашими значениями для <resource-group> и <machine-name>.

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group <resource-group> --machine-name <machine-name>
    

    Например, следующая команда включает минимальные привилегии для сервера с именем myserver в группе ресурсов с именем myrg:

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group myrg --machine-name myserver
    

Проверка конфигурации наименьших привилегий

Чтобы убедиться, что ваш SQL Server, управляемый с помощью Azure Arc, настроен для работы с минимальными привилегиями:

  1. В разделе Сервисы найдите сервис расширения Microsoft SQL Server. Проверьте, что сервис работает под сервисной NT SERVICE\SqlServerExtension учётной записью.

  2. Откройте планировщик задач на сервере. Проверьте, существует ли событие-управляемая задача, названная SqlServerExtensionPermissionProvider под Microsoft\SqlServerExtension.

  3. Откройте SQL Server Management Studio и проверьте имя входа NT SERVICE\SqlServerExtension. Проверьте, что аккаунту присвоены следующие базовые права:

    • CONNECT SQL
    • VIEW DATABASE STATE
    • VIEW SERVER STATE
  4. Проверьте разрешения с помощью следующих запросов:

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

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    SELECT *
    FROM fn_my_permissions(NULL, 'SERVER');
    
    REVERT;
    

    Чтобы проверить разрешения на уровне базы данных, замените <database-name> имя одной из баз данных и выполните следующий запрос:

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    USE [<database-name>];
    SELECT * FROM fn_my_permissions(NULL, 'database');
    
    REVERT;
    

Опционально: Управление сервисной учётной записью движка базы данных SQL Server

Используйте стандартную конфигурацию сервисной учетной записи для большинства условий. Используйте следующую процедуру только в том случае, если вам нужно удалить учетную запись службы ядра СУБД SQL Server из фиксированной серверной роли sysadmin между операциями расширения.

Чтобы использовать режим минимальных привилегий, учетная запись службы ядра СУБД SQL Server должна входить в фиксированную серверную роль sysadmin в каждом экземпляре SQL Server. Это членство позволяет системе автоматически предоставлять или отзывать разрешения. По умолчанию учетная запись службы компонента Database Engine SQL Server входит в фиксированную серверную роль sysadmin.

Расширение Azure для SQL Server запускает временный процесс, вызываемый Deployer.exe как NT AUTHORITY\SYSTEM when:

  • Вы включаете или отключаете функции
  • Вы добавляете или удаляете экземпляры SQL Server
  • Вы устанавливаете или обновляете расширение

Deployer.exe олицетворяет учетную запись службы SQL Server при подключении к SQL Server. После подключения он добавляет или удаляет разрешения в ролях сервера и базы данных в зависимости от того, какие функции включены или отключены. Этот процесс гарантирует, что расширение Azure для SQL Server использует минимальные привилегии.

Если вы хотите управлять этим процессом более детально, чтобы учетная запись службы SQL Server не входила в фиксированную роль сервера sysadmin постоянно, выполните следующие действия.

  1. Перед установкой или обновлением расширения, включением или отключением функции, а также добавлением или удалением экземпляра SQL Server временно добавьте учетную запись службы ядра СУБД SQL Server в фиксированную серверную роль sysadmin.
  2. Разрешите Deployer.exe запускать по крайней мере один раз, чтобы задать разрешения.
  3. Удалите учетную запись службы SQL Server из предопределенных ролей сервера sysadmin.

Повторяйте эту процедуру при установке или обновлении расширения, включении или отключении функции, а также при добавлении или удалении экземпляра SQL Server. Эта процедура позволяет Deployer.exe предоставить наименьшие необходимые привилегии.

Поскольку эту процедуру нужно повторять для каждого апгрейда, рассмотрите возможность отключить автоматические улучшения. Затем можно использовать скрипт, который выполняет эти шаги и улучшает расширение.

Important

Расширение Azure для SQL Server Deployer.exe требует NT AUTHORITY\SYSTEM для возможности подключения к SQL Server с разрешением CONNECT SQL в режимах standard и least privilege. Это требование существует, так как Deployer.exe всегда выполняется в учетной LocalSystem записи независимо от того, какая учетная запись службы использует расширение после подготовки.

Если NT AUTHORITY\SYSTEM не удается подключиться к SQL Server, Deployer.exe не удается создать имя входа NT SERVICE\SqlServerExtension или предоставить необходимые разрешения. Перед включением режима минимальных привилегий убедитесь, что NT AUTHORITY\SYSTEM имеет активный логин SQL Server с разрешением CONNECT SQL. Для проверки см. раздел «Пререквизиты».

Если у учетной записи службы ядра СУБД SQL Server нет фиксированной серверной роли sysadmin, оперативные разрешения нельзя предоставить.

Для подробностей о времени использования этих разрешений см. раздел «Настройка сервисных учетных записей Windows и разрешения для расширения Azure for SQL Server».