Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come iniziare a usare SQL Server come servizio limitato in una distribuzione Security-Enhanced Linux (SELinux) basata su Red Hat Enterprise Linux (RHEL).
Che cos'è Security-Enhanced Linux?
Security-Enhanced Linux (SELinux) è un'architettura di sicurezza per i sistemi Linux. Consente di definire controlli di accesso per applicazioni, processi e file in un sistema. SELinux utilizza un insieme di regole, o criteri di sicurezza, per definire a cosa è possibile o non possibile accedere. SELinux offre agli amministratori un maggiore controllo su chi può accedere al sistema. Per altre informazioni, vedere Che cos'è SELinux (Security-Enhanced Linux).
Per informazioni dettagliate su come abilitare SELinux per i sistemi Red Hat, vedere SELinux Architecture. È anche possibile iniziare gratuitamente con un sistema operativo abilitato SELinux .
SQL Server 2022 in Linux è ufficialmente certificato con RHEL 9 (a partire da luglio 2024) ed è ora disponibile a livello generale nel catalogo Red Hat Ecosystem.
SQL Server e SELinux
Un servizio limitato con SELinux significa che è limitato dalle regole di sicurezza, definite in modo esplicito nei criteri SELinux. Per SQL Server, i criteri personalizzati SELinux vengono definiti nel pacchetto mssql-server-selinux.
Prerequisiti
Abilitare SELinux e impostarlo sulla
enforcingmodalità. Controllare lo stato DI SELinux eseguendo ilsestatuscomando .sestatusEcco l'output previsto.
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: 33Installare il pacchetto
mssql-server-selinuxche definisce i criteri personalizzati necessari.
Nota
Se uno dei prerequisiti non è soddisfatto, SQL Server viene eseguito come servizio non definito .
Requisito di versione secondaria di RHEL minimo
Per eseguire SQL Server come applicazione limitata in RHEL 9, è necessario usare una versione minima di RHEL secondaria. Questo requisito esiste a causa delle dipendenze da punto a rilascio nei pacchetti SELinux. Il pacchetto mssql-server-selinux, necessario per eseguire SQL Server in modalità limitata, dipende dai pacchetti selinux-policy e selinux-policy-base.
Passaggi per identificare la versione minima di RHEL secondaria
Aggiungere il repository di SQL Server che contiene
mssql-server-selinux.Per SQL Server 2025 (17.x) in RHEL 9:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2025.repoPer SQL Server 2022 (16.x) in RHEL 9:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repoNota
Se si prevede di installare in RHEL 10, passare ai repository RHEL 10.
Eseguire il comando seguente per visualizzare le dipendenze dei criteri SELinux:
sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'L'output include la versione minima dei criteri SELinux richiesta, indicata da un suffisso come
.el9_6, ad esempio. Questo suffisso rappresenta la versione secondaria minima di RHEL 9 per cui è stata costruita la politica. Ad esempio,.el9_6corrisponde a RHEL 9.6.Se nell'output non viene visualizzato alcun suffisso di questo tipo, fare riferimento alla documentazione di Red Hat per determinare la versione secondaria RHEL minima associata alla compilazione dei criteri SELinux. Nell'esempio seguente la versione di base SELinux richiesta è
38.1.53-5.sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Ecco l'output di esempio:
selinux-policy >= 38.1.53-5.el9_6 selinux-policy-base >= 38.1.53-5.el9_6In questo esempio, il requisito con tag versione secondaria più alto è
38.1.53-5.el9_6. È quindi necessario almeno RHEL 9.6 per installare SQL Server con SELinux (mssql-server-selinux) ed eseguirlo come applicazione limitata in RHEL 9.
Installare SQL Server come servizio limitato
Per impostazione predefinita, il pacchetto mssql-server installa SQL Server senza la policy SELinux, e SQL Server viene eseguito come servizio non confinato. L'installazione del pacchetto mssql-server abilita automaticamente l'selinux_execmode booleano. È possibile verificare che SQL Server sia in esecuzione senza limitazioni usando il comando seguente:
ps -eZ | grep sqlservr
Ecco l'output previsto.
system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr
Quando si installa il mssql-server-selinux pacchetto, viene abilitato un criterio SELinux personalizzato che limita il sqlservr processo. Quando si installa questo criterio, il selinuxuser_execmod valore booleano viene reimpostato e viene sostituito da un criterio denominato mssql. Questo criterio limita il sqlservr processo nel nuovo mssql_server_t dominio.
ps -eZ | grep sqlservr
Ecco l'output previsto.
system_u:system_r:mssql_server_t:s0 48941 ? 00:00:02 sqlservr
I tipi di SQL Server e SELinux
Quando si installano i criteri SELinux facoltativi usando il mssql-server-selinux pacchetto, vengono definiti alcuni nuovi tipi:
| Politica SELinux | Descrizione |
|---|---|
mssql_opt_t |
Installare i file di mssql-server in /opt/mssql |
mssql_server_exec_t |
File eseguibili in /opt/mssql/bin/ |
mssql_paldumper_exec_t |
File eseguibili e script che richiedono autorizzazioni speciali per gestire i dump di base |
mssql_conf_exec_t |
Strumento di gestione presso /opt/mssql/bin/mssql-conf |
mssql_var_t |
Etichetta per i file a /var/opt/mssql |
mssql_db_t |
Etichetta per i file di database in /var/opt/mssql/data |
Esempi
Nell'esempio seguente viene illustrata la modifica del percorso del database quando SQL Server viene eseguito come servizio limitato.
Crea le directory desiderate ed etichettale come
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/mydbIl comando
semanage fcontextgestisce il mapping del contesto di file SELinux. Il-aparametro aggiunge una nuova regola di contesto di file e il-tparametro definisce il tipo SELinux da applicare, che in questo caso riguardamssql_db_ti file di database di SQL Server. Infine, il comando specifica il modello di percorso, che si trova/opt/mydbin questo esempio, e include tutti i file e le sottodirectory al suo interno.Impostare il percorso predefinito del database usando mssql-confed eseguire l'installazione.
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data sudo systemctl restart mssql-serverVerificare creando un nuovo database usando Transact-SQL:
CREATE DATABASE TestDatabase; GOVerificare che il nuovo database sia stato creato con le etichette appropriate.
sudo ls -lZ /opt/mydb/data/Ecco l'output previsto.
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.mdfNell'esempio precedente è possibile vedere che il file ha il
mssql_db_ttipo associato ai nuovi file creati.