Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
Povolte SELinux a nastavte ho na
enforcingrežim. Spuštěnímsestatuspříkazu zkontrolujte stav SELinux.sestatusTady 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: 33Nainstalujte 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
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.repoPro 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.repoPoznámka
Pokud chcete nainstalovat na RHEL 10, přejděte na úložiště RHEL 10.
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)?'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_6odpoví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_6V tomto příkladu je
38.1.53-5.el9_6nejvyšší 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.
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/mydbPříkaz
semanage fcontextspravuje mapování kontextu souboru SELinux. Parametr-apřidá nové pravidlo kontextu souboru a-tparametr definuje typ SELinux, který se má použít, což jemssql_db_tv tomto případě pro databázové soubory SQL Serveru. Nakonec příkaz určuje vzor cesty, který je/opt/mydbv tomto příkladu, a zahrne do něj všechny soubory a podadresáře.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-serverOvěření vytvořením nové databáze pomocí jazyka Transact-SQL:
CREATE DATABASE TestDatabase; GOOvěř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.mdfV předchozím příkladu vidíte, že soubor má
mssql_db_ttyp přidružený k nově vytvořeným souborům.