為何SQL Server登入帳號的Password Hash值變動了呢?

Rock日常管理手上的SQL Server會特別注意一點,就是Logins的帳密保存

因為萬一哪一天某台SQL Server無預警掛點,所有的帳密該如何快速建立呢?

當然可以利用還原master的方式到新機上,這樣就可以一併還原所有帳密。

而第二層保險就是我會每一天蒐集所有SQL Server的Logins的Sid及Password

Hash值,一但遇到問題也可以透過這些蒐集的資料來重建帳密。

而這些資料蒐集附加價值就是我也可以每一天做資料差異比對,就可以知道哪一

些帳號的密碼及設定值被異動過,來快速發現問題。

 

某一天一早我例行性的做了帳號資料的比對,發現某一筆帳號的Password Hash值改變了

我直覺認為有人改了密碼。但是經過我檢查LOG及Audit紀錄都沒發現有變更過密碼的跡象

,且用原來的帳密也都可以正常登入。再仔細一查,發現是雜湊密碼的演算法由SHA-1變

更為SHA-2導致Password Hash值不一樣了。

 

我來重現一下問題,我們常常會需要在移機升級的過程中一併搬移帳號

而下圖中我利用SQL2000的KB246133產生的SP來建出SQL2000帳號轉

移的Script並在一台SQL2012執行該語法,建立Login帳號叫TestUser。

 

如下圖所示該TestUser的Password雜湊演算法回傳值是1(紅色圈選處)

,因此表示該帳號的密碼目前是用SHA-1來演算。

 

此時我利用剛剛建立的帳號TestUser來登入SQL2012,如下面兩張圖所示

 

完成第一次登入後,我們再來看看Password的Hash值是否有變化,如下圖所示

在經過第一次登入後PasswordHash跟PasswordHashAlgorithm的回傳值都不同了

,Password的雜湊演算也由SHA-1變為SHA-2了。

SQL2012以後的密碼都是用SHA-2做雜湊演算,因此只要我們的做第一次登入

後,原來從SQL2000搬過來用SHA-1做雜湊演算會被SQL自動更改為用SHA-2

,所以Password Hash值才會變動了。

 

我是ROCK

rockchang@mails.fju.edu.tw