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 führt Sie zu den ersten Schritten mit SQL Server als eingeschränktem Dienst für eine Security-Enhanced Linux-Verteilung (SELinux) 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
SELinux sollte aktiviert und im
enforcingModus sein. Sie können den SELinux-Status überprüfen, indem Sie den Befehlsestatusausfü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.
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
Nachdem Sie das mssql-server-selinux Paket installiert haben, 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, die den sqlservr Prozess in der neuen mssql_server_t Domäne beschränkt.
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 die optionale SELinux-Richtlinie mit dem mssql-server-selinux Paket installiert wird, 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 Skripte, die spezielle Berechtigungen zur Verwaltung von Core-Dumps benötigen |
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
Im folgenden Beispiel wird das Ändern des Datenbankspeicherorts veranschaulicht, 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 seLinux-Typ, der angewendet werden soll, was in diesem Fall für SQL Server-Datenbankdateien giltmssql_db_t. Schließlich wird das Pfadmuster angegeben, das sich in diesem Beispiel befindet/opt/mydb, und 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 mit dem
mssql_db_t(Typ) den neuen Dateien zugeordnet ist.