参考文献

前言

在上一篇博客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的完整配置。

https://www.cnblogs.com/xwdreamer/category/386469.html

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

  1. SQL Server配置delegation实现double-hop

    参考文献 SQL Kerberos的原理及实验 SQL Server native client与sqlcmd单独安装 前言 在上一篇博客SQL Kerberos的原理及实验中讲到了windows验证 ...

  2. 使用Filezilla Server配置FTP服务器

    使用Filezilla Server配置FTP服务器 一.下载Filezilla  Server 官网网址:https://filezilla-project.org 二.安装Filezilla  S ...

  3. Apache httpd Server 配置正向代理

    背景 代理(Proxy),位于客户端与实际服务端之间,当客户端需要请求服务端内容时,先向代理发起请求,代理将请求转发到实际的服务器,再原路返回.也可以在代理服务器设置缓存,将实际服务器上不常变化的内容 ...

  4. VS 中配置使用Visual SVN系列 四:SVN Server配置和使用

    VS 中配置使用Visual SVN系列 四:SVN Server配置和使用 1.打开 2.创建新的共享资源库 3.创建用户 4.设置用户对资源库的访问权限

  5. Spark入门 - History Server配置使用

    问题描述 在Spark安装成功后,无论是通过spark-submit工具还是通过Intellij IDEA提交任务,只要在Spark应用程序运行期间,都可以通过WebUI控制台页面来查看具体的运行细节 ...

  6. Linux DHCP Server 配置给FIT AP 使用的option

    Linux DHCP Server 配置给FIT AP 使用的option 2010-09-17 09:45:52 标签:Linux DHCP Server option FIT [推送到技术圈] 版 ...

  7. linux启用网卡vlan,LINUX (UBUNTU) 双网卡多VLAN的Server 配置

    ========================================= PPPoE Server 配置 ======================================= 环境 ...

  8. DHCP V6 server配置

    DHCPV6 server 配置 dhcp enable ipv6 dhcpv6 pool HW address prefix 3000::/64  excluded-address 3000::1 ...

  9. 华为交换机dhcp获取不到_华为S7706交换机DHCP Server 配置不成功问题

    f99b4cbdf76d478393de658f5c53f6ca-300x220.jpg (8.78 KB, 下载次数: 22) 华为S7706交换机DHCP Server 配置不成功问题 2016- ...

最新文章

  1. 人工智能助力新材料研发
  2. Python中的collections
  3. idea 两次运行同一main方法 开启两个进程
  4. mysql 线程池 下载_java线程池实现批量下载文件
  5. 机器学习者都应该知道的五种损失函数!
  6. day15 java接口在开发中的作用
  7. qt 右键显示设置界面 后台运行_1.1安装Qt
  8. JinlinOJ 通化邀请赛 E.GCD and LCM 最大公约数最小公倍数 关系
  9. 01-artDialog4.1.7常用整理
  10. VBXtraLib 1.0 下载
  11. r5驱动 索尼exmor_索尼的电脑驱动?
  12. 软件项目演示的注意事项
  13. 01336软件项目管理复习
  14. oracle使用decode实现竖表转横表 (列转行)
  15. 字符串操作——substr用法
  16. OA协同办公系统存在的意义是什么?
  17. IBM暑期实习笔试后总结
  18. Vue 生命周期函数
  19. 使用 zx 编写在 Node 中编写 Bash 脚本
  20. php阿拉伯语字符串,PHP:如何检测输入字符串是否为阿拉伯语

热门文章

  1. jav核心(十四):集合类型操作:Collection、List、Set;Map集合;Iterator迭代器
  2. 像蚂蚁一样工作,像蝴蝶一样生活
  3. SOLIDWORKS保存不同格式的区别
  4. 华为OD机试真题 Java 实现【九宫格游戏 / 三阶积幻方】【2022 Q4 | 200分】
  5. webpack入门与解析(一)
  6. ❤️手把手教你做一个爱情保温软件❤️——python封装.exe文件+爬虫(每日情话系列)
  7. 简谈Apple Pay
  8. linux内核协议栈 IPv4之发送接口 ip_queue_xmi()【TCP使用】
  9. 【转】iPhone通讯录的电话号码加了括号
  10. Linux初入19 Apache服务