Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описано, как приступить к работе с 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 запускается как неопределенная служба.
Установка 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(тип), который относится к созданным новым файлам.