设为首页 收藏本站
查看: 816|回复: 0

[经验分享] 配置安全的Linked server

[复制链接]

尚未签到

发表于 2016-11-7 03:39:19 | 显示全部楼层 |阅读模式
  SQL Server Linked server提供了方便快速访问外部数据以及异构数据库,所以很多公司喜欢用Linked server.但是又有一些公司限制使用Linked server.
  
  我觉得主要是安全性的考量:
  
  1.创建Linked server的时候我们可以直接将用户名和密码存储,访问Linked server的时候就直接使用存储的用户名密码对远程数据库远程访问。但是这样会有一个问题,如果我只允许A用户访问数据库,但是B用户也有可能会访问到数据库,而且有可能会更新远程数据,这个是很危险的。当然我们使用只读权限配置Linked server,但是这样对性能会有影响,如果这个账户没有db_ower权限则无法使用正确的统计信息,可能生成错误的执行计划,导致性能下降。
  
  
  2.微软建议我们使用Windows账户进行访问,但是使用Windows账户访问在其他方面也要做很多配置。 首先如果用到委托的话,就需要创建SPN,在Cluster环境中队SPN Troubleshooting是很困难的。其次在做应用程序开发的时候就需要进行好的规划,将Schema与域账户进行一一对应。第三还需要对这些WINDOWS用户做限制,不能直接访问数据库,如果B/S架构可能需要限制IP访问或者用Application role等等。
  
  针对于上面的两点安全性考虑,其实我们就需要限制特定用户访问Linked server.微软的MSDN中有提到用本地Login和远程Login的Mapping来实现。但是我自己做了个测试发现及时用另外的用户还是可以访问Linked server的:
  
  
  首先创建Linked server:
  /****** Object: LinkedServer [CNLT2FBY4R1] Script Date: 07/23/2012 09:53:36 ******/

EXEC master.dbo.sp_addlinkedserver @server = N'CNLT2FBY4R1', @srvproduct=N'SQL Server'

/* For security reasons the linked server remote logins password is changed with ######## */

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'CNLT2FBY4R1',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'CNLT2FBY4R1',@useself=N'False',@locallogin=N'test1',@rmtuser=N'test',@rmtpassword='########'
  
  
  这里我用本地的test1映射到远程服务器的test,然后我用test1和test3两个账户去删除远程服务器上的两条数据,结果test3失败并且返回如下结果:
  Msg 18456, Level 14, State 1, Line 1

Login failed for user 'test3'.

  看起来上面我们的配置以及生效了。 (这个类似于Oracle DB Link restric user)
  
  
  这个是微软官方的实例:
  使用不同的用户凭据将特定的登录连接到链接服务器
  此示例创建一个映射,以确保只有 Windows NT 用户 Domain\Mary 使用登录 MaryP 和密码 NewPassword 连接到链接服务器Accounts

EXEC sp_addlinkedsrvlogin 'Accounts', 'false', 'Domain\Mary', 'MaryP', 'NewPassword'

  
  关于Linked server可以参考:
  http://msdn.microsoft.com/zh-cn/library/aa213768(v=sql.80).aspx
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-296597-1-1.html 上篇帖子: 【转】SQL Server Management Studio连接服务器时指定端口号 下篇帖子: sql 优化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表