Заметки о Windows и других программных продуктах Microsoft...

Настройка временных полномочий в Active Directory

Настройка временных полномочий в Active Directory

Зачастую права доступа в Active Directory требуется предоставить временно, на определенный срок. Для того, чтобы избежать необходимости контролировать срок действия выданных полномочий, их можно создавать изначально временными. Для создания временных полномочий в AD есть специальные механизмы, о которых и пойдет речь в статье.

Начнем с динамических объектов.

Динамические объекты

Начиная с Windows Server 2003 службы Active Directory поддерживают создание динамических записей. Динамическая запись представляет из себя объект, одним из свойств которого является время жизни (time-to-live, TTL). Срок жизни объекта устанавливается при его создании и затем автоматически уменьшается, а по истечении срока объект автоматически удаляется.

Это свойство динамических объектов можно использовать для назначения временных полномочий. Например, можно создать группу безопасности с определенным TTL и выдать ей требуемые права, а затем добавить в группу пользователей. Как только TTL подойдет к концу —  группа исчезнет, а пользователи автоматически потеряют выданные полномочия.

Создать такую ″временную″ группу можно исключительно из командной строки, так как графические оснастки типа ADUC, ADSIEdit или LDP не умеют работать с динамическими объектами. Проще всего воспользоваться утилитой командной строки ldifde.  Для этого сначала создаем текстовый файл с расширением ldf и добавляем в него следующие строки:

dn: cn=Temp, cn=Users, dc=domain, dc=local
changeType: add
objectClass: group
objectClass: dynamicObject
entryTTL: 900
SAMAccountName: Temp

Затем открываем консоль cmd и выполняем команду:

ldifde -i -f C:\temp\dynamic.ldf

создание динамического объекта из командной строки

 

В результате в контейнере Users создастся группа Temp с временем жизни 15 минут (900 сек). Время жизни группы хранится в атрибуте entryTTL и при необходимости его можно изменить, например увеличить или уменьшить. По истечении заданного времени группа просто исчезнет.

свойства динамического объекта

 

При желании можно создать динамический объект и с помощью PowerShell. Стандартные командлеты AD не умеют работать с динамическими объектами, поэтому придется использовать ADSI. Процедура создания группы с помощью PowerShell будет выглядеть примерно так:

$OU = [adsi]″LDAP://cn=users,DC=domain,DC=local″
$Group = $OU.Create(″group″,″cn=Temp″)
$Group.PutEx(2,″objectClass″,@(″dynamicObject″,″group″))
$Group.Put(″entryTTL″,″900″)
$Group.SetInfo()

создание динамического объекта с помощью PowerShell

 

Примечание. У атрибута entryTTL имеются два значения по умолчанию. Первое значение равно 86400 секунд (1 день). Атрибут entryTTL принимает это значение в том случае, если объект был создан без явного указания времени жизни. Второе значение равно 900 секунд (15 минут). Это минимальное значение, которое может принимать entryTTL. Если указать время жизни меньше, то объект создастся без ошибок, но entryTTL будет равен 900.

Более подробную информацию о динамических объектах можно найти на MSDN, а мы переходим к следующему пункту.

Временное членство в группах

Временное членство в группах (Temporary Group Membership) — это новая фича, появившаяся в Windows Server 2016 и являющаяся частью функционала по управлению привилегированным доступом (Privileged Access Management, PAM). По умолчанию PAM не активен и первое, что требуется сделать — это включить его. Сделать это можно с помощью PowerShell командлета Enable-ADOptionalFeature, например:

Enable-ADOptionalFeature -Identity ″Privileged Access Management Feature″ -Scope ForestOrConfigurationSet -Target ″domain.local″

Обратите внимание, что активация PAM является необратимой, отключить его невозможно. Проверить результат можно командой:

Get-ADOptionalFeature -Filter {Name -like ″Privileged*″}

Включение Privilege Access Management

 

После включения PAM у командлета Add-ADGroupMember появляется параметр MemberTimeToLive, с помощью которого можно задавать время членства в группе. Для примера добавим пользователя TempAdmin в группу Domain Admins на 10 минут:

$TTL = New-TimeSpan -Minutes 10
Add-ADGroupMember -Identity ″Domain Admins″ -Members TempAdmin -MemberTimeToLive $TTL

Затем проверим состав группы командой:

Get-ADGroup -Identity ″Domain Admins″ -Properties Member -ShowMemberTimeToLive

Как видите, TempAdmin входит в группу Domain Admins, а его TTL составляет 600 секунд. По истечении этого времени проверим группу еще раз и убедимся в том, что он удален из группы.

настройка временного членства в группе

 

Примечание. При окончании TTL заканчивается и срок действия билета Kerberos пользователя, поскольку для пользователей с временным членством в группах AD выдается билет со сроком жизни, равным меньшему из оставшихся значений TTL.

В заключение скажу, что, на мой взгляд, функционал временного членства в группах более удобен в использовании, чем динамические объекты. Однако для его работы необходим контроллер домена Windows Server 2016, а также требуется уровень леса не ниже Server 2016, тогда как поддержка динамических объектов появилась еще в Windows Server 2003.  В любом случае оба способа успешно решают проблему предоставления временного доступа, а какой из них использовать — решайте сами.

 
 
Комментарии

Пока нет комментариев.