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


Начало работы с SQL Server в SELinux

В этой статье описано, как приступить к работе с 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 .

Предпосылки

  1. 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
    
  2. Установите пакет 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 в качестве ограниченной службы.

  1. Создайте нужные каталоги и примечайте их как 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/mydb
    

    semanage fcontext Команда управляет сопоставлением контекста файла SELinux. Параметр -a добавляет новое правило контекста файла, а -t параметр определяет тип SELinux, который в данном случае предназначен mssql_db_t для файлов базы данных SQL Server. Наконец, указан шаблон пути, который находится /opt/mydb в этом примере, и все файлы и подкаталоги внутри него.

  2. Задайте расположение базы данных по умолчанию с помощью mssql-conf и запустите программу установки.

    sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data
    sudo systemctl restart mssql-server
    
  3. Проверьте, создав новую базу данных с помощью Transact-SQL:

    CREATE DATABASE TestDatabase;
    GO
    
  4. Убедитесь, что новая база данных создана с соответствующими метками.

    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 (тип), который относится к созданным новым файлам.