===== Создание Key Distribution Services (KDS) Root Key ===== {{:microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:pasted:20181031-143652.png }} Для возможности использования учётных записей **Group Managed Service Account** (**gMSA**) в инфраструктуре Active Directory должен быть сгенерирован ключ **Key Distribution Services** (**KDS**) **Root Key**. Некоторые подробности о KDS Root Key можно получить в документе [[https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/jj128430(v%3dws.11)|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)'' {{ :microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:pasted:20181031-152030.png }} \\ ==== Создание KDS Root Key ==== Создадим Root Key, разрешив его использование через час после создания, чтобы дать время для репликации ключа между всеми контроллерами Active Directory. Для начала проверим в AD информацию о всех имеющихся ключах с помощью командлета **Get-KdsRootKey**. Если ключа нет, создадим его с помощью командлета **Add-KdsRootKey**. Специфика работы ключа KDS Root Key заключается в том, что, [[https://docs.microsoft.com/en-us/windows-server/security/group-managed-service-accounts/create-the-key-distribution-services-kds-root-key|согласно документа]] созданный ключ можно будет использовать на всех контроллерах домена не ранее, чем __через 10 часов__ после даты, хранимой в атрибуте **msKds-UseStartTime**. Поэтому, чтобы ускорить возможность использования ключа, мы можем сдвинуть дату в прошлое, например, на 9 часов, чтобы ожидание начала действия ключа длилось только 1 час, вместо 10. Таким образом, за счёт этого периода ожидания мы дадим возможность разреплицировать созданный ключ на все контроллеры домена. Add-KdsRootKey -EffectiveTime ((Get-Date).AddHours(-9)) {{ :microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:pasted:20181031-152557.png }} \\ ==== Проверка KDS Root Key ==== Если ключ уже был создан ранее в домене, то мы можем проверить валидность его формата командой Test-KdsRootKey -KeyId (Get-KdsRootKey).KeyId В случае, если ключ был создан только что, обратим внимание на дату и время, что отображаются в **EffectiveTime**. Это время должно быть на 9 часов меньше от времени, когда генерировался ключ, то есть так как мы и указали в параметре **EffectiveTime** командлета **Add-KdsRootKey** {{ :microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:pasted:20181031-152715.png }} В оснастке **Active Directory Sites and Services** включим режим отображения узла служб: "**Show Services Node**" {{ :microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:pasted:20181031-152758.png }} В служебном контейнере **Services** > **Group Key Distribution Service** > **Master Root Keys** найдём объект типа **msKds-ProvRootKey** с идентификатором, который показал нам вывод PS-командлета создания ключа. {{ :microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:pasted:20181031-152921.png }} В значениях атрибутов **msKds-CreateTime** и **msKds-UseStartTime** увидим время создания объекта и время начала возможности его использования. Атрибут **msKds-DomainID** содержит имя сервера, на котором был создан ключ. Чтобы преобразовать значения даты/времени из атрибутов типа **Large Integer**, как например в **msKds-UseStartTime**, можем воспользоваться PS-конструкцией типа: $StartTime = "131824874973370737" [DateTime]::FromFiletime([Int64]::Parse($StartTime)) {{ :microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:pasted:20181031-153022.png }} В данном примере, преобразовывая значение атрибута **msKds-UseStartTime**, мы получим то самое значение **EffectiveTime**, которое выводится командлетом **Get-KdsRootKey**. \\ ==== Несколько KDS Root Key ==== Процедура создания Root Key делается один раз для леса Active Directory. Если командлет **Add-KdsRootKey** выполнялся несколько раз, то может получиться так, что будет создано несколько ключей. Прямого запрета использования такой конфигурации я найти не смог, но и упоминание того, что ключ желательно иметь только мне попадалось на форумах TechNet (ссылку к сожалению не сохранил). ---- Проверено на следующих конфигурациях: ^ Версия ОС ^ | Windows Server 2012 R2 Standard EN (6.3.9600) | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 30.10.2018 17:17 {{tag>Microsoft "Windows Server" "Windows Server 2012 R2" ADDS "Active Directory" gMSA "Group Managed Service Account" PowerShell "Key Distribution Services" KDS "Root Key" "Master Root Key" "Group Key Distribution Service"}} ~~DISCUSSION~~