Megosztás a következőn keresztül:


Az SQL Server használatának első lépései a SELinux-on

Ez a cikk a Red Hat Enterprise Linuxon (RHEL) alapuló Security-Enhanced Linux (SELinux) disztribúció korlátozott szolgáltatásaként segíti az SQL Server használatát.

Mi az Security-Enhanced Linux?

Security-Enhanced Linux (SELinux) linuxos rendszerek biztonsági architektúrája. Segít meghatározni a rendszer alkalmazásainak, folyamatainak és fájljainak hozzáférés-vezérlését. A SELinux szabályok vagy biztonsági szabályzatokhasználatával határozza meg, hogy mit lehet vagy mit nem lehet elérni. A SELinux nagyobb ellenőrzést biztosít a rendszergazdák számára, hogy ki férhet hozzá a rendszerhez. További információ: What is SELinux (Security-Enhanced Linux).

A SELinux Red Hat-rendszerekhez való engedélyezéséről további információt SELinux Architecturecímű cikkben talál. Az SELinux-kompatibilis operációs rendszer ingyenes is használatba vehet.

SQL Server 2022 Linux rendszeren hivatalosan RHEL 9 minősítéssel rendelkezik (2024 júliusától), és mostantól általánosan elérhető a Red Hat Ecosystem Catalog.

SQL Server és SELinux

A SELinux korlátozott szolgáltatás azt jelenti, hogy a SELinux-szabályzatban explicit módon meghatározott biztonsági szabályok korlátozzák. AZ SQL Server esetében a SELinux egyéni szabályzatai a mssql-server-selinux csomagban vannak definiálva.

Előfeltételek

  1. Engedélyezze a SELinuxot, és állítsa be üzemmódba enforcing . A parancs futtatásával sestatus ellenőrizze a SELinux állapotát.

    sestatus
    

    Itt a várt kimenet.

    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. Telepítse a szükséges egyéni szabályzatokat meghatározó mssql-server-selinux csomagot.

Jegyzet

Ha valamelyik előfeltétel nem teljesül, az SQL Server nem definiált szolgáltatásként fut.

RHEL alverzió minimális követelménye

Ha az SQL Servert korlátozott alkalmazásként szeretné futtatni az RHEL 9-en, minimális RHEL-alverziót kell használnia. Ez a követelmény a SELinux-csomagok pont-kiadási függőségei miatt létezik. Az mssql-server-selinux csomag, amely a SQL Server korlátozott módban való futtatásához szükséges, a selinux-policy és selinux-policy-base csomagoktól függ.

Az RHEL-alverzió minimális verziójának azonosításának lépései

  1. Adja hozzá az mssql-server-selinux-t tartalmazó SQL Server-adattárat.

    AZ SQL Server 2025 (17.x) esetében az RHEL 9-en:

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

    AZ SQL Server 2022 (16.x) esetében az RHEL 9-en:

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

    Jegyzet

    Ha az RHEL 10-re tervezi telepíteni, váltson az RHEL 10-adattárakra.

  2. Futtassa a következő parancsot a SELinux-szabályzat függőségeinek megtekintéséhez:

    sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'
    
  3. A kimenet tartalmazza a szükséges minimális SELinux-szabályzatverziót, amelyet egy olyan utótag jelez, mint a .el9_6. Ez az utótag azt a minimális RHEL 9-es kisebb kiadást jelöli, amelyhez a szabályzat készült. Például .el9_6 az RHEL 9.6-nak felel meg.

    Ha a kimenetben nem jelenik meg ilyen utótag, tekintse meg a Red Hat dokumentációját a SELinux-szabályzat buildeléséhez társított minimális RHEL-alverzió meghatározásához. Az alábbi példában a szükséges SELinux alapverzió a következő 38.1.53-5.

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

    Íme egy példakimenet:

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

    Ebben a példában a legmagasabb alverzió-címkézett követelmény az 38.1.53-5.el9_6. Ezért legalább RHEL 9.6-os verzióra van szüksége az SQL Server SELinux (mssql-server-selinux) használatával való telepítéséhez, és korlátozott alkalmazásként kell futtatnia az RHEL 9-en.

Az SQL Server telepítése korlátozott szolgáltatásként

Alapértelmezés szerint a mssql-server csomag seLinux-szabályzat nélkül telepíti az SQL Servert, az SQL Server pedig nem definiált szolgáltatásként fut. A mssql-server csomag telepítése automatikusan engedélyezi a selinux_execmode logikai értéket. Az alábbi paranccsal ellenőrizheti, hogy az SQL Server nem definiálva fut-e:

ps -eZ | grep sqlservr

Itt a várt kimenet.

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

A csomag telepítésekor mssql-server-selinux egy egyéni SELinux-szabályzatot tesz lehetővé, amely korlátozza a sqlservr folyamatot. A házirend telepítésekor a selinuxuser_execmod logikai érték alaphelyzetbe áll, és egy névvel ellátott mssqlszabályzat váltja fel. Ez a szabályzat az sqlservr új mssql_server_t tartományban korlátozza a folyamatot.

ps -eZ | grep sqlservr

Itt a várt kimenet.

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

SQL Server- és SELinux-típusok

Ha a csomag használatával telepíti az mssql-server-selinux opcionális SELinux-szabályzatot, az új típusokat határoz meg:

SELinux-szabályzat Leírás
mssql_opt_t Az mssql-server fájljainak telepítése a /opt/mssql
mssql_server_exec_t Végrehajtható fájlok a /opt/mssql/bin/
mssql_paldumper_exec_t Olyan végrehajtható fájlok és szkriptek, amelyek speciális engedélyeket igényelnek a magfájlok kezeléséhez
mssql_conf_exec_t Menedzsment eszköz a /opt/mssql/bin/mssql-conf
mssql_var_t Fájlok címkéje a /var/opt/mssql
mssql_db_t Az adatbázisfájlok címkéje a /var/opt/mssql/data

Példák

Az alábbi példa bemutatja az adatbázis helyének módosítását, amikor az SQL Server korlátozott szolgáltatásként fut.

  1. Hozza létre a kívánt könyvtárakat, és címkézze fel őket 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
    

    A parancs semanage fcontext kezeli a SELinux fájlkörnyezet-leképezést. A -a paraméter új fájlkörnyezeti szabályt ad hozzá, és a -t paraméter meghatározza az alkalmazandó SELinux-típust, amely ebben az esetben az SQL Server-adatbázisfájlokra vonatkozik mssql_db_t . Végül a parancs megadja az ebben a példában szereplő elérési utat /opt/mydb , és magában foglalja a benne lévő összes fájlt és alkönyvtárat.

  2. Állítsa be az alapértelmezett adatbázis-helyet mssql-confhasználatával, és futtassa a telepítőt.

    sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data
    sudo systemctl restart mssql-server
    
  3. Ellenőrzés új adatbázis létrehozásával a Transact-SQL használatával:

    CREATE DATABASE TestDatabase;
    GO
    
  4. Ellenőrizze, hogy az új adatbázis a megfelelő címkékkel lett-e létrehozva.

    sudo ls -lZ /opt/mydb/data/
    

    Itt a várt kimenet.

    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
    

    Az előző példában láthatja, hogy a fájl típusa az mssql_db_t új fájlokhoz van társítva.