Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft Ihnen bei den ersten Schritten mit SQL Server als eingeschränkter Dienst für eine Security-Enhanced Linux (SELinux)-Verteilung basierend auf Red Hat Enterprise Linux (RHEL).
Was ist Security-Enhanced Linux?
Security-Enhanced Linux (SELinux) ist eine Sicherheitsarchitektur für Linux-Systeme. Sie hilft beim Definieren von Zugriffssteuerungen für Anwendungen, Prozesse und Dateien in einem System. SELinux verwendet eine Reihe von Regeln oder Sicherheitsrichtlinien, um zu definieren, was auf sie zugegriffen werden kann oder nicht. SELinux bietet Administratoren mehr Kontrolle darüber, wer auf das System zugreifen kann. Weitere Informationen finden Sie unter "What is SELinux (Security-Enhanced Linux)".
Ausführliche Informationen zum Aktivieren von SELinux für Red Hat-Systeme finden Sie unter SELinux Architecture. Sie können auch kostenlos mit einem SELinux-fähigen Betriebssystem beginnen.
SQL Server 2022 unter Linux ist offiziell mit RHEL 9 (ab Juli 2024) zertifiziert und ist jetzt allgemein im Red Hat-Ökosystemkatalog verfügbar.
SQL Server und SELinux
Ein eingeschränkter Dienst mit SELinux bedeutet, dass er durch Sicherheitsregeln eingeschränkt ist, die in der SELinux-Richtlinie explizit definiert sind. Für SQL Server werden die benutzerdefinierten SELinux-Richtlinien im mssql-server-selinux Paket definiert.
Voraussetzungen
Aktivieren Sie SELinux, und legen Sie ihn auf den
enforcingModus fest. Überprüfen Sie den SELinux-Status, indem Sie densestatusBefehl ausführen.sestatusDie erwartete Ausgabe sieht folgendermaßen aus.
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: 33Installieren Sie das
mssql-server-selinuxPaket, das die erforderlichen benutzerdefinierten Richtlinien definiert.
Hinweis
Wenn eine der Voraussetzungen nicht erfüllt ist, wird SQL Server als nicht definierter Dienst ausgeführt.
Mindestanforderung für RHEL-Nebenversion
Um SQL Server als eingeschränkte Anwendung auf RHEL 9 auszuführen, müssen Sie eine mindestens RHEL-Nebenversion verwenden. Diese Anforderung ist aufgrund von Point-Release-Abhängigkeiten in SELinux-Paketen vorhanden. Das mssql-server-selinux-Paket, das Sie zum Ausführen von SQL Server im eingeschränkten Modus benötigen, hängt von den Paketen selinux-policy und selinux-policy-base ab.
Schritte zum Identifizieren der minimalen RHEL-Nebenversion
Fügen Sie das SQL Server-Repository hinzu, das enthält
mssql-server-selinux.Für SQL Server 2025 (17.x) unter 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) unter RHEL 9:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repoHinweis
Wenn Sie die Installation auf RHEL 10 planen, wechseln Sie zu den RHEL 10-Repositorys.
Führen Sie den folgenden Befehl aus, um die SELinux-Richtlinienabhängigkeiten anzuzeigen:
sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Die Ausgabe enthält die erforderliche SELinux-Richtlinienversion, die durch ein Suffix wie z.B.
.el9_6angegeben ist. Dieses Suffix stellt die minimale RHEL 9-Nebenversion dar, für die die Richtlinie erstellt wurde. Entspricht z. B..el9_6, RHEL 9.6.Wenn kein solches Suffix in der Ausgabe angezeigt wird, finden Sie in der Dokumentation zu Red Hat Informationen zur Mindest-RHEL-Nebenversion, die diesem SELinux-Richtlinienbuild zugeordnet ist. Im folgenden Beispiel ist
38.1.53-5die erforderliche SELinux-Basisversion .sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Hier ist eine Beispielausgabe:
selinux-policy >= 38.1.53-5.el9_6 selinux-policy-base >= 38.1.53-5.el9_6In diesem Beispiel ist
38.1.53-5.el9_6die höchste markierte Nebenversion-Anforderung. Sie benötigen also mindestens RHEL 9.6, um SQL Server mit SELinux (mssql-server-selinux) zu installieren und als eingeschränkte Anwendung auf RHEL 9 auszuführen.
Installieren eines SQL Servers als eingeschränkten Dienst
Standardmäßig installiert das mssql-server Paket SQL Server ohne die SELinux-Richtlinie, und SQL Server wird als nicht definierter Dienst ausgeführt. Die Installation des Pakets mssql-server aktiviert automatisch die Boolesche Variable selinux_execmode. Sie können überprüfen, ob SQL Server unbeschränkt ausgeführt wird, indem Sie den folgenden Befehl verwenden:
ps -eZ | grep sqlservr
Die erwartete Ausgabe sieht folgendermaßen aus.
system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr
Wenn Sie das mssql-server-selinux Paket installieren, wird eine benutzerdefinierte SELinux-Richtlinie aktiviert, die den sqlservr Prozess beschränkt. Wenn Sie diese Richtlinie installieren, wird der selinuxuser_execmod boolesche Wert zurückgesetzt und durch eine Richtlinie mit dem Namen mssqlersetzt. Diese Richtlinie beschränkt den sqlservr Prozess in der neuen mssql_server_t Domäne.
ps -eZ | grep sqlservr
Die erwartete Ausgabe sieht folgendermaßen aus.
system_u:system_r:mssql_server_t:s0 48941 ? 00:00:02 sqlservr
SQL Server- und SELinux-Typen
Wenn Sie die optionale SELinux-Richtlinie mithilfe des mssql-server-selinux Pakets installieren, werden einige neue Typen definiert:
| SELinux-Richtlinie | BESCHREIBUNG |
|---|---|
mssql_opt_t |
Installieren Sie die Dateien von mssql-server in /opt/mssql |
mssql_server_exec_t |
Ausführbare Dateien unter /opt/mssql/bin/ |
mssql_paldumper_exec_t |
Ausführbare Dateien und Skripts, die spezielle Berechtigungen zum Verwalten von Kernabbildern erfordern |
mssql_conf_exec_t |
Verwaltungstool unter /opt/mssql/bin/mssql-conf |
mssql_var_t |
Bezeichnung für Dateien unter /var/opt/mssql |
mssql_db_t |
Bezeichnung für die Datenbankdateien unter /var/opt/mssql/data |
Beispiele
Das folgende Beispiel veranschaulicht das Ändern des Datenbankspeicherorts, wenn SQL Server als eingeschränkter Dienst ausgeführt wird.
Erstellen Sie die gewünschten Verzeichnisse, und bezeichnen Sie sie 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/mydbDer Befehl
semanage fcontextverwaltet die SELinux-Dateikontextzuordnung. Der-aParameter fügt eine neue Dateikontextregel hinzu, und der-tParameter definiert den anzuwendenden SELinux-Typ, der in diesem Fall für SQL Server-Datenbankdateien giltmssql_db_t. Schließlich gibt der Befehl das Pfadmuster an, das sich in diesem Beispiel befindet/opt/mydb, und enthält alle Darin enthaltenen Dateien und Unterverzeichnisse.Legen Sie den Standarddatenbankspeicherort mithilfe von mssql-conf fest, und führen Sie das Setup aus.
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data sudo systemctl restart mssql-serverÜberprüfen Sie, indem Sie eine neue Datenbank mit Transact-SQL erstellen:
CREATE DATABASE TestDatabase; GOÜberprüfen Sie, ob die neue Datenbank mit den entsprechenden Bezeichnungen erstellt wurde.
sudo ls -lZ /opt/mydb/data/Die erwartete Ausgabe sieht folgendermaßen aus.
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.mdfIm vorherigen Beispiel können Sie sehen, dass die Datei dem Typ zugeordnet
mssql_db_tist, den die neuen Dateien erstellt haben.