Seguridad para servidores vinculados

Durante una conexión de servidores vinculados (por ejemplo, cuando se procesa una consulta distribuida), el servidor de envío proporciona un nombre de inicio de sesión y una contraseña para conectarse en su nombre al servidor de recepción. Para que esta conexión funcione, debe crear una asignación de inicio de sesión entre los servidores vinculados utilizando procedimientos almacenados del sistema de SQL Server.

Las asignaciones de inicios de sesión de servidores vinculados se pueden agregar con sp_addlinkedsrvlogin y se pueden quitar con sp_droplinkedsrvlogin. Una asignación de inicio de sesión de servidores vinculados establece un inicio de sesión y una contraseña remotos para un servidor vinculado e inicio de sesión local determinados. Cuando SQL Server se conecta a un servidor vinculado para ejecutar una consulta distribuida o un procedimiento almacenado, SQL Server comprueba si hay asignaciones de inicios de sesión para el inicio de sesión que está ejecutando la consulta o el procedimiento en ese momento. Si hay una asignación de inicio de sesión, SQL Server envía la contraseña y el inicio de sesión remotos correspondientes mientras se conecta al servidor vinculado.

Por ejemplo, supongamos que se ha configurado una asignación para un servidor vinculado, S1, entre el inicio de sesión local U1 y el inicio de sesión remoto U2 y que se ha utilizado la contraseña remota 8r4li034j7$. Cuando el inicio de sesión local U1 ejecuta una consulta distribuida que tiene acceso a una tabla almacenada en el servidor vinculado S1, se pasan U2 y 8r4li034j7$8r4li034j7$ como el id. de usuario y la contraseña cuando SQL Server se conecta al servidor vinculado S1S1.

La asignación predeterminada de una configuración de servidor vinculado consiste en emular las credenciales de seguridad actuales del inicio de sesión. Este tipo de asignación se denomina autoasignación. Cuando se agrega un servidor vinculado con sp_addlinkedserver, se agrega una autoasignación predeterminada para todos los inicios de sesión locales. Si hay una delegación de cuenta de seguridad disponible y el servidor vinculado admite la autenticación de Windows, se admitirá la autoasignación de inicios de sesión autenticados por Windows.

Nota

Siempre que sea posible, utilice la autenticación de Windows.

Si no hay una delegación de cuenta de seguridad en el cliente o en el servidor que realiza el envío, o el proveedor o servidor vinculado no reconoce el modo de autenticación de Windows, la autoasignación no funcionará para los inicios de sesión autenticados mediante Windows. Por lo tanto, debe configurar la asignación de un inicio de sesión local que utilice la autenticación de Windows a un inicio de sesión específico en el servidor vinculado que no sea un inicio de sesión con autenticación de Windows. En este caso, el inicio de sesión remoto utiliza la autenticación de SQL Server si el servidor vinculado es una instancia de SQL Server.

Las consultas distribuidas están sujetas a los permisos que otorga el servidor vinculado al inicio de sesión remoto en la tabla remota. Sin embargo, SQL Server no realiza validaciones de permisos en el momento de la compilación. Las infracciones de los permisos se detectan al ejecutar la consulta, a medida que el proveedor informa de ellas.

Nota

Para crear los mejores planes de consulta cuando utiliza una tabla en un servidor vinculado, el procesador de consultas debe disponer de estadísticas de distribución de datos del servidor vinculado. Los usuarios con permisos limitados en las columnas de la tabla puede que no tengan permisos suficientes para obtener todas las estadísticas de utilidad, y puede que reciban un plan de consulta menos eficaz y experimenten un bajo rendimiento. Si el servidor vinculado es una instancia de SQL Server, para obtener todas las estadísticas disponibles, el usuario debe ser propietario de la tabla o miembro del rol fijo de servidor sysadmin, del rol de base de datos fijo db_owner o del rol de base de datos fijo db_ddladmin en el servidor vinculado.

Probar servidores vinculados

En el Explorador de objetos, haga clic con el botón secundario en el servidor vinculado y, a continuación, haga clic en Probar conexión.