Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln hjälper dig att komma igång med SQL Server som en begränsad tjänst på en Security-Enhanced Linux-distribution (SELinux) baserat på Red Hat Enterprise Linux (RHEL).
Vad är Security-Enhanced Linux?
Security-Enhanced Linux (SELinux) är en säkerhetsarkitektur för Linux-system. Det hjälper dig att definiera åtkomstkontroller för program, processer och filer i ett system. SELinux använder en uppsättning regler eller säkerhetsprinciper för att definiera vad som kan eller inte kan nås. SELinux ger administratörer mer kontroll över vem som kan komma åt systemet. Mer information finns i Vad är SELinux (Security-Enhanced Linux).
Mer information om hur du aktiverar SELinux för Red Hat-system finns i SELinux-arkitektur. Du kan också komma igång med ett SELinux-aktiverat operativsystem utan kostnad.
SQL Server 2022 på Linux är officiellt certifierad med RHEL 9 (från och med juli 2024) och är nu allmänt tillgänglig i Red Hat Ecosystem Catalog.
SQL Server och SELinux
En begränsad tjänst med SELinux innebär att den begränsas av säkerhetsregler som uttryckligen definieras i SELinux-principen. För SQL Server definieras de anpassade SELinux-principerna i mssql-server-selinux paketet.
Förutsättningar
Aktivera SELinux och ställ in det på
enforcingläge. Kontrollera SELinux-statusen genom attsestatusköra kommandot .sestatusHär är de förväntade resultaten.
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: 33Installera paketet
mssql-server-selinuxsom definierar nödvändiga anpassade principer.
Anmärkning
Om något av förutsättningarna inte uppfylls körs SQL Server som en obefintlig tjänst.
Lägsta krav på rhel-delversion
Om du vill köra SQL Server som ett begränsat program på RHEL 9 måste du använda en lägsta RHEL-delversion. Det här kravet finns på grund av point-release-beroenden i SELinux-paket. Paketet mssql-server-selinux , som du behöver köra SQL Server i begränsat läge, beror på paketen selinux-policy och selinux-policy-base .
Steg för att identifiera lägsta rhel-delversion
Lägg till SQL Server-lagringsplatsen som innehåller
mssql-server-selinux.För SQL Server 2025 (17.x) på RHEL 9:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2025.repoFör SQL Server 2022 (16.x) på RHEL 9:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repoAnmärkning
Om du planerar att installera på RHEL 10 ändrar du till RHEL 10-lagringsplatserna.
Kör följande kommando för att visa SELinux-principberoenden:
sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Utdata innehåller den lägsta SELinux-principversion som krävs, vilket anges av ett suffix som
.el9_6. Det här suffixet representerar den lägsta mindre VERSIONEN av RHEL 9 som principen skapades för. Motsvarar till exempel.el9_6RHEL 9.6.Om inget sådant suffix visas i utdata kan du läsa Red Hat-dokumentationen för att fastställa den lägsta RHEL-mindre versionen som är associerad med SELinux-principversionen. I följande exempel är
38.1.53-5den nödvändiga SELinux-basversionen .sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Här är exempel på utdata:
selinux-policy >= 38.1.53-5.el9_6 selinux-policy-base >= 38.1.53-5.el9_6I det här exemplet är det högsta kravet på delversionstagg
38.1.53-5.el9_6. Därför behöver du minst RHEL 9.6 för att installera SQL Server med SELinux (mssql-server-selinux) och köra den som ett begränsat program på RHEL 9.
Installera SQL Server som en begränsad tjänst
Som standardinställning installerar paketet SQL Server utan SELinux-policy, och SQL Server körs som en okonfigurerad tjänst. Paketinstallationen mssql-server aktiverar automatiskt det selinux_execmode booleska. Du kan kontrollera att SQL Server körs obestämt med hjälp av följande kommando:
ps -eZ | grep sqlservr
Här är de förväntade resultaten.
system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr
När du installerar mssql-server-selinux paketet aktiverar det en anpassad SELinux-princip som begränsar sqlservr processen. När du installerar den här principen återställs det selinuxuser_execmod booleska objektet och ersätts av en princip med namnet mssql. Den här principen begränsar sqlservr processen i den nya mssql_server_t domänen.
ps -eZ | grep sqlservr
Här är de förväntade resultaten.
system_u:system_r:mssql_server_t:s0 48941 ? 00:00:02 sqlservr
SQL Server- och SELinux-typer
När du installerar den valfria SELinux-principen med hjälp av mssql-server-selinux paketet definieras några nya typer:
| SELinux-policy | Beskrivning |
|---|---|
mssql_opt_t |
Installera filer för mssql-server till /opt/mssql |
mssql_server_exec_t |
Körbara filer på /opt/mssql/bin/ |
mssql_paldumper_exec_t |
Körbara filer och skript som kräver särskilda rättigheter för att hantera core dumps |
mssql_conf_exec_t |
Hanteringsverktyg på /opt/mssql/bin/mssql-conf |
mssql_var_t |
Etikett för filer på /var/opt/mssql |
mssql_db_t |
Etikett för databasfilerna på /var/opt/mssql/data |
Exempel
I följande exempel visas hur du ändrar databasplatsen när SQL Server körs som en begränsad tjänst.
Skapa önskade kataloger och märk dem som
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/mydbKommandot
semanage fcontexthanterar SELinux-filkontextmappningen. Parametern-alägger till en ny filkontextregel och parametern-tdefinierar vilken SELinux-typ som ska tillämpas, vilket i det här fallet ärmssql_db_tför SQL Server-databasfiler. Slutligen anger kommandot sökvägsmönstret, som finns/opt/mydbi det här exemplet, och innehåller alla filer och underkataloger i det.Ange standarddatabasplatsen med mssql-conf och kör konfigurationen.
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data sudo systemctl restart mssql-serverVerifiera genom att skapa en ny databas med Transact-SQL:
CREATE DATABASE TestDatabase; GOKontrollera att den nya databasen har skapats med lämpliga etiketter.
sudo ls -lZ /opt/mydb/data/Här är de förväntade resultaten.
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.mdfI föregående exempel kan du se att filen har den typ som
mssql_db_tär associerad med de nya filerna som skapats.