delegation java_SQL Server配置delegation实现double-hop

article/2025/8/23 7:58:36

参考文献

前言

在上一篇博客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)”,如下图所示:

97d28ab2c16a87a6b09abae6ad21b556.png

步骤2:

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

0c6fa444731993ba9f95d6d4f452ed3f.png

步骤3:

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

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

执行结果如下图所示:

f71781f2fd59eef52268b91b8ea06f65.png

然后我们可以在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选项,如下图所示:

4a9210dd519ef15d27e61d6269b82657.png

步骤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验证,如下图所示:

968439f1c80f53b65423f75293460129.png

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

6c93c4d22ac017a00b110d3675ef9039.png

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

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

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


http://chatgpt.dhexx.cn/article/cM6mupNT.shtml

相关文章

一文讲透hdfs的delegation token

【背景】 前一段时间总结了hadoop中的token认证、yarn任务运行中的token,其中也都提到了delegation token。而最近也遇到了一个问题,问题现象是:flink任务运行超过七天后,由于宿主机异常导致任务失败,继而触发任务的重…

hdfs delegation token 过期问题分析

什么是delegation token delegation token其实就是hadoop里一种轻量级认证方法,作为kerberos认证的一种补充。理论上只使用kerberos来认证是足够了,为什么hadoop还要自己开发一套使用delegation token的认证方式呢?这是因为如果在一个很大的…

Delegation Token

