Sdílet prostřednictvím


Začínáme s SQL Serverem v SELinuxu

Tento článek vám pomůže začít s SQL Serverem jako omezenou službou v distribuci Security-Enhanced Linuxu (SELinux) založenou na systému Red Hat Enterprise Linux (RHEL).

Co je Security-Enhanced Linux?

Security-Enhanced Linux (SELinux) je architektura zabezpečení pro systémy Linux. Pomáhá definovat řízení přístupu pro aplikace, procesy a soubory v systému. SELinux používá sadu pravidel nebo zásady zabezpečení, k definování toho, co může nebo nemůže být přístupné. SELinux poskytuje správcům větší kontrolu nad tím, kdo má přístup k systému. Další informace najdete v tématu Co je SELinux (Security-Enhanced Linux).

Podrobnosti o tom, jak povolit SELinux pro systémy Red Hat, najdete v tématu architektury SELinux . Můžete také začít s operačním systémem s podporou SELinux zdarma.

SQL Server 2022 v Linuxu je oficiálně certifikován pomocí RHEL 9 (od července 2024) a je nyní obecně dostupný v katalogu ekosystému Red Hat.

SQL Server a SELinux

Omezená služba se SELinuxem znamená, že je omezena pravidly zabezpečení, které jsou explicitně definovány v zásadách SELinux. Pro SQL Server jsou vlastní zásady SELinux definovány v balíčku mssql-server-selinux.

Požadavky

  1. Povolte SELinux a nastavte ho na enforcing režim. Spuštěním sestatus příkazu zkontrolujte stav SELinux.

    sestatus
    

    Tady je očekávaný výstup.

    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. Nainstalujte balíček mssql-server-selinux, který definuje požadované vlastní zásady.

Poznámka

Pokud některé z požadavků nejsou splněné, SQL Server běží jako nedefinovaná služba.

Minimální požadovaná verze RHEL

Chcete-li spustit SQL Server jako omezenou aplikaci na RHEL 9, musíte použít minimální podverzi RHEL. Tento požadavek existuje kvůli závislostem v bodových verzích v balíčcích SELinux. Balíček mssql-server-selinux, který potřebujete ke spuštění SQL Serveru v omezeném režimu, závisí na balíčcích selinux-policy a selinux-policy-base.

Kroky k identifikaci minimální podverze RHEL

  1. Přidejte úložiště SQL Serveru, které obsahuje mssql-server-selinux.

    Pro SQL Server 2025 (17.x) na RHEL 9:

    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2025.repo
    

    Pro SQL Server 2022 (16.x) na RHEL 9:

    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repo
    

    Poznámka

    Pokud chcete nainstalovat na RHEL 10, přejděte na úložiště RHEL 10.

  2. Spuštěním následujícího příkazu zobrazte závislosti zásad SELinux:

    sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'
    
  3. Výstup obsahuje minimální požadovanou verzi zásady SELinux, která je označená příponou, například .el9_6. Tato přípona představuje minimální podverzi RHEL 9, pro kterou byla politika vytvořena. Například .el9_6 odpovídá RHEL 9.6.

    Pokud se ve výstupu nezobrazí žádná taková přípona, prostřednictvím dokumentace Red Hat zjistěte minimální vedlejší verzi RHEL spojenou s danou politikou SELinux. V následujícím příkladu je 38.1.53-5požadovaná základní verze SELinux .

    sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'
    

    Tady je příklad výstupu:

    selinux-policy >= 38.1.53-5.el9_6
    selinux-policy-base >= 38.1.53-5.el9_6
    

    V tomto příkladu je 38.1.53-5.el9_6 nejvyšší požadavek označený jako podverze. Proto potřebujete alespoň RHEL 9.6 k instalaci SQL Serveru se SELinux (mssql-server-selinux) a jeho spuštění jako omezené aplikace na RHEL 9.

Instalace SQL Serveru jako službu s omezením

Ve výchozím nastavení balíček mssql-server nainstaluje SQL Server bez zásad SELinux a SQL Server běží jako nedefinovaná služba. Instalace balíčku mssql-server automaticky povolí selinux_execmode boolovský typ. Pomocí následujícího příkazu můžete ověřit, že SQL Server běží bez omezení:

ps -eZ | grep sqlservr

Tady je očekávaný výstup.

system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr

Když nainstalujete balíček mssql-server-selinux, umožní vlastní zásadu SELinux, která omezuje proces sqlservr. Při instalaci této zásady se selinuxuser_execmod logická hodnota resetuje a nahradí se zásadou s názvem mssql. Tato politika omezuje sqlservr proces v nové mssql_server_t doméně.

ps -eZ | grep sqlservr

Tady je očekávaný výstup.

system_u:system_r:mssql_server_t:s0 48941 ?      00:00:02 sqlservr

Typy SQL Serveru a SELinux

Při instalaci volitelné zásady SELinux pomocí mssql-server-selinux balíčku definuje některé nové typy:

Zásady SELinux Popis
mssql_opt_t Instalace souborů mssql-server do /opt/mssql
mssql_server_exec_t Spustitelné soubory na /opt/mssql/bin/
mssql_paldumper_exec_t Spustitelné soubory a skripty, které vyžadují zvláštní oprávnění ke správě výpisů paměti
mssql_conf_exec_t Nástroj pro správu ve společnosti /opt/mssql/bin/mssql-conf
mssql_var_t Popisek souborů na /var/opt/mssql
mssql_db_t Označení pro soubory databáze na /var/opt/mssql/data

Příklady

Následující příklad ukazuje změnu umístění databáze, když SQL Server běží jako omezená služba.

  1. Vytvořte požadované adresáře a označte je jako 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
    

    Příkaz semanage fcontext spravuje mapování kontextu souboru SELinux. Parametr -a přidá nové pravidlo kontextu souboru a -t parametr definuje typ SELinux, který se má použít, což je mssql_db_t v tomto případě pro databázové soubory SQL Serveru. Nakonec příkaz určuje vzor cesty, který je /opt/mydb v tomto příkladu, a zahrne do něj všechny soubory a podadresáře.

  2. Nastavte výchozí umístění databáze pomocí mssql-confa spusťte instalační program.

    sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data
    sudo systemctl restart mssql-server
    
  3. Ověření vytvořením nové databáze pomocí jazyka Transact-SQL:

    CREATE DATABASE TestDatabase;
    GO
    
  4. Ověřte, že byla vytvořena nová databáze s příslušnými popisky.

    sudo ls -lZ /opt/mydb/data/
    

    Tady je očekávaný výstup.

    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
    

    V předchozím příkladu vidíte, že soubor má mssql_db_t typ přidružený k nově vytvořeným souborům.