链接服务器可供未经许可的用户使用


9

我有用户看到他们不应该看到的链接服务器。

链接服务器被定义为只有我才能访问它,但是每个人都可以看到和使用它。

我使用以下步骤创建了新的链接服务器:

  1. 将SSMS对象资源管理器连接到SQL Server实例
  2. 展开Server Objects,右键单击Linked Servers并单击鼠标左键New Linked Server...
  3. General选项卡中选择SQL ServerServer type和写入服务器的名称
  4. Security上部的标签下,点击Add,选择“ sa”作为Local Login,输入Remote User的名称,然后Remote Password
  5. Security下部的标签下(在下方For a login not defined in the list above, connections will:),选择第一个选项:Not be made
  6. 点击OK并开始测试

现在,唯一应该看到链接服务器的人是我(“ sa”),但其他用户可以某种方式看到它并使用它。

注1:可以使用链接服务器的用户对远程服务器具有权限,他们看不到不应看到的数据,只是在不能访问时才可以从链接服务器访问数据。

注意2:sysadmin在这两种情况下,我都是唯一的。


1
好吧,您不能真正隐藏链接的服务器,但是当他们尝试使用链接的服务器时,如果他们当前的登录上下文在另一端没有任何权限...
Aaron Bertrand

@AaronBertrand您可以通过不提供对链接服务器的访问来隐藏它。在允许的登录名列表中未定义且不是sysadmin的登录名无法在对象资源管理器中看到链接的服务器。
Roi Gavish 2013年

@AaronBertrand如果他们当前的登录上下文确实在另一端具有权限,则如果不允许,他们仍然不应该能够通过链接服务器进行连接。
Roi Gavish

1
不,您不能以这种方式隐藏链接的服务器。你有尝试过吗?
阿龙贝特朗

Answers:


7

无法“隐藏”链接的服务器或阻止未经授权的用户尝试使用它。您所能控制的就是他们实际上是否在另一端具有访问权限。链接服务器本身并不是一个实际的对象;就像同义词一样,您不授予对别名的访问权限,而只授予对其引用的事物的访问权限。

尝试一下,您将看到一些假设(例如,“登录...无法在对象资源管理器中看到链接的服务器”)是错误的。我这样做:

  1. 创建一个登录名,不授予任何特权,仅授予CONNECT / public角色。
  2. 创建了链接服务器,并且未将此登录名添加到登录名列表中。
  3. 打开一个新的Management Studio实例,并与此登录名连接。
  4. 我能够在“服务器对象”>“链接的服务器”下看到所有链接的服务器。
  5. 我还可以查询sys.servers以查看链接服务器的列表。

我能够运行以下查询没问题:

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

但是,由于无法授予对任何非系统数据库或其中的对象的显式访问权限,因此我无法对非系统数据库运行查询。例如:

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

产生此错误:

消息7314,级别16,状态1,行1
链接服务器“链接服务器”的OLE DB提供程序“ SQLNCLI11”不包含表“ AdventureWorks2012”。“销售”。“ SalesOrderHeader”。该表不存在,或者当前用户对该表没有权限。

我希望您可以通过显式拒绝对链接服务器上特定对象的访问(或DENY CONNECT SQL完全通过该登录名)来获得更严格的结果,但这并不将其影响仅限于链接服务器。它也会影响直接连接。

无论如何,我看不到您要完成的目标:

  1. 如果用户没有对对方的访问,是什么让他们的伤害尝试?(与阻止他们一开始尝试相比,让他们告诉他们不要去审核它们可能会更好。)
  2. 如果用户确实在另一端具有访问权限,为什么他们不能使用链接服务器?

2

您可以使用第一个选项“无法使用”登录映射,如下所示:

在此处输入图片说明

这是映射登录名的结果:

在此处输入图片说明

这是另一个帐户的情况

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.