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, vea Configurar cuentas y permisos de servicio de Windows.

Principales integrados de Windows

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

Entidad de seguridad Rol predeterminado de SQL Server 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 sysadmin (sin rol fijo) Históricamente, la cuenta de inicio predeterminada para varios servicios de SQL Server en Windows. Presente solo para la compatibilidad con versiones anteriores. No lo usa el propio motor de base de datos de SQL Server en Linux.

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 Configuración de SQL Server en Linux con la herramienta mssql-conf.

Directorios típicos de SQL Server

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 instantáneas 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 Publicador 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 los permisos de compartición del recurso de instantáneas se aplican en el host del suscriptor.
Agente de mezcla mssql Publicador, distribuidor, suscriptor db_owner en distribución. Miembro PAL. Leer 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 el grupo usados por SQL Server no son cuentas de inicio de sesión de forma predeterminada y deben mantenerse así. Para fines de seguridad, use la autenticación de Windows para SQL Server en Linux siempre que sea posible. Para obtener más información sobre cómo configurar la 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.