Partilhar via


Segurança para servidores remotos

Para habilitar RPCs (chamadas de procedimento remoto) em um servidor remoto, é necessário configurar mapeamentos de logon no servidor remoto e, possivelmente, no servidor local que está executando uma instância do SQL Server. A RPC é desabilitada por padrão no SQL Server. Essa configuração aumenta a segurança do servidor reduzindo sua área da superfície passível de ataque. Antes de usar RPC, é necessário habilitar esse recurso. Para obter mais informações, consulte sp_configure (Transact-SQL).

ObservaçãoObservação

O suporte para servidores remotos é fornecido somente para compatibilidade com versões anteriores. Os aplicativos novos que devem executar procedimentos armazenados em instâncias remotas do SQL Server devem usar servidores vinculados. Para obter mais informações, consulte Vinculando servidores.

Configurando o servidor remoto

Os mapeamentos de logon remoto devem ser configurados no servidor remoto. Usando esses mapeamentos, o servidor remoto mapeia o logon de entrada de uma conexão RPC, de um servidor especificado para um logon local. Os mapeamentos de logon remoto podem ser configurados com o procedimento armazenado sp_addremotelogin no servidor remoto.

ObservaçãoObservação

A opção confiável de sp_remoteoption não tem suporte no SQL Server.

Configurando o servidor local

Para os logons locais autenticados do SQL Server, não é necessário configurar um mapeamento de logon no servidor local. O SQL Server usa o logon local e a senha para se conectar ao servidor remoto. Para logons autenticados do Windows, configure um mapeamento de logon local em um servidor local que defina que o logon e a senha sejam usados por uma instância do SQL Server quando ele fizer uma conexão RPC para um servidor remoto.

Para logons criados pela Autenticação do Windows, é necessário criar um mapeamento para um nome de logon e senha usando o procedimento armazenado sp_addlinkedservlogin. Esse nome de logon e essa senha devem corresponder ao logon e senha de entrada esperados pelo servidor remoto, conforme criado por sp_addremotelogin.

ObservaçãoObservação

Quando possível, use a Autenticação do Windows.

Exemplo de segurança de servidor remoto

Considere estas instalações do SQL Server: serverSend e serverReceive. serverReceive está configurado para mapear um logon de entrada de serverSend, chamado Sales_Mary, para um logon autenticado do SQL Server em serverReceive, chamado Alice. Outro logon de entrada de serverSend, chamado Joe, está mapeado para um logon autenticado do SQL Server em serverReceive*,* chamado Joe.

O exemplo de código do Transact-SQL a seguir configura serverSend para executar RPCs em 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

Em serverSend, um mapeamento de logon local é criado para um logon autenticado do Windows Sales\Mary para um logon Sales_Mary. Nenhum mapeamento local é necessário para Joe, porque o padrão é usar o mesmo nome de logon e senha, e serverReceive tem um mapeamento 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