Seguridad para servidores remotos

Para habilitar las llamadas a procedimiento remoto (RPC) en servidores remotos, es preciso configurar asignaciones de inicios de sesión en el servidor remoto (y tal vez en el servidor local) en que se ejecuta una instancia de SQL Server. En SQL Server, las llamadas a procedimiento remoto están deshabilitadas de forma predeterminada. Esta configuración mejora la seguridad del servidor al reducir el área expuesta susceptible de ser atacada. Debe habilitar esta característica para poder usar RPC. Para obtener más información, vea sp_configure (Transact-SQL).

Nota

La aceptación de servidores remotos sólo se proporciona por compatibilidad con versiones anteriores. En su lugar, las nuevas aplicaciones que deben ejecutar procedimientos almacenados en instancias remotas de SQL Server deben utilizar servidores vinculados. Para obtener más información, vea Vincular servidores.

Configurar el servidor remoto

Es necesario configurar asignaciones de inicios de sesión remotos en el servidor remoto. Con estas asignaciones, el servidor remoto asigna el inicio de sesión entrante para una conexión de RPC desde el servidor especificado hasta un inicio de sesión local. Para configurar asignaciones de inicios de sesión remotos, utilice el procedimiento almacenado sp_addremotelogin en el servidor remoto.

Nota

La opción trusted de sp_remoteoption no se admite en SQL Server.

Configurar el servidor local

Para los inicios de sesión locales autenticados de SQL Server, no es necesario configurar una asignación de inicio de sesión en el servidor local. SQL Server utiliza el inicio de sesión local y la contraseña para conectarse al servidor remoto. Para los inicios de sesión autenticados de Windows, configure una asignación de inicio de sesión local en un servidor local que defina el inicio de sesión y la contraseña que utilizará una instancia de SQL Server al establecer una conexión de RPC a un servidor remoto.

Para los inicios de sesión creados por la autenticación de Windows, debe crear una asignación a un nombre de inicio de sesión y una contraseña mediante el procedimiento almacenado sp_addlinkedservlogin. Este nombre de inicio de sesión y esta contraseña deben coincidir con el inicio de sesión entrante y la contraseña que espera el servidor remoto, creados mediante sp_addremotelogin.

Nota

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

Ejemplo de seguridad para servidores remotos

Considerando estas SQL Server instalaciones: Otro inicio de sesión entrante de serverSend, llamado Joe, está asignado a un inicio de sesión autenticado de SQL Server en serverReceive*,* llamado Joe.

En el siguiente ejemplo de código de Transact-SQL se configura serverSend para realizar llamadas RPC en serverReceive.

--Create remote server entry for RPCs 
--from serverSend in serverReceive.
EXEC sp_addserver 'serverSend'
GO

--Create remote login mapping for login 'Sales_Mary' from serverSend
--to Alice.
EXEC sp_addremotelogin 'serverSend', 'Alice', 'Sales_Mary'
GO
--Create remote login mapping for login Joe from serverReceive 
--to same login.
--Assumes same password for Joe in both servers.
EXEC sp_addremotelogin 'serverSend', 'Joe', 'Joe'
GO

En serverSend, se crea una asignación de inicio de sesión local para el inicio de sesión autenticado de Windows Sales\Mary al inicio de sesión Sales_Mary. No se necesita ninguna asignación local para Joe, ya que la opción predeterminada es utilizar el mismo nombre de inicio de sesión y contraseña, y serverReceive contiene una asignación para Joe:

--Create a remote server entry for RPCs from serverReceive.
EXEC sp_addserver 'serverReceive'
GO
--Create a local login mapping for the Windows authenticated login.
--Sales\Mary to Sales_Mary. The password should match the
--password for the login Sales_Mary in serverReceive.
EXEC sp_addlinkedsrvlogin 'serverReceive', false, 'Sales\Mary',
   'Sales_Mary', '430[fj%dk'
GO