SQL Server 链接服务器的安全
一.本文所涉及的内容(Contents)
二.背景(Contexts)
当需要用远程服务器数据库和本地进行数据交互的时候(例如导数据等),我们通常会在本地创建一个远程服务器的数据库链接,关于创建创建链接服务器可以参考:SQL Server 创建链接服务器,但是我们很少去关注链接服务器的安全性问题。
为了控制链接服务器的安全性,我们采取的方法是:控制只有某个用户能使用这个链接服务器,实现的效果就如Figure1和Figure2所示,TestLink用户能看到并使用链接服务器:[192.168.1.5],而sa用户却无法看到链接服务器。另外一种安全模式如Figure14和Figure15所示。

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

(Figure2:TestLink用户看到的链接服务器)
三.安全设置(Security Settings)
对于链接服务器的安全,可以实现两种效果:
1) 用户A能看见能使用,B用户不能看见这个链接服务器;
2) 用户A能看见能使用,B用户能看见但是没有权限使用;
(一) 实现效果:用户A能看见能使用,B用户不能看见这个链接服务器;
1) 首先我们填写远程服务器的地址,如果有端口就加入端口,不填表示端口默认是1433

(Figure3:创建链接服务器)
2) 在不考虑安全性的问题的情况下,我通常是使用Figure4的做法来设置帐号和密码的。

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

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

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

(Figure7:创建TestLink用户)

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

(Figure9:设置TestLink用户身份)
6) 分别使用sa和TestLink进行登录就能很直观的看出效果了:sa拥有[192.168.1.5]这个链接服务器的使用权限,而TestLink连看到的机会都没有。效果如Figure1和Figure2所示。
(二) 实现效果:用户A能看见能使用,B用户能看见但是没有权限使用;
1) 假设我们需要在TestLink用户上创建一个链接服务器,但是想sa没有权限使用,如果直接在TestLink用户下创建链接服务器会出现下面Figure10的错误,因为没有权限,权限可以使用Figure11图进行修改。

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

(Figure11:修改TestLink的角色)
2) 现在我们创建一个[192.168.1.48]的链接服务器,设置如Figure12和Figure13所示。

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

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

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

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

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

(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 链接服务器的安全的更多相关文章
- sql server 与oracle数据互导的一种思路--sql server链接服务器
思路:通过在sql server数据库中添加链接服务器,可以远程查询oracle数据库的表环境准备,安装sql server数据库,并安装好oracle驱动,在配置好tnsname文件中配置好orac ...
- 使用sql server 链接服务器
在我们的日常应用场景中经常会碰访问不同服务器上的数据库,即跨服务器访问操作不同的服务器上的SQL Sever数据库, 这个时候Sql Server的链接服务器就非常实用,创建SQL语句如下: --重新 ...
- 如何使用SQL Server链接服务器访问DB2 Server
首先,需要安装Microsoft OLE DB Provider for DB2 下载地址:http://download.microsoft.com/download/B/B/2/BB22098A- ...
- SQL Server 链接服务器连接 SQLite数据库文件
SQL Server数据库允许通过数据库驱动程序连接各类数据库并进行操作.以下是在SQL Server 2012 R2中建立SQLite的链接服务器. 一.下载SQLite数据库的ODBC驱动程序: ...
- 通过存储过程(SP)实现SQL Server链接服务器(LinkServer)的添加
1. 背景 当系统的微服务化做的不是很高的时候,部分功能要通过DB LinkServer 来实现跨 Server 查询,当然,有时候BI抽数据.DBA数据库维护可能也会创建LinkServer. 特别 ...
- SQL Server链接服务器信息查询
exec sp_helpserver --查询链接服务器select * from sys.servers --查询链接服务器链接地址
- 【SQL】链接服务器
最近做项目,需要对两个数据库进行同步操作,所以采用在Server SQL中建立链接服务器方式实现. 链接服务器,可以直接访问/操作其他服务器上的数据库表. 1.连接SQL Server链接服务器 EX ...
- Win7 64位下sql server链接oracle的方法
继上一次mysql同步sql server后,这一次需要将Oracle同步到sql server上来,方案相似,只是在sql server链接oracle的时候费了很多时间. 一.测试环境 本方案实现 ...
- 创建link server链接服务器碰到的问题及解决办法
问题描述 今天在做数据库迁移,然后新建link server(链接服务器)的时候,碰到以下问题. 我的sql 脚本是这样的. 然后,执行的时候就收到以下错误信息. Msg 468, Level 16, ...
随机推荐
- 常用CSS缩写语法总结
使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则如下: 颜色 16进制的色彩值,如果每两位的值相同,可以缩写一半,例如:#000000可以缩写为#000;#336699可以缩 ...
- POJ 1979 题解
Red and Black Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 31722 Accepted: 17298 D ...
- VirtualPathProvider的使用
解决的问题,加载数据库中的UI public class Global : System.Web.HttpApplication { protected void Application_Start( ...
- mysql中生产表格多列统计问题
for Example: select date_format(date,'%Y-%m-%d') as day, count(case when xinghao='a' then 1 end) as ...
- Cannot attach the file ‘{0}' as database '{1}'
EF使用CodeFirst,当使用localDB时,删除mdf文件,会报“Cannot attach the file ‘{0}' as database '{1}'”错误. 解决方法如下: 1.打开 ...
- view的滑动冲突解决方案
一.常见的滑动冲突场景 1.外部滑动方向和内部滑动方向不一致 2.外部滑动方向和内部滑动方向一致 3.上面两种情况的嵌套 二.滑动冲突处理的原则 场景1的处理原则是:当用户左右滑动时,需要让外部的vi ...
- 纯CCS绘制三角形箭头图案
用CSS绘制三角形箭头.使用纯CSS,你只需要很少的代码就可以创作出各种浏览器都兼容的三角形箭头! CSS代码: /* create an arrow that points up */ div.ar ...
- iOS中push视图的时候,屏幕中间会出现一条灰色的粗线的解决方案
因为执行动画需要时间,所以在动画未完成又执行另一个切换动画,容易产生异常.所以在一个方法连续push不同的VC是没有问题的,但是不小心push同一个VC,并且animated为YES,可能多次跳转了 ...
- 获得Map的选择集
ISelection selection = m_hookHelper.FocusMap.FeatureSelection; IEnumFeatureSetup iEnumFea ...
- [转]关于SVN的操作批处理示例
为了一句话:不要动手做机器能够做的事情. 天天工作用svn,更新啥的打开目录啥的动作天天在重复.每次写些命令也蛮无聊的,不说了,看下面: @echo off rem 显示部分 @echo 注 意 事 ...