託管服務賬戶

定期修改賬戶的密碼是個好習慣,也可以確保安全性。通常活動目錄中的賬戶都會要求定期修改密碼。對於普通用戶賬戶來說這個並沒有什麼問題,但是對於用於服務運行的賬戶來說定期修改密碼會增加很多維護成本。所以,通常管理員會將這些賬戶勾選密碼永不過期,這樣無疑增加了風險。

Windows中有託管服務賬戶Managed Service Account這個功能。可以把密碼維護的工作交由Windows自動管理,即保證了安全也降低了維護成本。

創建服務賬戶首先要在AD中生成一個Microsoft Group Key Distribution Service的根密鑰。這裏用一個網上很流行的命令,根據當前時間減去10小時設定密鑰的有效時間。創建完成會顯示密鑰的GUID。

Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10)) -Verbose

如果看不到圖,請點我

接下去就可以創建用於服務運行的賬戶了。其中DNSHostName可以設置成service.contoso.lab的樣子。這裏我爲了好辨認,直接配置了計算機FQDN。另外,需要指定哪些計算機可以使用這個服務賬戶。可以是安全組,也可以是計算機賬戶

New-ADServiceAccount msa-client -DisplayName "MSA Client Test" -DNSHostName client-233.contoso.lab -PrincipalsAllowedToRetrieveManagedPassword client-233$

添加完畢後可以使用命令驗證一下。

Test-ADServiceAccount msa-client | fl

同時在AD的用戶和計算機管理單元裏也能直接看到這個剛剛創建出來的託管服務賬戶。

接下去,我們就使用這個賬戶來運行Windows Time服務。直接在服務管理裏,把登錄賬戶改成域中的msa-client賬戶,密碼留空。

系統會自動把它加到組策略的Log On As A Service的權限表裏。並提示,新的登錄名直到下次服務啓動後才生效。

但是,我發現這樣仍然不能啓動Windows Time服務。

經過查證,需要將這個賬戶加入Generate Security audit的用戶權限分配中。根據不同的服務,系統會有不同的權限要求,其它服務不一定需要這個權限。添加完畢後,就能正常啓動Windows Time服務了。

如果要把服務改回Local System Account運行的時候,你會發現整個頁面都變灰了,無法修改。

這個時候就要用到傳統的sc命令了,雖然老,但是很有效。

sc config w32time obj=".\LocalSystem"

重啓服務後,恢復原樣。