В версии Active Directory, представленной в Windows Server 2016, появилась интересная возможность, позволяющая временно добавить пользователя в группу безопасности AD. Данный функционал временного членства в группах AD называется Temporary (Time Based ) Group Membership. Этот функционал можно использовать, когда пользователю нужно на время предоставить некие полномочия, основанные на членстве в группе безопасности AD. По истечению указанного времени пользователь будет автоматически удален из группы (без вмешательства администратора).
В этой статье мы рассмотрим особенности использования временного членства пользователей в группах Active Directory.
Для использования Temporary Group Membership нужно включить новую функцию Active Directory — Privileged Access Management Feature. По аналогии с Active Directory Recycle Bin (позволяет восстанавливать удаленные объекты), вы не сможете отключить PAM после включения.
Убедитесь, что функциональный уровень вашего леса AD —
Windows2016Forest
(или выше):
(Get-ADForest).ForestMode
Проверьте, включен ли функционал Privileged Access Management в текущем лесу с помощью команды из модуля AD PowerShell:
Get-ADOptionalFeature -filter *| select EnabledScopes
Нас интересует значение параметра EnableScopes, в этом примере оно пустое. Это значит, что функционал Privileged Access Management Feature для домена не включен.
Для его активации воспользуемся командой Enable-ADOptionalFeature с указанием имени домена:
Enable-ADOptionalFeature 'Privileged Access Management Feature' -Scope ForestOrConfigurationSet -Target contoso.com
Еще раз выполните команду
Get-ADOptionalFeature -filter *| select EnabledScopes
и проверьте, что поле EnableScopes теперь заполнено.
После активации PAM при добавлении пользователя в группу вы может указывать новый параметр MemberTimeToLive командлета
Add-ADGroupMember
. В данном параметре указывается время, на которое нужно предоставить доступ пользователя.
Удобно задать интервал времени (TTL) с помощью комнадлета New-TimeSpan. Допустим, вы хотите добавить пользователя a.ivanov в группу администраторов домена на 15 минут:
$ttl = New-TimeSpan -Minutes 15
Add-ADGroupMember -Identity "Domain Admins" -Members a.ivanov -MemberTimeToLive $ttl
Проверить оставшееся время, в течении которого пользователь будет состоять в группе поможет командлет Get-ADGroup:
Get-ADGroup “Domain Admins” -Property member –ShowMemberTimeToLive
В результатах выполнения команды среди членов групп можно увидеть запись формата <TTL=187,CN=Andrey A. Ivanov,OU=Users,DC=Contoso,DC=com>. Значение TTL отображается в секундах. Это означает, что данный пользователь добавлен в группу Domain Admins временно. Через 187 секунд он будет автоматически удален из группы.
При этом также просрочивается и его тикет Kerberos. Это реализуется за счет того, что для пользователя с временным членством в группе AD, KDC выдает билет со сроком жизни равным меньшему из оставшихся значений TTL.
Проверить время следующего обновления билета Kerberos можно командой:
Klist
Время следующего обновления билета TGT указано в параметре Renew Time.
Также в AD, начиная с версии Windows Server 2003 можно создавать временные группу AD. Для таких групп используется класс dynamicObject. Автоматическое удаление таких групп выполняется процедурой AD Garbage Collection.
Например, чтобы создать временную группу, которая автоматичски удалится через месяц (2592000=30*24*60*60), используйте следующий код PowerShell:
$OU = [adsi]"LDAP://OU=Groups,OU=SPB,OU=RU,DC=resource,DC=loc"
$Group = $OU.Create("group","cn=FS01_Public_tmp")
$Group.PutEx(2,"objectClass",@("dynamicObject","group"))
$Group.Put("entryTTL","2592000")
$Group.SetInfo()
Откройте атрибуты группы в консоли ADUC. Обратите внимание на атрибут entryTTL. В нем указано через сколько секунд данная группа будет удалена.
Ранее для реализации временного членства в группах AD приходилось использовать динамические объекты, скрипты и задания планировщика или сложные системы (FIM и т.п.). Теперь, в Windows Server 2016/2019 этот удобный функционал доступен из коробки.