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