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, ...
随机推荐
- 【转】浅谈truncate的使用
delete 操作不会改变表的高水标记,因此如果我们对一个表插入1000万条数据,然后再回滚(对insert操作做回滚相当于相应地做delete操作),会使表的高水标记增长得很高,这时虽然我们操作的表 ...
- C#与C/C++的交互zz
C#与C++交互,总体来说可以有两种方法: 利用C++/CLI作为代理中间层 利用PInvoke实现直接调用 第一种方法:实现起来比较简单直观,并且可以实现C#调用C++所写的类,但是问题是MONO构 ...
- swift-闭包(代码块)
语法 通用的语法 {(parameters) -> return type in statements } e.g let studname = { println("Welcome ...
- [RxJava^Android]项目经验分享 --- 异常方法处理
简单介绍一下背景,最近RxJava很火,我也看来学习一下,计划在项目的独立模块中使用它.使用过程中遇到很多问题,在这里记录分享一下.可能有使用不当的地方,大家多多包涵.对于RxJava的基本概念和功能 ...
- overflow:hidden清除浮动原理
overflow:hidden的意思是超出部分去掉,如果父元素height为auto,内部元素浮动,势必会将内部元素全部隐藏,故计算出内部浮动高度顺便清除浮动.
- Dertouzos (5750)
Dertouzos 题意: 就是给一个n和一个d,问有多少个小于n的数的最大因子是d. 分析: 如果一个数是质数,又和d互质,它们的乘积在范围内的话显然是满足条件的, 如果这个质数和d不互质,那么如果 ...
- QComboBox的activated与currentIndexChanged的区别
void activated ( int index ) void activated ( const QString & text ) 信号activated是只要单击选择框即使所选内容选择 ...
- fastJson使用
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,由阿里巴巴的工程师开发. 主要特点: 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson ...
- git配置ssh(github)
[参考官方文档] SSH keys are a way to identify trusted computers, without involving passwords. The steps be ...
- Web方式预览Office/Word/Excel/pdf文件解决方案
最近在做项目时需要在Web端预览一些Office文件,经过在万能的互联网上一番搜索确定并解决了. 虽然其中碰到的一些问题已经通过搜索和自己研究解决了,但是觉得有必要将整个过程记录下来,以方便自己以后查 ...