日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL Server配置delegation实现double-hop

發布時間:2024/9/21 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL Server配置delegation实现double-hop 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考文獻

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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。