Назначение временного членства в группах Active Directory в Windows Server 2016
Когда-то, когда у меня была «настоящая работа» в сфере ИТ, одна из вещей, которая часто вызывала у меня огорчение, — это временные разрешения. Время от времени кто-нибудь просил меня временно сделать определенного пользователя членом группы Active Directory. Хотя нет ничего сложного в том, чтобы добавить кого-то в группу, этого нельзя сказать об удалении этого человека из группы позже, когда он больше не нуждается в членстве.
Я рано понял, что полагаться на то, что я не забуду отключить временную группу, вероятно, было плохой идеей. Поэтому я помечал в своем календаре напоминания об удалении временного члена группы. Но даже это не было отличным решением. В первый раз, когда я удалил временного члена группы, когда его время истекло, это был только вопрос времени, прежде чем я получил гневный телефонный звонок от начальника отдела, который был расстроен тем, что их временный сотрудник внезапно потерял доступ к любому ресурсу, которым они были. предполагается иметь временный доступ к. Излишне говорить, что стало рутиной звонить людям, чтобы убедиться, что можно удалить временных пользователей из групп.
Сегодня все намного лучше, чем в темные века, когда я был сетевым администратором. Сегодня администратор может решить эту проблему различными способами. Например, администратор может использовать механизм автоматизации для создания автоматизированной задачи, которая отправляет уведомление по электронной почте руководителю отдела за день до истечения срока членства в группе Active Directory. Если предположить, что никто не возражает, этот же автоматизированный процесс может затем обработать удаление группы, когда придет время.
Создание автоматизированной задачи по поддержанию временного членства в группах звучит великолепно, но не всегда практично. В конце концов, для настройки такой задачи потребуется какой-то инструмент оркестровки, а также навыки, необходимые для создания рабочего процесса, который будет выполнять поставленную задачу.
В Windows Server 2016 Microsoft значительно упростила работу администраторов Windows Server, предоставив механизм временного назначения пользователей в группу Active Directory.
Временное членство в группах Active Directory: необходимая инфраструктура
Готовясь к написанию этой статьи, я провел несколько экспериментов, и использование членства во временных группах в одном доменном лесу, похоже, работает. На самом деле, я продемонстрирую эту технику в следующем разделе. Однако в документации Microsoft объясняется, что вы должны использовать два отдельных леса с доверительными отношениями между ними.
Чтобы разблокировать возможность назначать временное членство в группах, вам нужно включить так называемую функцию управления привилегированным доступом. Вы можете сделать это в одном домене (хотя это официально не поддерживается), но Microsoft действительно хочет, чтобы вы создали так называемую среду-бастион.
Простое объяснение состоит в том, что вы можете создать два разных леса Active Directory. Один лес — это тот, который у вас уже есть. Этот лес содержит всех ваших существующих пользователей, группы и т. д. Другой лес — это выделенный административный лес, который максимально защищен. Именно в этом административном лесу вы включаете функцию управления привилегированным доступом.
При использовании этого подхода вы не сможете назначать пользователей на временной основе в существующую группу Active Directory, но вы можете повторно создать эти группы в административном домене, а затем назначать участников на временной основе.
Здесь вы можете узнать все об архитектуре Microsoft Identity Manager и о том, как работает управление привилегированными удостоверениями. Microsoft также предоставила здесь пошаговые инструкции по подготовке вашей среды.
На что это похоже?
Я не хочу тратить ваше время на повторение инструкций, которые предоставляет Microsoft. Однако я хочу показать вам, как выглядит включение управления привилегированным доступом и назначение временного членства в группе. Имейте в виду, что процедура, которую я собираюсь продемонстрировать, предназначена только для лабораторного использования.
Для примера предположим, что я хочу включить управление привилегированным доступом для домена с именем poseylab.com и предоставить пользователю с именем User5 временный доступ к группе под названием Payroll. Предполагая, что необходимая инфраструктура имеется, первым шагом в этом процессе будет включение управления привилегированным доступом для домена. Важно отметить, что этот процесс необратим. Команда PowerShell, которую я бы использовал:
Enable-ADOptionalFeature ‘Privileged Access Management Feature’ -Scope ForestOrConfigurationSet -Target poseylab.com
Вы можете увидеть, как это выглядит на рисунке ниже.
Теперь все, что мне нужно сделать, это добавить пользователя 5 в группу Payroll, а также сообщить PowerShell, как долго членство в группе должно быть действительным.
Самый простой способ сделать это — начать с создания переменной, которая будет содержать ограничение по времени. Для своих целей я создам переменную с именем $TimeLimit и установлю ее на пять минут. Вот команда:
$TimeLimit = New-TimeSpan -Minutes 5
Чтобы добавить User5 в группу Payroll, необходимо добавить параметр -MemberTimeToLive к командлету Add-ADGroupMember таким образом, чтобы он ссылался на переменную $TimeLimit. Вот пример команды:
Add-ADGroupMember -Identity ‘Payroll’ -Members User5 -MemberTimeToLive $TimeLimit
Обычно, если вы хотите просмотреть свойства пользователей группы, вы можете использовать такую команду:
Get-ADGroupMember -Identity Payroll |Where-Object { $_.objectClass -eq "user" } |Get-ADUser -Properties *
Однако, как ни странно, использование этой команды не отображает значение времени жизни среди других свойств члена группы. Скорее всего, это связано с тем, что время жизни связано с объектом группы, а не с объектом пользователя. Тем не менее, просмотр свойств группы с помощью команды, подобной приведенной ниже, не показывает время жизни пользователя:
Get-ADGroupMember -Identity Payroll | Select-Object *
Единственный способ, который я нашел для отображения значения времени жизни члена группы, — это очень специфическая ссылка на свойство ShowMemberTimeToLive. Вот пример:
Get-ADGroup ‘Payroll’ -Property member –ShowMemberTimeToLive
Чтобы показать вам, как это работает, я дважды запустил приведенную выше команду. В первый раз свойство члена, отображаемое в выходных данных команды, показывает значение TTL, равное 267, для пользователя с именем Пользователь 5. Я подождал несколько минут, прежде чем выполнить команду во второй раз. Теперь команда показывает пустую группу, потому что срок жизни пользователя User5 истек. Вы можете увидеть вывод ниже.
Огромная выгода
Возможность добавить пользователя в группу Active Directory на определенный период времени будет огромным преимуществом для перегруженных работой администраторов Active Directory. Тем не менее, включение этой функции требует значительных и необратимых изменений в среде Active Directory.