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

В версии 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

Get-ADForest).ForestMode - узнать функциональный уровень леса AD

Проверьте, включен ли функционал Privileged Access Management в текущем лесу с помощью команды из модуля AD PowerShell :

Get-ADOptionalFeature -filter *| select EnabledScopes

Privileged Access Management отключена

Нас интересует значение параметра EnableScopes , в этом примере оно пустое. Это значит, что функционал Privileged Access Management Feature для домена не включен.

Для его активации воспользуемся командой Enable-ADOptionalFeature с указанием имени домена:

Enable-ADOptionalFeature 'Privileged Access Management Feature' -Scope ForestOrConfigurationSet -Target contoso.com

включить PAM в Active Directory: Enable-ADOptionalFeature 'Privileged Access Management Feature'

Если при выполнении команды появится ошибка “Enable-ADOptionalFeature : The SMO role ownership could not be verified because its directory partition has not replicated successfully with at least one replication partner”, проверьте состояние контроллеров домена и репликации , доступность держателей FSMO ролей . Подтолкните репликацию.

Еще раз выполните команду Get-ADOptionalFeature -filter *| select EnabledScopes и проверьте, что поле EnableScopes теперь заполнено.

Get-ADOptionalFeature -filter *| select EnabledScopes

После активации PAM при добавлении пользователя в группу вы может указывать новый параметр MemberTimeToLive командлета Add-ADGroupMember . В данном параметре указывается время, на которое нужно предоставить доступ пользователя.

Для временного добавления пользователя в группу AD можно использовать только командлеты PowerShell. Временное добавление в группу безопасности из графической консоли ADUC (dsa.msc) не поддерживается.

Удобно задать интервал времени (TTL) с помощью комнадлета New-TimeSpan . Допустим, вы хотите добавить пользователя a.ivanov в группу администраторов домена на 15 минут:

$ttl = New-TimeSpan -Minutes 15
Add-ADGroupMember -Identity "Domain Admins" -Members a.ivanov -MemberTimeToLive $ttl

Не рекомендуется использовать Temporary Group Memberships для предоставления временно доступа в привилегированные доменные группы (Enterprise Admins, Domain Admins и т.д.). Обычно Temporary Group Memberships используется для предоставления доступа в группы доступа к ресурсам. Для предоставления административных прав лучше использовать возможности делегирования AD или PowerShell Just Enough Administration (JEA) .

Проверить оставшееся время, в течении которого пользователь будет состоять в группе поможет командлет Get-ADGroup:
Get-ADGroup “Domain Admins” -Property member –ShowMemberTimeToLive

Get-ADGroup ShowMemberTimeToLive - временый пользователь в группе ad В результатах выполнения команды среди членов групп можно увидеть запись формата <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.

Ранее мы показывали как с помощью klist обновить членство в группах AD без перезагрузки .

klist - время обновления билета kerberos tgt

Также будьте внимательными при использовании гибридных сценариев с синхронизацией групп из on-prem Active Directory в Azure AD через Azure AD Connect. В такой конфигурации нужно учитывать настройки интервала синхронизации с облаком.

Также в 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

Ранее для реализации временного членства в группах AD приходилось использовать динамические объекты, скрипты и задания планировщика или сложные системы (FIM и т.п.). Теперь, в Windows Server 2016/2019 этот удобный функционал доступен из коробки.

EnglishRussianUkrainian