Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Эта статья поможет вам приступить к работе с SQL Server в качестве ограниченной службы в дистрибутиве Security-Enhanced Linux (SELinux) на основе Red Hat Enterprise Linux (RHEL).
Что такое Security-Enhanced Linux?
Security-Enhanced Linux (SELinux) — это архитектура безопасности для систем Linux. Он помогает определить элементы управления доступом для приложений, процессов и файлов в системе. SELinux использует набор правил или политик безопасности, чтобы определить, что можно или нельзя получить доступ. SELinux предоставляет администраторам больше контроля над доступом к системе. Дополнительные сведения см. в разделе "Что такое SELinux" (Security-Enhanced Linux).
Дополнительные сведения о включении SELinux для систем Red Hat см. в разделе "Архитектура SELinux". Вы также можете приступить к работе с операционной системой с поддержкой SELinux бесплатно.
SQL Server 2022 в Linux официально сертифицирован с помощью RHEL 9 (по состоянию на июль 2024 г.) и теперь общедоступен в каталоге экосистем Red Hat.
SQL Server и SELinux
Ограниченная служба с SELinux означает, что она ограничена правилами безопасности, явно определенными в политике SELinux. Для SQL Server пользовательские политики SELinux определяются в пакете mssql-server-selinux .
Предпосылки
Включите SELinux и установите его в
enforcingрежиме. Проверьте состояние SELinux, выполнивsestatusкоманду.sestatusНиже приведены ожидаемые выходные данные.
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 33Установите пакет
mssql-server-selinux, который определяет необходимые пользовательские политики.
Замечание
Если какие-либо предварительные требования не выполнены, SQL Server запускается как неопределенная служба.
Минимальное требование дополнительной версии RHEL
Чтобы запустить SQL Server в качестве ограниченного приложения в RHEL 9, необходимо использовать минимальную дополнительную версию RHEL. Это требование существует из-за зависимостей point-release в пакетах SELinux. Пакет mssql-server-selinux, необходимый для запуска SQL Server в ограниченном режиме, зависит от пакетов selinux-policy и selinux-policy-base.
Действия по выявлению минимальной дополнительной версии RHEL
Добавьте репозиторий SQL Server, содержащий
mssql-server-selinux.Для SQL Server 2025 (17.x) в RHEL 9:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2025.repoДля SQL Server 2022 (16.x) в RHEL 9:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repoЗамечание
Если вы планируете установить RHEL 10, перейдите на репозитории RHEL 10.
Выполните следующую команду, чтобы просмотреть зависимости политики SELinux:
sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Выходные данные включают минимальную версию политики SELinux, указанную суффиксом,
.el9_6например. Этот суффикс представляет минимальный дополнительный выпуск RHEL 9, для который была создана политика. Например,.el9_6соответствует RHEL 9.6.Если такой суффикс не отображается в выходных данных, обратитесь к документации по Red Hat, чтобы определить минимальную дополнительную версию RHEL, связанную с этой сборкой политики SELinux. В следующем примере требуется
38.1.53-5базовая версия SELinux.sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Ниже приведен пример выходных данных:
selinux-policy >= 38.1.53-5.el9_6 selinux-policy-base >= 38.1.53-5.el9_6В этом примере самым высоким требованием с тегом для меньшей версии является
38.1.53-5.el9_6. Поэтому, чтобы установить SQL Server с SELinux (mssql-server-selinux), необходимо как минимум RHEL 9.6, и запускать его как в режиме ограниченного приложения на RHEL 9.
Установка SQL Server в качестве ограниченной службы
По умолчанию mssql-server пакет устанавливает SQL Server без политики SELinux, а SQL Server выполняется как неопределенная служба. Установка пакета mssql-server автоматически включает булевый параметр selinux_execmode. Вы можете убедиться, что SQL Server работает без ограничений, используя следующую команду:
ps -eZ | grep sqlservr
Ниже приведены ожидаемые выходные данные.
system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr
При установке mssql-server-selinux пакета он включает настраиваемую политику SELinux, которая ограничивает sqlservr процесс. При установке этой политики булевое значение selinuxuser_execmod сбрасывается и заменяется политикой с именем mssql. Эта политика ограничивает sqlservr процесс в новом mssql_server_t домене.
ps -eZ | grep sqlservr
Ниже приведены ожидаемые выходные данные.
system_u:system_r:mssql_server_t:s0 48941 ? 00:00:02 sqlservr
Типы SQL Server и SELinux
При установке необязательной политики SELinux с помощью mssql-server-selinux пакета он определяет некоторые новые типы:
| Политика SELinux | Описание |
|---|---|
mssql_opt_t |
Установка файлов mssql-server в /opt/mssql |
mssql_server_exec_t |
Исполняемые файлы по адресу /opt/mssql/bin/ |
mssql_paldumper_exec_t |
Исполняемые файлы и скрипты, требующие специальных разрешений для управления базовыми дампами |
mssql_conf_exec_t |
Инструмент управления в /opt/mssql/bin/mssql-conf |
mssql_var_t |
Метка для файлов по адресу /var/opt/mssql |
mssql_db_t |
Метка для файлов базы данных по адресу /var/opt/mssql/data |
Примеры
В следующем примере показано изменение расположения базы данных при запуске SQL Server в качестве ограниченной службы.
Создайте нужные каталоги и примечайте их как
mssql_db_t.sudo mkdir -p /opt/mydb/ sudo chown mssql:mssql /opt/mydb sudo semanage fcontext -a -t mssql_db_t "/opt/mydb(/.*)?" sudo restorecon -R -v /opt/mydbsemanage fcontextКоманда управляет сопоставлением контекста файла SELinux. Параметр-aдобавляет новое правило контекста файла, а параметр-tопределяет тип SELinux, который в этом случае используется какmssql_db_tдля файлов базы данных SQL Server. Наконец, команда указывает шаблон пути, который находится/opt/mydbв этом примере, и включает все файлы и подкаталогы в нем.Задайте расположение базы данных по умолчанию с помощью
mssql-confи запустите программу установки.sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data sudo systemctl restart mssql-serverПроверьте, создав новую базу данных с помощью Transact-SQL:
CREATE DATABASE TestDatabase; GOУбедитесь, что новая база данных создана с соответствующими метками.
sudo ls -lZ /opt/mydb/data/Ниже приведены ожидаемые выходные данные.
total 16384 -rw-rw----. 1 mssql mssql system_u:object_r:mssql_db_t:s0 8388608 Aug 2 14:27 TestDatabase_log.ldf -rw-rw----. 1 mssql mssql system_u:object_r:mssql_db_t:s0 8388608 Aug 2 14:27 TestDatabase.mdfВ предыдущем примере вы можете увидеть, что у файла есть тип
mssql_db_t, связанный с новыми созданными файлами.