Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo le guía en la introducción a SQL Server como servicio confinado en una distribución de Security-Enhanced Linux (SELinux) basada en Red Hat Enterprise Linux (RHEL).
¿Qué es Security-Enhanced Linux?
Security-Enhanced Linux (SELinux) es una arquitectura de seguridad para sistemas Linux. Ayuda a definir controles de acceso para aplicaciones, procesos y archivos en un sistema. SELinux usa un conjunto de reglas o políticas de seguridad para definir qué se puede o no se puede acceder. SELinux proporciona a los administradores más control sobre quién puede acceder al sistema. Para obtener más información, consulte ¿Qué es SELinux (Security-Enhanced Linux)?
Para obtener más información sobre cómo habilitar SELinux para sistemas de Red Hat, consulte arquitectura SELinux. También puede empezar a trabajar con un sistema operativo habilitado para SELinux de forma gratuita.
SQL Server 2022 en Linux está oficialmente certificado con RHEL 9 (a partir de julio de 2024) y ahora está disponible con carácter general en el Catálogo de ecosistema de Red Hat.
SQL Server y SELinux
Un servicio confinado con SELinux significa que está restringido por reglas de seguridad, definidas explícitamente en la política de SELinux. Para SQL Server, las directivas personalizadas de SELinux se definen en el paquete mssql-server-selinux.
Prerrequisitos
SELinux debe estar habilitado y en modo
enforcing. Para comprobar el estado de SELinux, ejecute el comandosestatus.sestatusEsta es la salida esperada.
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: 33Instale el paquete
mssql-server-selinuxque define las directivas personalizadas necesarias.
Nota
Si no se cumple alguno de los requisitos previos, SQL Server se ejecuta como un servicio no definido .
Instalar SQL Server como un servicio confinado
De forma predeterminada, el paquete de mssql-server instala SQL Server sin la directiva SELinux y SQL Server se ejecuta como un servicio no definido. La instalación del paquete mssql-server habilita automáticamente el selinux_execmode booleano. Puede comprobar que SQL Server se está ejecutando sin restricciones mediante el siguiente comando:
ps -eZ | grep sqlservr
Esta es la salida esperada.
system_u:system_r:unconfined_service_t:s0 48265 ? 00:00:02 sqlservr
Una vez instalado el paquete de mssql-server-selinux, habilita una directiva SELinux personalizada que limita el proceso de sqlservr. Al instalar esta directiva, se restablece el selinuxuser_execmod booleano y se reemplaza por una directiva denominada mssql, que limita el proceso de sqlservr en el nuevo dominio de mssql_server_t.
ps -eZ | grep sqlservr
Esta es la salida esperada.
system_u:system_r:mssql_server_t:s0 48941 ? 00:00:02 sqlservr
Tipos de SQL Server y SELinux
Cuando se instala la directiva SELinux opcional con el paquete de mssql-server-selinux, se definen algunos tipos nuevos:
| Directiva SELinux | Descripción |
|---|---|
mssql_opt_t |
Instalación de archivos de mssql-server para /opt/mssql |
mssql_server_exec_t |
Archivos ejecutables en /opt/mssql/bin/ |
mssql_paldumper_exec_t |
Ejecutables y scripts que requieren permisos especiales para administrar volcados de memoria principales |
mssql_conf_exec_t |
Herramienta de administración en /opt/mssql/bin/mssql-conf |
mssql_var_t |
Etiqueta para archivos en /var/opt/mssql |
mssql_db_t |
Etiqueta de los archivos de la base de datos en /var/opt/mssql/data |
Ejemplos
En el ejemplo siguiente se muestra cómo cambiar la ubicación de la base de datos cuando SQL Server se ejecuta como un servicio confined.
Cree los directorios deseados y etiquete como
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/mydbEl comando
semanage fcontextadministra el mapeo de contexto de archivos SELinux. El parámetro-aagrega una nueva regla de contexto de archivo y el parámetro-tdefine el tipo SELinux que se va a aplicar, que en este caso esmssql_db_tpara los archivos de base de datos de SQL Server. Por último, se especifica el patrón de ruta de acceso, que es/opt/mydben este ejemplo, y todos los archivos y subdirectorios que contiene.Establezca la ubicación predeterminada de la base de datos mediante mssql-confy ejecute el programa de instalación.
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mydb/data sudo systemctl restart mssql-serverCompruebe mediante la creación de una nueva base de datos mediante Transact-SQL:
CREATE DATABASE TestDatabase; GOCompruebe que la nueva base de datos se creó con las etiquetas adecuadas.
sudo ls -lZ /opt/mydb/data/Esta es la salida esperada.
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.mdfEn el ejemplo anterior, puede ver que el archivo tiene el
mssql_db_t(tipo) asociado a los nuevos archivos creados.