Delegation Token 为什么要用delegation tokenDelegation Token 生命周期NameNode中Delegation Token的实现 Hadoop最初的实现中并没有认证机制,这意味着存储在Hadoop中的数据很容易泄露。在2010年,安全特性被加入Hadoop(HADOOP-4487&#xf…

用委托机制(delegation)来定制行为

用委托机制(delegation)来定制行为 应用程序的委托是Cocoa最重要的设计模式——委托机制的一个例子。 委托机制的想法在于:一个对象能有单一的委托对象,可以在某些事件发生的时候调用它。从委托的角度来看,这就是某种…

设计模式--委托模式( Delegation)

1、模式定义 委托是对一个类的功能进行扩展和复用的方法。它的做法是:写一个附加的类提供附加的功能,并使用原来的类的实例提供原有的功能。 假设我们有一个 TeamLead 类,将其既定任务委托给一个关联辅助对象 JuniorDeveloper 来完成&#x…

委托(delegation)的使用方法

1,组合和委托 委托是一个对象请求另一个对象的功能,是复用的一种常见形式。 2,委托和继承 3,使用委托的好处 从程序的角度来讲:你就可以把委托看成是用来执行方法(函数)的一个“指针” 通俗的…

线性代数:05 实对称矩阵与二次型

本讲义是自己上课所用幻灯片,里面没有详细的推导过程(笔者板书推导)只以大纲的方式来展示课上的内容,以方便大家下来复习。 本章是特征值与特征向量知识的延续,根据谱定理可知实对称矩阵可以正交对角化,对…

矩阵空间、秩1矩阵

今天要介绍一种新的向量空间,即矩阵空间,之前碰到的所有向量空间,都是n维的实数空间,现在我们将矩阵当成向量,比如说将3*3的矩阵看作向量,这相当于从原来的n维为扩展到n*n维,那么明明是矩阵为什…

【线性代数】详解正定矩阵、实对称矩阵、矩阵特征值分解、矩阵 SVD 分解

前言 本文主要针对线性代数中的正定矩阵、实对称矩阵、矩阵特征值分解以及矩阵 SVD 分解进行总结。 如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 正定矩阵 1. 概念 首先正…

【线性代数】矩阵及其特性

【线性代数】矩阵及其特性 写在前面只拉伸不旋转的方向特征值和特征向量相似和对角化正交,对称矩阵 拉伸最大的方向二次型理论从曲线而来合同矩阵正定二次型 参考资料 写在前面 本文是笔者用于复习本科期间所学线性代数,试图用一种更易接受的方式加强记…

对称函数、半正定矩阵(核函数涉及)

一、对称函数 在对称函数中,函数的输出值不随输入变数的排列而改变。从函数的形式中可以看出若输入变数排列后,方程式不会改变。例如对于一个球体.若 φ 为其方位角,θ为其天顶角,r为半径,则大圆距离可以表…

矩阵的秩,特征值和特征向量 矩阵基础概念

矩阵是非常重要而基础的数学知识了。大学课上学线性代数基本就是在学矩阵的各种操作和运算。在深度学习里,几乎所有的参数也都是存放在矩阵中,并通过矩阵来做各种运算。大概把矩阵的基本知识点复习和总结一下。 行列式和矩阵的区别: 行列式和…

c++求矩阵的秩_常见的矩阵分解

矩阵的谱分解(可对角化矩阵——满秩可逆) 谱分解定理:设 为一个n阶可对角化矩阵,A的谱为 其中 的重数为 ,则存在唯一一组s个n阶方阵 ,满足(1) (2) (3) (4) (5) 这些矩阵 称为矩阵A的成分矩阵或主幂等矩阵。一般成分矩阵不一定是Hermite矩阵&a…

线性代数笔记15——矩阵空间和秩1矩阵

矩阵空间 矩阵空间是对向量空间的扩展,因为矩阵的本质是向量,所以与向量空间类似,也存在矩阵空间。 在向量空间中,任意两个向量的加法和数乘仍然在该空间内。类似的,所有固定大小的矩阵也组成了矩阵空间,在…

满秩矩阵与正定矩阵

满秩矩阵 设A是n阶矩阵, 若r(A) n, 则称A为满秩矩阵。但满秩不局限于n阶矩阵。 若矩阵秩等于行数,称为行满秩;若矩阵秩等于列数,称为列满秩。既是行满秩又是列满秩则为n阶矩阵即n阶方阵。 矩阵的秩: 用初…

矩阵转置与矩阵对称性的关系

对称矩阵的定义:对称矩阵是指以主对角线为对称轴,各元素对应相等的矩阵 即的方阵 用两种方式说明矩阵的转置与矩阵自身相乘的结果是一个对称矩阵(S为对称矩阵) 方法一: 假设有3 x 2的矩阵 根据矩阵乘法可知&#xf…

线性代数学习之对称矩阵与矩阵的SVD分解

完美的对称矩阵: 定义: 在上一次线性代数学习之特征值与特征向量 - cexo - 博客园学习了矩阵的特征值和特征向量相关的概念,这次则继续延展上一次的内容,这次则来学习对称矩阵,其标题上加了“完美”俩字,…

实对称矩阵的特征值求法_线性代数之实对称矩阵得相似对角化问题的方法总结...

对于一个实对称矩阵不仅可以通过一个可逆矩阵相似对角化,还可以通过一个正交矩阵来相似对角化。实对称矩阵的不同特征值所对应的特征向量正交,而且实对称矩阵的特征值全为实数。在考研中,我们一定要重点掌握会求一个正交矩阵来相似对角化,这里的正交矩阵是矩阵的彼此正交且…

三阶实对称矩阵的秩一分解(快速计算三阶矩阵特征值特征向量的方法)

定理:三阶实对称矩阵如果存在二重特征根一定可以写成如下形式 其中三个特征值为,,,其中一个特征向量是。根据定义,另一特征向量一定是与和正交的向量。 通过上述方法,可以快速计算出三个特征值和一个特征向…

为什么非零实对称矩阵一定是正定矩阵

从酉相似的角度证明实对称矩阵一定可以对角化,对角化之后对应的二次型一定大于0,因此实对称矩阵一定是正定矩阵。 第一张图说明了一个方阵A必定酉相似于一个上三角矩阵T,T的对角线元素就是A的特征值。且这里可以无论特征值重复与否。 第二张…