Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel helpt u om aan de slag te gaan met SQL Server als een beperkte service op een Security-Enhanced Linux-distributie (SELinux) op basis van Red Hat Enterprise Linux (RHEL).
Wat is Security-Enhanced Linux?
Security-Enhanced Linux (SELinux) is een beveiligingsarchitectuur voor Linux-systemen. Hiermee kunt u toegangsbeheer definiëren voor toepassingen, processen en bestanden op een systeem. SELinux maakt gebruik van een set regels, of beveiligingsbeleid, om te definiëren wat er wel of niet kan worden geopend. SELinux biedt beheerders meer controle over wie toegang heeft tot het systeem. Zie Wat is SELinux (Security-Enhanced Linux)voor meer informatie.
Zie SELinux Architecturevoor meer informatie over het inschakelen van SELinux voor Red Hat-systemen. U kunt ook gratis aan de slag met een seLinux-besturingssysteem.
SQL Server 2022 op Linux is officieel gecertificeerd met RHEL 9 (vanaf juli 2024) en is nu algemeen beschikbaar in de Red Hat Ecosystem Catalog.
SQL Server en SELinux
Een beperkte service met SELinux betekent dat deze wordt beperkt door beveiligingsregels, expliciet gedefinieerd in het SELinux-beleid. Voor SQL Server worden de aangepaste SELinux-beleidsregels gedefinieerd in het mssql-server-selinux-pakket.
Voorwaarden
Schakel SELinux in en stel het in op
enforcingmode. Controleer de SELinux-status door de opdracht uit tesestatusvoeren.sestatusDit is de verwachte uitvoer.
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: 33Installeer het
mssql-server-selinux-pakket dat het vereiste aangepaste beleid definieert.
Notitie
Als niet aan een van de vereisten wordt voldaan, wordt SQL Server uitgevoerd als een niet-gedefinieerde service.
Minimale vereiste voor secundaire RHEL-versies
Als u SQL Server wilt uitvoeren als een beperkte toepassing op RHEL 9, moet u een minimale secundaire RHEL-versie gebruiken. Deze vereiste bestaat vanwege puntreleaseafhankelijkheden in SELinux-pakketten. Het mssql-server-selinux pakket, dat u nodig hebt om SQL Server uit te voeren in de beperkte modus, is afhankelijk van de selinux-policy en selinux-policy-base pakketten.
Stappen voor het identificeren van de minimale secundaire RHEL-versie
Voeg de SQL Server-opslagplaats toe die
mssql-server-selinuxbevat.Voor SQL Server 2025 (17.x) op RHEL 9:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2025.repoVoor SQL Server 2022 (16.x) op RHEL 9:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repoNotitie
Als u van plan bent om te installeren op RHEL 10, gaat u naar de RHEL 10-opslagplaatsen.
Voer de volgende opdracht uit om de SELinux-beleidsafhankelijkheden weer te geven:
sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'De uitvoer bevat de minimale SELinux-beleidsversie die is vereist, aangegeven door een achtervoegsel zoals
.el9_6. Dit achtervoegsel vertegenwoordigt de minimale RHEL 9 secundaire release waarvoor het beleid is gemaakt. Komt bijvoorbeeld.el9_6overeen met RHEL 9.6.Als dit achtervoegsel niet wordt weergegeven in de uitvoer, raadpleegt u de Red Hat-documentatie om de minimale secundaire RHEL-versie te bepalen die is gekoppeld aan die SELinux-beleidsbuild. In het volgende voorbeeld is
38.1.53-5de vereiste SELinux-basisversie.sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Dit is een voorbeeld van output:
selinux-policy >= 38.1.53-5.el9_6 selinux-policy-base >= 38.1.53-5.el9_6In dit voorbeeld is
38.1.53-5.el9_6de hoogste vereiste gemarkeerd met de minor-versie. U hebt dus ten minste RHEL 9.6 nodig om SQL Server te installeren met SELinux (mssql-server-selinux) en deze uit te voeren als een beperkte toepassing op RHEL 9.
SQL Server installeren als een beperkte service
Het mssql-server-pakket installeert standaard SQL Server zonder seLinux-beleid en SQL Server wordt uitgevoerd als een niet-gedefinieerde service. De installatie van het mssql-server-pakket schakelt automatisch selinux_execmode Boolean in. U kunt controleren of SQL Server niet beperkt is met de volgende opdracht:
ps -eZ | grep sqlservr
Dit is de verwachte uitvoer.
system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr
Wanneer u het mssql-server-selinux pakket installeert, wordt een aangepast SELinux-beleid ingeschakeld dat het sqlservr proces beperkt. Wanneer u dit beleid installeert, wordt de Booleaanse waarde opnieuw ingesteld en vervangen door een beleid met de selinuxuser_execmod naam mssql. Dit beleid beperkt het sqlservr proces in het nieuwe mssql_server_t domein.
ps -eZ | grep sqlservr
Dit is de verwachte uitvoer.
system_u:system_r:mssql_server_t:s0 48941 ? 00:00:02 sqlservr
SQL Server- en SELinux-typen
Wanneer u het optionele SELinux-beleid installeert met behulp van het mssql-server-selinux pakket, worden enkele nieuwe typen gedefinieerd:
| SELinux-beleid | Beschrijving |
|---|---|
mssql_opt_t |
Bestanden van mssql-server installeren naar /opt/mssql |
mssql_server_exec_t |
Uitvoerbare bestanden op /opt/mssql/bin/ |
mssql_paldumper_exec_t |
Uitvoerbare bestanden en scripts waarvoor speciale machtigingen zijn vereist voor het beheren van kerndumps |
mssql_conf_exec_t |
Beheerhulpprogramma bij /opt/mssql/bin/mssql-conf |
mssql_var_t |
Label voor bestanden op /var/opt/mssql |
mssql_db_t |
Label voor de databasebestanden op /var/opt/mssql/data |
Voorbeelden
In het volgende voorbeeld ziet u hoe u de databaselocatie wijzigt wanneer SQL Server wordt uitgevoerd als een beperkte service.
Maak de gewenste mappen en label ze als
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/mydbMet de opdracht
semanage fcontextbeheert u de seLinux-bestandscontexttoewijzing. De-aparameter voegt een nieuwe regel voor bestandscontext toe en de-tparameter definieert het SELinux-type dat moet worden toegepast, wat in dit geval voor SQL Server-databasebestanden ismssql_db_t. Ten slotte geeft de opdracht het padpatroon op, in/opt/mydbdit voorbeeld, en bevat alle bestanden en submappen erin.Stel de standaarddatabaselocatie in met behulp van mssql-confen voer de installatie uit.
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data sudo systemctl restart mssql-serverControleer door een nieuwe database te maken met behulp van Transact-SQL:
CREATE DATABASE TestDatabase; GOControleer of de nieuwe database is gemaakt met de juiste labels.
sudo ls -lZ /opt/mydb/data/Dit is de verwachte uitvoer.
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.mdfIn het vorige voorbeeld ziet u dat het bestand het
mssql_db_ttype heeft dat is gekoppeld aan de nieuwe bestanden die zijn gemaakt.