SQL Server 链接服务器的安全

系统 1747 0
原文: SQL Server 链接服务器的安全

一.本文所涉及的内容(Contents)

  1. 本文所涉及的内容(Contents)
  2. 背景(Contexts)
  3. 安全设置(Security Settings)
    1. 实现效果:用户A能看见能使用,B用户不能看见这个链接服务器;
    2. 实现效果:用户A能看见能使用,B用户能看见但是没有权限使用;
    3. 总结
  4. 参考文献(References)

二.背景(Contexts)

  当需要用远程服务器数据库和本地进行数据交互的时候(例如导数据等),我们通常会在本地创建一个远程服务器的数据库链接,关于创建创建链接服务器可以参考: SQL Server 创建链接服务器 ,但是我们很少去关注链接服务器的安全性问题。

  为了控制链接服务器的安全性,我们采取的方法是:控制只有某个用户能使用这个链接服务器,实现的效果就如Figure1和Figure2所示,TestLink用户能看到并使用链接服务器:[192.168.1.5],而sa用户却无法看到链接服务器。另外一种安全模式如Figure14和Figure15所示。

clip_image001_thumb

(Figure1:sa用户看到的链接服务器)

clip_image002_thumb

(Figure2:TestLink用户看到的链接服务器)

三.安全设置(Security Settings)

对于链接服务器的安全,可以实现两种效果:

1) 用户A能看见能使用,B用户不能看见这个链接服务器;

2) 用户A能看见能使用,B用户能看见但是没有权限使用;

(一) 实现效果:用户A能看见能使用,B用户不能看见这个链接服务器;

  1) 首先我们填写远程服务器的地址,如果有端口就加入端口,不填表示端口默认是1433

clip_image003_thumb

(Figure3:创建链接服务器)

  2) 在不考虑安全性的问题的情况下,我通常是使用Figure4的做法来设置帐号和密码的。

clip_image004_thumb

(Figure4:通常设置帐号密码的做法)

  3) 如果要实现链接服务器的安全,那就选择【不建立连接】,再点击【添加】按钮,这样就可以为“本地服务器登录到远程服务器登录的映射”添加本地A用户与服务器B用户的一个映射关系。

clip_image005_thumb

(Figure5:未定义的登录)

  4) 本地登录设置sa这个用户登录,与之对应的是远程服务器的用户sa和密码****进行远程服务器的登录验证,如下图所示:

clip_image006_thumb

(Figure6:登录映射)

  5) 通过上面几个步骤的设置,现在这个链接服务器就只有sa用户能够使用了,为了看到效果,我们创建一个TestLink的用户,创建界面操作如Figure7、Figure8,为了真实反应生产环境的帐号权限管理,我们另外为TestLink分配一个数据库权限,如Figure9图所示。

clip_image007_thumb

(Figure7:创建TestLink用户)

clip_image008_thumb

(Figure8:设置TestLink服务器角色)

clip_image009_thumb

(Figure9:设置TestLink用户身份)

  6) 分别使用sa和TestLink进行登录就能很直观的看出效果了:sa拥有[192.168.1.5]这个链接服务器的使用权限,而TestLink连看到的机会都没有。效果如Figure1和Figure2所示。

(二) 实现效果:用户A能看见能使用,B用户能看见但是没有权限使用;

  1) 假设我们需要在TestLink用户上创建一个链接服务器,但是想sa没有权限使用,如果直接在TestLink用户下创建链接服务器会出现下面Figure10的错误,因为没有权限,权限可以使用Figure11图进行修改。

clip_image011_thumb

(Figure10:TestLink用户创建链接服务器错误)

clip_image012_thumb

(Figure11:修改TestLink的角色)

  2) 现在我们创建一个[192.168.1.48]的链接服务器,设置如Figure12和Figure13所示。

clip_image013_thumb

(Figure12:创建新链接服务器)

clip_image014_thumb

(Figure13:设置TestLink登录映射)

  3) 我们使用sa和TestLink用户登录查看服务器链接,下图 Figure13和Figure14中看到的列表都是一样,那是否没有区别呢?

clip_image015_thumb

(Figure14:sa用户看到的链接服务器)

clip_image016_thumb

(Figure15:TestLink用户看到的链接服务器)

  4) 首先我们从使用上来看看是否有区别,在sa和TestLink用户下使用链接服务器[192.168.1.48]的情况:

clip_image017_thumb

(Figure16:sa用户使用链接服务器)

clip_image018_thumb

(Figure17:TestLink用户使用链接服务器)

(三) 总结:

  1) 用户能不能看到链接服务器是由sysadmin角色来决定的,在为一个用户分配角色的时候就应该注意这点;

  2) 如果两个用户都在sysadmin角色下,即使他们看到的链接服务器列表是一样的,但是也是可以控制链接服务器的权限的,如Figure16和Figure17所示;

3) 如果sa用户知道192.168.1.48的帐号和密码,他也可以自己在[192.168.1.48]链接服务器添加自己的用户登录映射,一样可以使用这个远程链接服务器,前提是sa用户知道帐号和密码;这样只要控制192.168.1.48帐号的安全就可以了;

  4) 如果想在用户登录映射的时候使用模拟,那么你设置的这个用户必须与远程链接服务器的用户名和密码要相同才可以使用;

  5) 如果链接服务器是 SQL Server 的实例,若要获取所有可用的统计,用户必须拥有该表或者是链接服务器上 sysadmin 固定服务器角色、db_owner 固定数据库角色或者 db_ddladmin 固定数据库角色的成员。

四.参考文献(References)

链接服务器的安全性

sp_addlinkedserver (Transact-SQL)

SQL Server 链接服务器的安全


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论