Compartir a través de


SQL Server en Linux: guía de seguridad y permisos

En este artículo se describen las cuentas de servicio necesarias y los permisos del sistema de archivos para SQL Server en Linux. Para obtener más información sobre SQL Server en permisos de Windows, consulte Configurar cuentas de servicio y permisos de Windows.

Principales integrados de Windows

Aunque SQL Server en Linux se ejecuta en la cuenta de sistema operativo de mssql, los siguientes principales de Windows existen en la capa de SQL Server por motivos de compatibilidad. No quite ni denieguelos a menos que comprenda completamente los riesgos.

Entidad de seguridad Rol de SQL Server predeterminado Detalles
BUILTIN\Administrators administrador de sistemas Se asigna a los administradores de nivel raíz del host. Algunos objetos del sistema se ejecutan en el contexto de esta cuenta.
NT AUTHORITY\SYSTEM public Identificador de servicio (SID) reservado para la cuenta de Windows SYSTEM. Se ha creado para garantizar que los scripts multiplataforma funcionen correctamente.
NT AUTHORITY\NETWORK SERVICE Ninguno (solo compatibilidad) Históricamente, la cuenta de inicio predeterminada para varios servicios de SQL Server en Windows. Presente solo para la compatibilidad con versiones anteriores. No se usa en el propio SQL Server en Linux Motor de base de datos.

Propiedad de archivos y directorios

Todos los archivos de la carpeta /var/opt/mssql deben ser propiedad del usuario y mssql del mssql grupo (mssql:mssql), con acceso de lectura y escritura para ambos. Si cambia el umask predeterminado (0022) o usa puntos de montaje alternativos, debe volver a aplicar estos permisos manualmente.

Los permisos predeterminados para la mssql carpeta son los siguientes:

drwxr-xr-x  3 root  root  4096 May 14 17:17 ./
drwxr-xr-x 13 root  root  4096 Jan  7  2025 ../
drwxrwx---  7 mssql mssql 4096 May 14 17:17 mssql/

Los permisos predeterminados para el contenido de la mssql carpeta son los siguientes:

drwxrwx--- 7 mssql mssql 4096 May 14 17:17 ./
drwxr-xr-x 3 root  root  4096 May 14 17:17 ../
drwxr-xr-x 5 mssql mssql 4096 May 14 17:17 .system/
drwxr-xr-x 2 mssql mssql 4096 May 14 17:17 data/
drwxr-xr-x 3 mssql mssql 4096 Sep 16 22:57 log/
-rw-r--r-- 1 root  root    85 May 14 17:17 mssql.conf
drwxrwxr-x 2 mssql mssql 4096 May 14 17:17 secrets/
drwxr-xr-x 2 mssql mssql 4096 May 14 17:17 security/

Para obtener más información sobre cómo cambiar la ubicación de los datos de usuario, la ubicación del archivo de registro o las ubicaciones de registro y la base de datos del sistema, consulte Configure SQL Server en Linux con la herramienta mssql-conf.

Directorios de SQL Server típicos

Propósito Ruta de acceso predeterminada Detalles
Bases de datos del sistema y del usuario /var/opt/mssql/data Incluye master, model, tempdby todas las bases de datos nuevas a menos que mssql-conf las redirija. Para obtener más información, consulte Cambio de la ubicación predeterminada para las bases de datos del sistema.
Registros de transacciones (si están separados) /var/opt/mssql/data o la ruta de acceso establecida a través de mssql-conf set filelocation.defaultlogdir. Mantenga la propiedad igual si mueve los registros de transacciones. Para obtener más información, consulte Cambio de la ubicación predeterminada de los datos o del directorio de registro.
Backups /var/opt/mssql/data Cree y configure con chown antes de la primera copia de seguridad, o al asignar un volumen o directorio. Para obtener más información, consulte Cambio de la ubicación predeterminada del directorio de copia de seguridad.
Registros de errores y registros de eventos extendidos (XE) /var/opt/mssql/log También hospeda la sesión XE predeterminada de mantenimiento del sistema. Para obtener más información, consulte Cambio de la ubicación predeterminada del directorio del archivo de registro de errores.
Volcados de memoria /var/opt/mssql/log Se utiliza para volcado de núcleo y volcados de DBCC CHECK*. Para obtener más información, consulte Cambiar la ubicación predeterminada del directorio de volcado de memoria.
Secretos de seguridad /var/opt/mssql/secrets Almacena certificados TLS, claves maestras de columna, etc.

Roles mínimos de SQL Server para cada agente

Agente Se ejecuta como (Linux) Se conecta a Roles y derechos de base de datos necesarios
Agente de Captura Instantánea mssql (a través del trabajo del Agente SQL) Distribuidor. db_owner en la base de datos de distribución; lectura/escritura en la carpeta de instantáneas
Agente lector de logs mssql Publisher y Distribuidor db_owner en la base de datos y distribución de publicaciones. Es posible que necesite sysadmin al inicializar desde la copia de seguridad.
Agente de Distribución (push) mssql Distribuidor al suscriptor db_owner en distribución; db_owner en la base de datos de suscripciones. Leer la carpeta de instantáneas. Miembro PAL.
Agente de Distribución (pull) mssql (en Suscriptor) Suscriptor al distribuidor
Distribuidor al suscriptor
Igual que el Agente de Distribución (push), pero se aplican los permisos de recurso compartido de instantáneas en el host del suscriptor.
Agente de Combinación mssql Publisher, distribuidor, suscriptor db_owner en distribución. Miembro PAL. Leer la carpeta de instantáneas. Lectura y escritura en bases de datos de publicación y suscripción.
Agente de lectura de cola mssql Distribuidor. db_owner en distribución. Se conecta a Publisher con db_owner en la base de datos de publicaciones.

procedimientos recomendados

El mssql usuario y grupo usado por SQL Server es una cuenta que no es de inicio de sesión de forma predeterminada y debe mantenerse de esa manera. Para fines de seguridad, use autenticación de Windows para SQL Server en Linux siempre que sea posible. Para obtener más información sobre cómo configurar autenticación de Windows para SQL Server en Linux, consulte Tutorial: Uso de adutil para configurar la autenticación de Active Directory con SQL Server en Linux.

Restrinja aún más los permisos de archivo (mediante el comando chmod 700) siempre que el directorio no necesite acceso a grupos.

Al enlazar directorios de host o recursos compartidos NFS a contenedores o máquinas virtuales, primero créelos, y luego mapee el UID 10001 (valor predeterminado para mssql).

Evite otorgar sysadmin a los inicios de sesión de aplicaciones. En su lugar, use roles pormenorizados y EXECUTE AS contenedores. Deshabilite o cambie el nombre de la sa cuenta una vez que haya creado otra cuenta sysadmin . Para obtener más información, consulte Deshabilitación de la cuenta sa como procedimiento recomendado.