這個 IT 專業人員文章描述如何使用 Windows PowerShell,在 Windows Server 2012 或更新版本中產生群組「受管理的服務帳戶」密碼,以便在網域控制站上建立「Microsoft 金鑰發佈服務」(kdssvc.dll) 的根金鑰。
網域控制站 (DC) 必須有根金鑰,才能開始產生 gMSA 密碼。 網域控制器會最長等待 10 小時(從建立時算起),以允許所有網域控制器在建立 gMSA 之前聚合它們的 AD 複寫。 長達 10 小時的等待是一項安全措施,用來避免在環境中的所有 DC 都能夠回應 gMSA 要求之前就產生密碼。 當 gMSA 主機嘗試擷取密碼時,太早嘗試使用 gMSA 可能會失敗,因為可能尚未將金鑰複寫到所有網域控制站。 在使用具有有限複寫排程的 DC,或發生複寫問題時,也會發生 gMSA 密碼擷取失敗。
注意
刪除和重新建立根金鑰可能會導致因為金鑰快取而刪除後,舊金鑰繼續使用的問題。 如果重新建立根金鑰,則應在所有網域控制站上重新啟動金鑰發佈服務 (KDC)。
Domain Admins 或 Enterprise Admins 群組的成員資格或同等級的群組,是完成此程序所需的最低要求。 如需使用適當帳戶和群組成員資格的詳細資訊,請參閱 本機和網域預設群組。
注意
若要執行用來管理群組「受管理的服務帳戶」的 Windows PowerShell 命令,必須有 64 位元架構。
使用 Add-KdsRootKey Cmdlet 來建立 KDS 根金鑰
在 Windows Server 2012 或更新版的網域控制站上,從工作列執行 Windows PowerShell。
在 Windows PowerShell Active Directory 模組的命令提示字元中,輸入下列命令,然後按 ENTER 鍵:
Add-KdsRootKey -立即生效
提示
生效時間參數可用來在使用金鑰前,給予將金鑰傳播到所有 DC 的時間。 使用 Add-KdsRootKey -EffectiveImmediately 時,會將根金鑰新增到目標 DC,並由 KDS 服務立即使用。 不過,其他網域控制站將必須等到複寫成功後,才能使用該根金鑰。
KDS 根金鑰會儲存在容器 CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=<forest name>;
中的 Active Directory 中。 這些金鑰擁有屬性 msKds-DomainID,其會連結到建立物件的網域控制站之電腦帳戶。 當此網域控制站遭到降級並從網域中移除時,此值會參考電腦帳戶的墓碑狀態。 您可以忽略損壞的值,因為它只是用來協助管理員追蹤剛建立的物件。 您也可以變更屬性值,並將其指向樹系中另一個網域控制站的電腦物件。
對於只有一個 DC 的測試環境,您可以使用下列程序來建立 KDS 根金鑰,並設定一個過去的時間做為開始時間,以避開金鑰產生時的等候間隔。 請確認 4004 事件已記錄在 KDS 事件記錄檔中。
在測試環境中建立立即生效的 KDS 根金鑰
在 Windows Server 2012 或更新版的網域控制站上,從工作列執行 Windows PowerShell。
在 Windows PowerShell Active Directory 模組的命令提示字元中,輸入下列命令,然後按 ENTER 鍵:
$a=獲取日期
$b=$a.AddHours(-10)
Add-KdsRootKey -EffectiveTime $b
或使用單一命令
Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10))