Servidor vinculado disponível para usuários sem permissões


9

Eu tenho usuários vendo um servidor vinculado que eles não deveriam ver.

O servidor vinculado é definido para que somente eu tenha acesso a ele, mas todos possam vê-lo e usá-lo.

Eu criei o novo servidor vinculado usando as seguintes etapas:

  1. Conecte o SSMS Object Explorer à instância do SQL Server
  2. Expanda Server Objects, clique com o botão direito Linked Serverse clique com o botão esquerdoNew Linked Server...
  3. Sob Generalguia escolher SQL Serverpara Server typee escrever o nome do servidor
  4. Na Securityguia na parte superior Add, clique em , escolha "sa" como Local Login, digite Remote Usero nome eRemote Password
  5. Na Securityguia Na parte inferior (em For a login not defined in the list above, connections will:), escolha a primeira opção:Not be made
  6. Clique OKe inicie o teste

Agora, a única pessoa que deve ver o servidor vinculado sou eu ("sa"), mas de alguma forma outros usuários podem vê-lo e usá-lo.

Nota 1: Os usuários que podem usar o servidor vinculado têm permissões no servidor remoto, não estão vendo dados que não deveriam ver, apenas podem acessá-lo no servidor vinculado quando não deveriam.

Nota 2: Eu sou o único sysadminem ambas as instâncias.


11
Bem, você realmente não pode esconder o servidor ligado, mas quando eles tentam usá-lo, se seu contexto de login atual não tem quaisquer permissões na outra extremidade ...
— Aaron Bertrand

@AaronBertrand Você pode ocultar um servidor vinculado simplesmente não fornecendo acesso a ele. Um logon que não está definido na lista de logins permitidos e não é um administrador de sistemas não pode ver o servidor vinculado no explorador de objetos.
— Roi Gavish

@AaronBertrand Se o contexto atual de logon tiver permissões na outra extremidade, ele ainda não poderá se conectar através do servidor vinculado, se não for permitido.
— Roi Gavish

11
Não, você não pode ocultar o servidor vinculado dessa maneira. Você já tentou isso?
— Aaron Bertrand

Respostas:


7

Não há como "ocultar" um servidor vinculado ou impedir que usuários não autorizados tentem usá-lo. Tudo o que você pode controlar é se eles realmente têm acesso do outro lado. Um servidor vinculado por si só não é um objeto real; como sinônimo, você não concede acesso ao alias, apenas às coisas a que ele se refere.

Experimente e você verá que algumas de suas suposições (por exemplo, "um logon ... não pode ver o servidor vinculado no Pesquisador de Objetos") são falsas. Eu fiz isso:

  1. Criou um login e não concedeu privilégios, apenas CONNECT / função pública.
  2. Criou um servidor vinculado e não adicionou esse logon à lista de logins.
  3. Abriu uma nova instância do Management Studio, conectando-se a este logon.
  4. Consegui ver todos os servidores vinculados em Objetos de servidor> Servidores vinculados.
  5. Também pude consultar sys.serverspara ver a lista de servidores vinculados.

Consegui executar a seguinte consulta sem problemas:

SELECT name FROM [linked server].master.sys.objects;

No entanto, não consegui executar consultas em bancos de dados que não são do sistema, pois não havia concedido acesso explícito a nenhum banco de dados que não fosse do sistema ou aos objetos internos. Por exemplo:

SELECT SalesOrderID FROM [linked server].AdventureWorks2012.Sales.SalesOrderHeader;

Gerou este erro:

Mensagem 7314, Nível 16, Estado 1, Linha 1
O provedor OLE DB "SQLNCLI11" para o servidor vinculado "servidor vinculado" não contém a tabela "" AdventureWorks2012 "." Vendas "." SalesOrderHeader "". A tabela não existe ou o usuário atual não tem permissões nessa tabela.

Espero que você possa obter resultados mais restritivos negando explicitamente o acesso a objetos específicos no servidor vinculado (ou por DENY CONNECT SQLesse logon totalmente), mas isso não limita seu efeito ao servidor vinculado; isso também afeta as conexões diretas.

De qualquer forma, não consigo entender o que você está tentando realizar:

  1. Se o usuário não tiver acesso do outro lado, qual é o mal em deixá-lo tentar ? (Você pode ter mais sorte dizendo-lhes para não auditá-los do que tentar impedi-los de tentar em primeiro lugar.)
  2. Se o usuário não tem acesso do outro lado, por que não podem usar o servidor ligado?

2

Você pode usar a primeira opção "Não ser criado com" um mapeamento de login como abaixo:

insira a descrição da imagem aqui

Aqui está o resultado com o login mapeado:

insira a descrição da imagem aqui

E aqui está o que acontece com outra conta

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.