Вопрос создания сущностей с временными правами в Active Directory оставался открытым вплоть до появления Windows Server 2016. Хотя нельзя сказать, что этот вопрос решен полностью, однако теперь для реализации временного членства пользователей в группах достаточно прописать одну строку кода в PowerShell. До этого администраторы «выкручивались» создавая динамические объекты, используя утилиты ldifde и ldp.
Зачем пользователю временные права?
Предположим, что вам, как администратору, необходимо уехать в отпуск. Однако ряд рутинных ограниченных дел по администрированию информационных систем предприятия вы можете доверить надежному сотруднику. Этому сотруднику понадобятся администраторские права на ограниченный срок времени.
Важно не забыть по возвращении на рабочее место удалить этого сотрудника из администраторской группы. Чтобы этого не произошло, вы можете добавить его в администраторы на определенный срок, ограничив его администраторские привилегии определенным «временем жизни» — «time-to-live». Однако, как это сделать? В разные времена развития Windows Server решалось это по-разному. Современная серверная система 2016 предоставляет более удобный способ.
Старомодный подход с динамическими объектами
Начиная с Windows Server 2003, разработчики Active Directory сделали возможным добавление динамических объектов. Они стали краеугольным камнем создания и настройки объектов, наделенных временными правами. Администраторы получили возможность создавать временные группы, временные учетные записи.
Особенностью динамического объекта является свойство entryTTL, которое характеризует время жизни созданной сущности. Администратор однозначно определяет этот срок во время создания нужного объекта. По истечении срока, указанного в entryTTL, сущность ликвидируется и полностью очищается. Если необходимо продолжить «жизнь» динамического объекта, администратор имеет возможность изменить значение TTL. Если же при создании такой сущности свойство entryTTL остается не заданным, тогда его значением становится значение по умолчанию принятое в домене.
Эволюция подхода
Серверная система 2003 года не предоставляла удобных графических инструментов для создания временных объектов. Active Directory Users and Computers не содержало таких настроек, поэтому администратору приходилось пользоваться консольной утилитой ldifde. Эта утилита обыкновенно используется для создания, модификации, удаления, экспорта/импорта объектов Active Directory. Поэтому эта утилита отлично подходила для целей создания временного объекта.
Такое положение дел не сохранялось долго. В 3-ем издании книги Active Directory Cookbook под авторством Робби Аллена содержится рецепт создания временного объекта, используя графический интерфейс утилиты ldp для серверных систем 2008 года. Также, в этом издании он сообщает о рецептах создания временных сущностей через оболочку PowerShell и с применением языка VBScript. Однако подход к созданию объекта с временными правами не изменяется — администраторы продолжают использовать для этого динамические объекты.
Пример реализации с помощью LDP GUI и консоли
Прежде всего, понадобится запустить ldp.exe. Это можно сделать из стандартной утилиты «Выполнить».
В главном меню утилиты найдем команду «Подключение». В открывающемся ее подменю выберем «Подключить». А в открывшемся диалоге просто жмем ОК, оставив данные полей по умолчанию.
В том же подменю выбираем пункт «Привязка», что позволит появиться окошку параметров привязки. Оставим тип привязки как «Привязать к текущему пользователю».
Найдем в главном меню опцию «Вид», а в подменю этой опции выбираем пункт «Дерево». В появившемся диалоге определяем корневой элемент леса — DN, базовое расширяемое имя.
В получившемся дереве элементов выделяем нужный узел и создаем для него новый дочерний элемент. В появившемся диалоге прописываем правильное DN, добавляем атрибуты записи. Не забываем указать, что создаем динамический объект: objectClass: dynamicObject и entryTTL: <�нужное значение времени жизни>.
Используя консольный вариант создания временного объекта, администратор может создать отдельный файл формата ldf с содержимым для создания динамического объекта. Затем, в консоли командной строки он должен вызвать утилиту ldifde, передав ей в качестве параметра строку адреса ldf-файла с флагами -i и -f.
Временное членство средствами Active Directory 2016
Разработчики Windows Server 2016 сделали попытку упростить создание сущностей с временными правами. Нельзя сказать, что это у них получилось на все 100%. Теперь не понадобится совершать много лишних действий, но прописывать всего один командлет в PowerShell. Сложность остается в том, что человек склонен допускать немалое количество ошибок во время набора руками простого текста. Набор имени командлета, а также его конфигурирование дополнительными параметрами обойдется администратору немалым количеством нервов.
Кроме того, администратор домена сервера 2016 должен будет единожды установить сервис Privileged Access Management (PAM). Именно этот сервис поддерживает временное членство в группах. Он призван усилить безопасность Active Directory. Устанавливается данный сервис из той же оболочки PowerShell, куда опять же руками придется «вбивать» командлеты.
Пропишем в PowerShell следующее: «Get-ADOptionalFeature -Filter *». Данный командлет позволит увидеть доступные функции, одна из которых это PAM.
Включить сервис PAM позволит командлет «Enable-ADOptionalFeature ‘Privileged Access Management Feature’ -Scope ForestOrConfigurationSet -Target <�название_домена (например, inet.org)>».
Предположим у нас есть пользователь «user», которого необходимо наделить администраторскими правами на небольшой срок — на 5 минут. Для этого его необходимо добавить в группу администраторов домена. Прописываем «Add-ADGroupMember -Identity ‘Администраторы домена’ -Members ‘user’ -MemberTimeToLive (New-TimeSpan -Minutes 5)».
Остается только проверить наличие пользователя «user» в группе «Администраторы домена» и проверить время жизни его администраторских прав. Сделать это можно с помощью команды Get-ADGroup ‘Администраторы домена’ -Property member –ShowMemberTimeToLive. Также, можно заглянуть в свойства пользователя «user» и убедиться, что он стал участником администраторов домена.