Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article vous aide à bien démarrer avec SQL Server en tant que service limité sur une distribution Security-Enhanced Linux (SELinux) basée sur Red Hat Enterprise Linux (RHEL).
Qu’est-ce que Security-Enhanced Linux ?
Security-Enhanced Linux (SELinux) est une architecture de sécurité pour les systèmes Linux. Il permet de définir des contrôles d’accès pour les applications, les processus et les fichiers sur un système. SELinux utilise un ensemble de règles, ou stratégies de sécurité, pour définir ce qui peut ou ne peut pas être accessible. SELinux permet aux administrateurs de contrôler davantage qui peut accéder au système. Pour plus d’informations, consultez Qu’est-ce que SELinux (Security-Enhanced Linux).
Pour plus d’informations sur l’activation de SELinux pour les systèmes Red Hat, consultez architecture SELinux. Vous pouvez également commencer à utiliser gratuitement un système d’exploitation
SQL Server 2022 sur Linux est officiellement certifié avec RHEL 9 (à compter de juillet 2024) et est désormais en disponibilité générale sur le catalogue de l’écosystème Red Hat .
SQL Server et SELinux
Un service limité avec SELinux signifie qu’il est limité par les règles de sécurité, explicitement définies dans la stratégie SELinux. Pour SQL Server, les stratégies personnalisées SELinux sont définies dans le package mssql-server-selinux.
Conditions préalables
Activez SELinux et définissez-le en
enforcingmode. Vérifiez l’état SELinux en exécutant lasestatuscommande.sestatusVoici la sortie attendue.
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: 33Installez le package
mssql-server-selinuxqui définit les stratégies personnalisées requises.
Note
Si l’une des conditions préalables n’est pas remplie, SQL Server s’exécute en tant que service non défini.
Configuration minimale requise pour la version mineure RHEL
Pour exécuter SQL Server en tant qu’application limitée sur RHEL 9, vous devez utiliser une version minimale de RHEL mineure. Cette exigence existe en raison des dépendances de versions mineures dans les paquets SELinux. Le package mssql-server-selinux, nécessaire pour exécuter SQL Server en mode limité, dépend des packages selinux-policy et selinux-policy-base.
Étapes d’identification de la version mineure minimale de RHEL
Ajoutez le référentiel SQL Server qui contient
mssql-server-selinux.Pour SQL Server 2025 (17.x) sur RHEL 9 :
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2025.repoPour SQL Server 2022 (16.x) sur RHEL 9 :
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repoNote
Si vous envisagez d’installer sur RHEL 10, passez aux référentiels RHEL 10.
Exécutez la commande suivante pour afficher les dépendances de stratégie SELinux :
sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'La sortie inclut la version minimale de la stratégie SELinux requise, indiquée par un suffixe tel que
.el9_6. Ce suffixe représente la version mineure minimale de RHEL 9 pour laquelle la stratégie a été créée. Par exemple,.el9_6correspond à RHEL 9.6.Si aucun suffixe de ce type n’apparaît dans la sortie, reportez-vous à la documentation Red Hat pour déterminer la version mineure RHEL minimale associée à cette version de la politique SELinux. Dans l’exemple suivant, la version de base SELinux requise est
38.1.53-5.sudo dnf repoquery --requires --latest-limit=1 mssql-server-selinux | egrep '^selinux-policy(-base)?'Voici un exemple de sortie :
selinux-policy >= 38.1.53-5.el9_6 selinux-policy-base >= 38.1.53-5.el9_6Dans cet exemple, l’exigence avec l'étiquette de version mineure la plus élevée est
38.1.53-5.el9_6. Par conséquent, vous avez besoin d’au moins RHEL 9.6 pour installer SQL Server avec SELinux (mssql-server-selinux), puis l’exécuter en tant qu’application limitée sur RHEL 9.
Installer SQL Server en tant que service limité
Par défaut, le package mssql-server installe SQL Server sans la stratégie SELinux, et SQL Server s’exécute en tant que service non défini. L’installation du package mssql-server active automatiquement le selinux_execmode booléen. Vous pouvez vérifier que SQL Server est en cours d'exécution sans restriction à l’aide de la commande suivante :
ps -eZ | grep sqlservr
Voici la sortie attendue.
system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr
Lorsque vous installez le mssql-server-selinux package, il active une stratégie SELinux personnalisée qui limite le sqlservr processus. Lorsque vous installez cette stratégie, la selinuxuser_execmod valeur booléenne est réinitialisée et remplacée par une stratégie nommée mssql. Cette stratégie limite le sqlservr processus dans le nouveau mssql_server_t domaine.
ps -eZ | grep sqlservr
Voici la sortie attendue.
system_u:system_r:mssql_server_t:s0 48941 ? 00:00:02 sqlservr
Types SQL Server et SELinux
Lorsque vous installez la stratégie SELinux facultative à l’aide du mssql-server-selinux package, elle définit de nouveaux types :
| Stratégie SELinux | Descriptif |
|---|---|
mssql_opt_t |
Installer des fichiers de mssql-server sur /opt/mssql |
mssql_server_exec_t |
Fichiers exécutables dans /opt/mssql/bin/ |
mssql_paldumper_exec_t |
Exécutables et scripts nécessitant des autorisations spéciales pour gérer les décharges mémoire |
mssql_conf_exec_t |
Outil de gestion dans /opt/mssql/bin/mssql-conf |
mssql_var_t |
Étiquette pour les fichiers dans /var/opt/mssql |
mssql_db_t |
Étiquette pour les fichiers de base de données dans /var/opt/mssql/data |
Exemples
L’exemple suivant illustre la modification de l’emplacement de la base de données lorsque SQL Server s’exécute en tant que service limité.
Créez les répertoires souhaités et étiquetez-les en tant que
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/mydbLa commande
semanage fcontextgère le mappage de contexte de fichier SELinux. Le-aparamètre ajoute une nouvelle règle de contexte de fichier et le-tparamètre définit le type SELinux à appliquer, ce qui, dans ce cas, concernemssql_db_tles fichiers de base de données SQL Server. Enfin, la commande spécifie le modèle de chemin d’accès, qui se trouve/opt/mydbdans cet exemple, et inclut tous les fichiers et sous-répertoires qu’il contient.Définissez l’emplacement de la base de données par défaut à l’aide de mssql-conf, puis exécutez la configuration.
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data sudo systemctl restart mssql-serverVérifiez en créant une base de données à l’aide de Transact-SQL :
CREATE DATABASE TestDatabase; GOVérifiez que la nouvelle base de données a été créée avec les étiquettes appropriées.
sudo ls -lZ /opt/mydb/data/Voici la sortie attendue.
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.mdfDans l’exemple précédent, vous pouvez voir que le fichier a le
mssql_db_ttype associé aux nouveaux fichiers créés.