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.