[Windows][SQL]Managed Service Accounts on Windows Server 2012

[Windows][SQL]Managed Service Accounts on Windows Server 2012

在去年為了測試 SQL Server 2012 AlwaysON 的功能,因此配合 Windows Server 2008R2 的 AD 網域,使用 MSA ( Managed Service Accounts ) 的帳號來啟動 SQL Server,簡化一些管理上的問題,當時也因此寫了一篇測試文章 ( [SQL]Managed Service Accounts )。

 

最近因為工作調動的關係,已經沒有 Lab 環境可以測試,因此花了一點錢買了 RAM & SSD,重新用 PC 建立新的測試環境。因此想說既然要重新建立,那麼就直接建立一個新的 Windows Server 2012 來建立 Lab AD 的環境。當 AD 建立完畢之後,因為剛好要建立一個 SQL Server Mirroring 的測試環境,於是就先在 AD 下面建立一個 SQL2012 的 MSA 帳號,跟 Windows 2008R2 的方式,當我們需要建立 MSA 帳號,就必須要啟動 PowerShell 來做建立:

image

 

可是同樣的指令在 Windows 2008 R2 的 AD 上面就可以正常運作,因此當下第一個想法,會不會是 Windows 2012 又改了甚麼東西,才導致有這樣的問題。於是在 Technet 網站上找到一篇文章:「受管理的服務帳戶的新功能」,這篇雖然只有大概的說明服務帳戶的功能,但在這一篇文章之下,還有另外一篇更重要但沒有翻譯的文章:「Getting Started with Group Managed Service Accounts」,從文章之後我們可以找到另外一個關鍵點,MSA 帳號在 2012 已經變成 gMSA ( Group Managed Service Accounts ),而關於他的差異,我引用網路上一段敘述來介紹:

「gMSAs provide a single identity solution for services running on a server farm」

但因為要能這樣使用的話,則首先要在網域內建立部屬Master Root Key」之後,才可以建立服務帳戶。既然知道問題可能原因,那我就先找找看 Master Root Key 存放和建立的資料了。

 

首先我們先開啟「Active Directory 站台及服務」,預設是看不到 Master Key 的資訊,因此我們要在「檢視」的選單上選擇「顯示服務節點

image

 

開啟之後,果然在 「Services」→「Group Key Distribution Service」→「Master Root Keys」沒有任何資料,因此看起來問題應該是在這裡,接下來就看要如何來產生。

image

 

原本,我按照 Technet 上文章的介紹,利用 PowerShell 的指令「Add-KdsRootKey -EffectiveImmediately」來做新增,但就算新增成功之後,再按照原本的方式,採用 PowerShell 的指令「New-ADServiceAccount」 來建立 MSA,但依然沒有成功,於是再找資料的時候才發現,原來當我們使用 Add-KdsRootKey 的時候,預設是在建立好之後,還需要再等 「10 小時」的同步時間之後,才可以建立 MSA 帳號,即便我整個網域內只有一台 DC Server,又沒有跟其他網域有任何信任關係,還是要等那麼長的時間。因此我把剛剛建立的那個 Master Root Key 刪除,再重新下指令,這次更改建立 Master Root Key 的指令,調整如下:

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

 

image

 

果然把時間縮短 10 個小時的限制之後,就可以順利完成建立帳號的工作,那接下來就跟之前版本一樣可以拿這個帳號到主機上設定來使用了。