Segurança para servidores vinculados

Durante uma conexão de servidor vinculado (por exemplo, quando ele processa uma consulta distribuída), o servidor remetente fornece um nome de logon e uma senha para se conectar ao servidor destinatário. Para que essa conexão funcione, é necessário criar um mapeamento de logon entre os servidores vinculados usando procedimentos armazenados do sistema do SQL Server.

Os mapeamentos de logon de servidor vinculado podem ser adicionados com o uso de sp_addlinkedsrvlogin e podem ser removidos com sp_droplinkedsrvlogin. Um mapeamento de logon de servidor vinculado estabelece um logon remoto e uma senha remota para um servidor vinculado especificado e logon local. Quando o SQL Server se conecta a um servidor vinculado para executar uma consulta distribuída ou um procedimento armazenado, o SQL Server procura mapeamentos para o logon atual que está executando a consulta no procedimento. Se houver um mapeamento de logon, o SQL Server enviará o logon e a senha remotos correspondentes quando se conectar com o servidor vinculado.

Por exemplo, um mapeamento para um servidor vinculado, S1, foi configurado para um logon local, U1, para logon remoto, U2, usando uma senha remota 8r4li034j7$. Quando o logon local U1 executa uma consulta distribuída que acessa uma tabela armazenada no servidor vinculado S1, U2 e 8r4li034j7$ são passados como identificação e senha do usuário quando o SQL Server se conecta ao servidor vinculado S1.

O mapeamento padrão para uma configuração de servidor vinculado é emular as credenciais de segurança atuais do logon. Esse tipo de mapeamento é conhecido como auto-mapeamento. Quando um servidor vinculado é adicionado com o uso de sp_addlinkedserver, um auto-mapeamento padrão é adicionado para todos os logons locais. Se a delegação de conta de segurança estiver disponível e o servidor vinculado der suporte para Autenticação do Windows, o auto-mapeamento para os logons autenticados do Windows terá suporte.

ObservaçãoObservação

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

Se a delegação de conta de segurança não estiver disponível no cliente ou no servidor remetente, ou se o servidor/provedor vinculado não reconhecer o Modo de Autenticação do Windows, o auto-mapeamento não funcionará para os logons que utilizam Autenticação do Windows. Portanto, é necessário configurar um mapeamento de logon local, de um logon que utilize Autenticação do Windows para um logon específico no servidor vinculado, que não seja um logon autenticado pelo Windows. Nesse caso, o logon remoto usará Autenticação do SQL Server se o servidor vinculado for uma instância do SQL Server.

As consultas distribuídas estão sujeitas às permissões concedidas ao logon remoto pelo servidor vinculado na tabela remota. Porém, o SQL Server não executa nenhuma validação de permissão em tempo de compilação. Quaisquer violações de permissão serão detectadas em tempo de execução de consulta, conforme relatado pelo provedor.

ObservaçãoObservação

Para criar os melhores planos de consulta quando você estiver usando uma tabela em um servidor vinculado, o processador de consulta deverá ter estatísticas de distribuição de dados do servidor vinculado. Os usuários que tiverem limitado as permissões em qualquer coluna da tabela talvez não tenham permissões suficientes para obter todas as estatísticas úteis, e poderão receber um plano de consulta menos eficiente e perceber um baixo desempenho. Se o servidor vinculado for uma instância do SQL Server, para obter todas as estatísticas disponíveis, o usuário deverá ser proprietário da tabela ou membro da função de servidor fixa sysadmin, da função de banco de dados fixa db_owner ou da função de banco de dados fixa db_ddladmin no servidor vinculado.

Testando servidores vinculados

No Pesquisador de Objetos, clique com o botão direito do mouse no servidor vinculado e clique em Testar Conexão.