参考文献

SQL Kerberos的原理及实验

SQL Server native client与sqlcmd单独安装

前言

在上一篇博客SQL Kerberos的原理及实验中讲到了windows验证的两种模式分别是NTLM和Kerberos,那么他们有何区别,在功能上又有何不同。

NTLM是一种比较简单的方法,能够在大部分情况下完成任务。但是它只能完成单跃点认证(只有一个客户端和一个SQL Server服务器)。有些情况下有双跃点(double hop)甚至多跃点的认证需求,这时候就需要用到Kerberos技术。例如,一个用户利用IE浏览器访问有数据库连接脚本的网页,连接配置为使用它自己的Windows账号建立。这时候就需要IIS对这个用户运行IE浏览器的安全上下文(Security Context)首先做认证。通过认证后,再将它传递到SQL Server服务上,SQL Server服务再次认证,确认它有访问SQL Server数据库的权力。这个在IIS服务上完成的身份传递,我们称为双跃点,或者是Delegation(委托)(由客户端委托IIS做身份的传递)。还有一种常见的情况,就是在SQL Server上建立一个链接服务器(Linked Server),当配制安全的时候,选择的是使用当前用户的安全上下文登录目标链接服务器(Be made using the login's current security context)(见图5-24)。在这种选择下,本地的SQL Server也会做一次双跃点,把客户端的安全上下文传递到远端的SQL Server服务器上。

正文

本文主要讲解如何配置delegation,delegation的前提条件就是已经配置好了Kerberos验证,具体方法参考前一篇博客SQL Kerberos的原理及实验。

实验环境还是前面的提到的三台机器,分别是DC->SANZ-W7(做跃迁节点)->WUW-W7。其中SANZ-W7使用local system启动sql server服务,而WUW-W7使用域账户wuwang启动sql server服务。之所以提到这一点,是因为我们在后面会看到使用WUW-W7做跃迁节点的时候,在DC上做delegation查询时会报错,而使用SANZ-W7做跃迁节点却成功,具体报错内容如下:

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

下面我们讲解如何配置delegation,kerberos配置省略。

步骤1:

首先在DC中的computer找到DC,SANZ-W7和WUW-W7,将其配置成“Trust this computer for delegation to any service (Kerberos only)”,如下图所示:

步骤2:

将DC上用户进行delegation查询的域账户administrator的“Account is sensitive and cannot be delegated”属性关闭,也就是不选,如下图所示:

步骤3:

回到DC上,验证SPN已经在了,我的域名是msft,我们在命令行中执行如下命令:

ldifde -d "CN=Users,DC=toppest,DC=com" -l servicePrincipalName -F output.txt

执行结果如下图所示:

然后我们可以在C:\Users\Administrator下找到这个output.txt文件。然后确认SQL Server的启动账号wuwang下,有两个SQL Server的SPN,并且没有其他账户注册相同的SPN。

dn: CN=Wu Wang,CN=Users,DC=msft,DC=com
changetype: add
servicePrincipalName: MSSQLSvc/WUW-W7.msft.com:1433
servicePrincipalName: MSSQLSvc/WUW-W7.msft.com

我在自己的output.txt文件中确实找到了如下信息,但是没有找到sanzhang这个域账户的信息,只有如下所示的spn信息

dn: CN=San Zhang,CN=Users,DC=msft,DC=com
changetype: add

这可能就是使用域账户启动服务和使用local system启动sql server的区别吧。也真是因为在output.txt中没有sanzhang的spn注册信息,所以才有前面提到的不能使用WUW-W7作为跃迁节点。因为DC在进行delegation的时候,最后一个节点必须是域账户注册spn的,也就是能够在output.txt上找到spn信息的节点。

步骤4

在DC的找到wuwang和sanzhang账号,确认它在Delegation这个选项卡里,选择了“Trust this user for delegation to any service (Kerberos only)”,我发现我这里只有wuwang账户有delegation选项,如下图所示:

步骤5

我们在跃迁节点SANZ-W7上建立一个连接服务器Linked Server,用来连接WUW-W7这个服务器,创建连接服务器的sql代码如下所示:

--删除服务器
Exec sp_dropserver WANGWU--创建链接服务器
EXEC  sp_addlinkedserver@server='WANGWU',--被访问的服务器别名 @srvproduct='',@provider='SQLOLEDB',@datasrc='WUW-W7'   --要访问的服务器--测试查询
select * from WANGWU.InsideTSQL2008.HR.Employees
select * from WANGWU.InsideTSQL2008.Sales.Orders

步骤6

我们要进行delegation,相当于是DC通过SANZ-W7来访问WUW-W7,所以我们必须在WUW-W7中将DC的用户administrator添加到windows验证的login中,并且赋予查询测试数据库InsideTSQL2008的权限。

如果你的DC没有安装sql server,你只需要安装sql server native client和sqlcmd就可以连接数据库了,具体方法参考博客:SQL Server native client与sqlcmd单独安装 。

在DC中使用sqlcmd连接跃迁节点SANZ-W7,连接代码如下:

sqlcmd -S SANZ-W7 -E

此时我们去查看SANZ-W7的安全日志(Event View->Windows log->Security),我们会发现有一个从DC\Administrator的访问,并且使用Kerberos验证,如下图所示:

接着我们通过链接服务器连接WUW-W7这个数据库,代码如下图所示:

运行完上述命令以后会得到查询结果,彼此我们去查看WUW-W7的安全日志,会发现多了一条从administrator过来的kerberos验证登陆,跟前面的安全日志一样。

综上,我们就完整了delegation的完整配置。

本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/08/12/2634184.html,如需转载请自行联系原作者

SQL Server配置delegation实现double-hop相关推荐

  1. 干货 | SSMS客户端连接京东云RDS SQL Server配置方法

    干货 | SSMS客户端连接京东云RDS SQL Server配置方法 原创: 于振江 京东云开发者社区 微软SQL Server, Oracle数据库以及MySQL系列占据了关系型数据库市场的绝对份 ...

  2. delegation java_SQL Server配置delegation实现double-hop

    参考文献 前言 在上一篇博客SQL Kerberos的原理及实验中讲到了windows验证的两种模式分别是NTLM和Kerberos,那么他们有何区别,在功能上又有何不同. NTLM是一种比较简单的方 ...

  3. sql server配置连接oracle数据库,MS SQL Server连接Oracle

    MS SQL Server连接Oracle 1.  安装oracle 10G客户端 要访问oracle数据库必须安装oracle客户端.安装oracle客户端有两种方式,即完整安装和立即安装,这两种方 ...

  4. linux编译sqc文件,嵌入式sql c文件编译 sql server配置c环境

    环境:Windows下,已有VC++6.0的编译器. 1.新建c:\esqlc目录. 将SQL SEVER安装盘上的: ①\devtools\include目录 ②\devtools\x86lib目录 ...

  5. 【转载】SQL Server性能调教系列(5)--SQL Server配置

    一:前言 在新安装SQL Server 2005/2008之后,我们需要根据Server软硬件设施对SQL Server做一些配置,以至能够发挥较好的性能.但是在大多数情况下还是采取默认的配置. 二: ...

  6. 为SQL Server配置连接加密

    前言 很多客户在对数据库做安全审计时要求配置连接加密,本文就如何配置加密以及使用证书做一个系统的整理. 连接加密 首先,连接加密不是透明数据加密,很多人经常把两个概念混淆.连接加密是指客户端程序和SQ ...

  7. SQL Server配置支持中文

    转载于:https://www.cnblogs.com/wancy86/p/7235949.html

  8. 配置SQL Server 2005 远程连接(转)

    方法如下:  一.为 SQL Server 2005 启用远程连接 1. 单击"开始",依次选择"程序"."Microsoft SQL Server ...

  9. linux sql server硬件要求,SQL Server On Linux(20)—— SQL Server On Linux性能(6)——针对性能的配置(Linux层面)...

    前面两篇大部分属于Windows和 Linux 平台公用,但是这一篇主要集中在Linux内核层面.因为本系列是Linux上的SQL Server(以2017.2019为主体)的介绍. 完整的列表可以查 ...

最新文章

  1. 《防患未然:实施情报先导的信息安全方法与实践》——3.3 攻击剖析
  2. 创业故事:腾讯的创始人们
  3. [转]Ubuntu下ROS开发环境搭建(QT+ros_qtc_plugin)
  4. 智能家居市场需求矛盾深层原因分析
  5. String练习代码保存
  6. 组成新数python_python练习题
  7. sql顶部菜单项消失_SQL选择顶部
  8. 09月27日 pytorch与resnet(二)
  9. zblog php主题,天兴工作室:zblogphp视频站主题(新增会员中心+盈利系统)
  10. 确定你的电脑是否支持安装64位操作系统
  11. linux 光盘刻录命令,Linux中使用命令进行光盘刻录
  12. android底部滑动出现虚拟按键,Android适配底部虚拟按键的方法详解
  13. □ 影片名:《樱桃小丸子》(36004) 在线播放
  14. 小猪佩奇的4种python玩法,带你趣味学python!
  15. 华为业务板块_华为三大业务介绍
  16. python 椭圆曲线加法_椭圆曲线密码学简介(一):实数域的椭圆曲线及其群运算规则...
  17. 小程序报错errMsg:hideLoading:fail:toast can't be found和hideToast:fail:toast can't be found?解决方案
  18. 官方开源软件包(持续更新中)
  19. 实现基于国密SM3的密钥派生(KDF)功能
  20. 7nm工艺中的后端设计挑战

热门文章

  1. boost::function_types::has_property_tag用法的测试程序
  2. Boost:基于Boost的优先调度器程序
  3. ITK:在不复制数据的情况下,从图像创建样本列表。
  4. OpenCV消除傅立叶域中的周期性噪声的实例(附完整代码)
  5. OpenCV在相机或图像中检测QR码的实例(附完整代码)
  6. OpenCV相交凸intersectConvex的实例(附完整代码)
  7. Qt Creator连接QNX设备
  8. C语言实现queue队列的算法(附完整源码)
  9. OpenGL使用计算着色器进行GPU光线跟踪
  10. C++多态案例三-电脑组装