Segurança para servidores vinculados

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

Os mapeamentos de logon de servidor vinculado podem ser adicionados com sp_addlinkedsrvlogin e removidos com sp_droplinkedsrvlogin. Um mapeamento de logon de servidor vinculado estabelece um logon e uma senha remotos 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 conectar-se ao servidor vinculado.

Por exemplo, um mapeamento para um servidor vinculado, S1, foi configurado para um logon local, U1, para o 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 a ID e a 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 automapeamento. Quando um servidor vinculado é adicionado usando sp_addlinkedserver, um automapeamento 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 à Autenticação do Windows, o automapeamento de logons autenticados pelo 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 automapeamento 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 viculado, o processador de consulta deverá ter estatísticas de distribuição de dados do servidor viculado. Usuários que limitaram permissões em qualquer coluna da tabela podem não ter permissões suficientes para obter todas as estatísticas úteis e podem receber um plano de consulta menos eficiente e de 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 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.