Содержание

Создание Key Distribution Services (KDS) Root Key

Для возможности использования учётных записей Group Managed Service Account (gMSA) в инфраструктуре Active Directory должен быть сгенерирован ключ Key Distribution Services (KDS) Root Key. Некоторые подробности о KDS Root Key можно получить в документе Create the Key Distribution Services KDS Root Key.


Необходимый уровень привилегий

Создание Root Key требует полномочия уровня Domain Administrator (в корневом домене верхнего уровня) или Enterprise Administrator. Если требуется создание ключа для администратора в дочернем домене, то на время учётную запись с правами Domain Administrator из дочернего домена придётся добавить в группу Enterprise Admins в корневом домене (после изменения уровня прав не забываем перелогиниться на контроллере домена). Определиться с необходимыми полномочиями важно на самом раннем этапе, так как в случае нехватки полномочий при попытке создания Root Key мы можем получить трудную для понимания ошибку типа Add-KdsRootKey : The request is not supported. (Exception from HRESULT: 0x80070032)


Создание KDS Root Key

Создадим Root Key, разрешив его использование через час после создания, чтобы дать время для репликации ключа между всеми контроллерами Active Directory.

Для начала проверим в AD информацию о всех имеющихся ключах с помощью командлета Get-KdsRootKey.

Если ключа нет, создадим его с помощью командлета Add-KdsRootKey.

Специфика работы ключа KDS Root Key заключается в том, что, согласно документа созданный ключ можно будет использовать на всех контроллерах домена не ранее, чем через 10 часов после даты, хранимой в атрибуте msKds-UseStartTime. Поэтому, чтобы ускорить возможность использования ключа, мы можем сдвинуть дату в прошлое, например, на 9 часов, чтобы ожидание начала действия ключа длилось только 1 час, вместо 10. Таким образом, за счёт этого периода ожидания мы дадим возможность разреплицировать созданный ключ на все контроллеры домена.

Add-KdsRootKey -EffectiveTime ((Get-Date).AddHours(-9))


Проверка KDS Root Key

Если ключ уже был создан ранее в домене, то мы можем проверить валидность его формата командой

Test-KdsRootKey -KeyId (Get-KdsRootKey).KeyId

В случае, если ключ был создан только что, обратим внимание на дату и время, что отображаются в EffectiveTime. Это время должно быть на 9 часов меньше от времени, когда генерировался ключ, то есть так как мы и указали в параметре EffectiveTime командлета Add-KdsRootKey

В оснастке Active Directory Sites and Services включим режим отображения узла служб: «Show Services Node»

В служебном контейнере Services > Group Key Distribution Service > Master Root Keys найдём объект типа msKds-ProvRootKey с идентификатором, который показал нам вывод PS-командлета создания ключа.

В значениях атрибутов msKds-CreateTime и msKds-UseStartTime увидим время создания объекта и время начала возможности его использования. Атрибут msKds-DomainID содержит имя сервера, на котором был создан ключ. Чтобы преобразовать значения даты/времени из атрибутов типа Large Integer, как например в msKds-UseStartTime, можем воспользоваться PS-конструкцией типа:

$StartTime = "131824874973370737"
[DateTime]::FromFiletime([Int64]::Parse($StartTime))

В данном примере, преобразовывая значение атрибута msKds-UseStartTime, мы получим то самое значение EffectiveTime, которое выводится командлетом Get-KdsRootKey.


Несколько KDS Root Key

Процедура создания Root Key делается один раз для леса Active Directory. Если командлет Add-KdsRootKey выполнялся несколько раз, то может получиться так, что будет создано несколько ключей. Прямого запрета использования такой конфигурации я найти не смог, но и упоминание того, что ключ желательно иметь только мне попадалось на форумах TechNet (ссылку к сожалению не сохранил).


Проверено на следующих конфигурациях:

Версия ОС
Windows Server 2012 R2 Standard EN (6.3.9600)

Автор первичной редакции:
Алексей Максимов
Время публикации: 30.10.2018 17:17