Proteger archivos de datos y de registro

El SQL Server establece los permisos de acceso a archivos en los archivos de datos físicos y de registro de cada base de datos en cuentas específicas. Estos permisos impiden que se alteren los archivos si se encuentran en un directorio con permisos abiertos. Por ejemplo, si no se han establecido los permisos y para los permisos del sistema operativo en el directorio de la base de datos se ha seleccionado Control total para todos, cualquier cuenta que tenga acceso a ese directorio podrá eliminar o modificar los archivos de la base de datos aunque no tenga permisos de SQL Server para modificar la base de datos.

Los permisos de acceso a archivos se establecen durante cualquiera de las siguientes operaciones de base de datos: crear, adjuntar, separar, modificar para agregar un nuevo archivo, realizar copias de seguridad o restaurar.

Consideraciones administrativas

  • Los permisos sólo se establecen cuando el sistema de archivos es compatible con el control de acceso Win32; por ejemplo, el sistema de archivos NTFS. El Database Engine (Motor de base de datos) no puede establecer permisos en archivos almacenados en particiones sin procesar o en los sistemas de archivos FAT y FAT32.

  • Si el administrador del sistema operativo modifica manualmente los permisos de archivos, el Database Engine (Motor de base de datos) no intentará exigir los permisos originales.

  • Si se cambia la cuenta de servicio de SQL Server (MSSQLSERVER) mediante SQL Server Management Studio, Management Studio intentará agregar la cuenta y los permisos adecuados a todos los archivos existentes de la base de datos. Puede que surjan errores en las bases de datos que no se pueden utilizar en el momento en el que se cambia la cuenta de servicio.

  • Si se cambia la cuenta de servicio MSSQLSERVER mediante los servicios de Microsoft Windows, el administrador del sistema operativo deberá conceder a la nueva cuenta de servicio los permisos Control total para todos los archivos de base de datos y de registro.

Crear una base de datos o agregar un nuevo archivo

Cuando se crea una base de datos o se modifica para agregar un nuevo archivo, se concede a la cuenta de servicio MSSQLSERVER y a los miembros del grupo de administradores local el acceso Control total a los archivos de datos y de registro. El acceso a archivos se elimina para todas las demás cuentas.

Realizar copias de seguridad y restaurar una base de datos

Se otorgan a la cuenta de servicio MSSQLSERVER y a los miembros del grupo de administradores local los permisos Control total del archivo creado para realizar la restauración o copia de seguridad.

Si el archivo ya existe y la cuenta de servicio MSSQLSERVER ya tiene permisos en el archivo, la operación de copia de seguridad o de restauración continuará. De lo contrario, el Database Engine (Motor de base de datos) suplantará la cuenta de Windows de la conexión que esté realizando la operación e intentará abrir el archivo. Una vez abierto el archivo, se otorgarán permisos a la cuenta de servicio MSSQLSERVER y a los miembros del grupo de administradores local.

Los archivos en espera (para deshacer) serán tratados del mismo modo.

Adjuntar y separar una base de datos

Al separar o adjuntar una base de datos, Database Engine (Motor de base de datos) intenta suplantar la cuenta de Windows de la conexión que realiza la operación para comprobar que la cuenta tenga permiso de acceso a los archivos de base de datos y de registro. En el caso de las cuentas de seguridad mixta que utilizan inicios de sesión de SQL Server, puede que la suplantación provoque errores.

Nota de seguridadNota de seguridad

Se recomienda que no adjunte bases de datos de orígenes desconocidos o que no son de confianza. Es posible que dichas bases de datos contengan código dañino que podría ejecutar código Transact-SQL no deseado o provocar errores al modificar el esquema o la estructura de la base de datos física. Antes de utilizar una base de datos de origen desconocido o que no es de confianza, ejecute DBCC CHECKDB en la base de datos en un servidor que no sea de producción y examine también el código, como procedimientos almacenados u otro código definido por el usuario, de la base de datos.

En la tabla siguiente se muestran los permisos establecidos en los archivos de base de datos y de registro una vez completada una operación de adjuntar o separar, y si el Database Engine (Motor de base de datos) puede suplantar la cuenta de conexión.

Operación

Se puede suplantar la cuenta de conexión

Se conceden permisos de archivos para

Separar

Sólo para la cuenta que realiza la operación. Si es necesario, el administrador del sistema operativo puede agregar cuentas una vez separada la base de datos.

Separar

No

La cuenta de servicio de SQL Server (MSSQLSERVER) y los miembros del grupo de administradores de Windows local.

Adjuntar

La cuenta de servicio de SQL Server (MSSQLSERVER) y los miembros del grupo de administradores de Windows local.

Adjuntar

No

La cuenta de servicio de SQL Server (MSSQLSERVER).

Escenario

En el escenario siguiente se muestran los permisos que se establecen al crear una base de datos y que se modifican cuando se separa o adjunta.

User1, miembro de la función fija de servidor dbcreator, crea la base de datos Sales con los archivos e:\Data\Sales.mdf y f:\Log\Sales.ldf. En el momento de la creación, la cuenta de servicio MSSQLSERVER es SQLServiceAccount2, una cuenta local. Se otorgan los permisos Control total de los archivos de base de datos y de registro a SQLServiceAccount2 y a los miembros del grupo de administradores de Windows.

Se decide mover la base de datos Sales a otra instancia de SQL Server en el mismo servidor. Admin3, ,miembro de la función fija de servidor sysadmin, separa la base de datos. El Database Engine (Motor de base de datos) establece los permisos en los archivos Sales.mdf y Sales.ldf para que sólo la cuenta Admin3 tenga permisos de acceso a los archivos.

Admin3 se conecta a la otra instancia de SQL Server, SalesServer. La cuenta de servicio MSSQLSERVER de la instancia SalesServer es SQLSalesServiceAccount. Admin3, un administrador de SQL Server en esta instancia, adjunta la base de datos Sales. Se conceden permisos Control total a SQLSalesServiceAccount y a los miembros del grupo de administradores de Windows.