Настройка динамических объектов
Эллес поддерживает работу с динамическими объектами, включая инструменты управления и настройки времени жизни (TTL) на уровне леса доменов.
Общие сведения
В Эллес реализован механизм динамических записей каталога, представляющих собой объекты с ограниченным сроком жизни (TTL, Time-To-Live). Значение TTL хранится в атрибуте entryTTL и определяет период существования объекта в каталоге.
При создании или обновлении динамического объекта на основе значения entryTTL вычисляется значение атрибута msDS-Entry-Time-To-Die, задающее абсолютное время истечения срока жизни объекта. С течением времени оставшийся срок жизни объекта автоматически уменьшается; при достижении нуля объект удаляется из каталога без вмешательства администратора.
Клиентские приложения могут продлевать срок жизни объекта, обновляя значение entryTTL, что приводит к пересчету значения msDS-Entry-Time-To-Die, позволяя поддерживать актуальность временных данных.
Данная функциональность используется для хранения временных или автоматически обновляемых данных, которые должны удаляться без участия администратора, если они перестают быть актуальными.
Реализация в Эллес
Динамические объекты создаются с помощью утилиты samba-tool с возможностью указания для них времени жизни (TTL). Значение TTL сохраняется в атрибуте entryTTL, после чего вычисляется соответствующее значение msDS-Entry-Time-To-Die.
Динамические объекты могут создаваться во всех разделах каталога, включая пользовательские, за исключением разделов схемы (Schema) и конфигурации (Configuration).
При создании динамического объекта:
-
если параметр TTL указан явно, используется переданное в нем значение (записывается в атрибут
entryTTL); -
если параметр не указан, применяется значение по умолчанию, определенное параметром
DynamicObjectDefaultTTL(хранится в атрибутеmsDS-Other-SettingsобъектаCN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=<domain>,DC=<tld>; значение по умолчанию —86400секунд, 24 часа); -
если указанное значение TTL меньше допустимого минимального значения, используется значение параметра
DynamicObjectMinTTL(хранится в атрибутеmsDS-Other-SettingsобъектаCN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=<domain>,DC=<tld>; значение по умолчанию —900секунд, 15 минут).
После создания динамического объекта на основе значения entryTTL вычисляется значение атрибута msDS-Entry-Time-To-Die, которое хранит абсолютное время удаления объекта.
Автоматическое удаление
Для удаления устаревших динамических объектов доработан механизм сборки мусора (garbage collection), выполняющий периодическую очистку каталога.
Динамический объект удаляется, если в момент запуска сборщика мусора (garbage collector):
-
текущее системное время больше или равно значению атрибута
msDS-Entry-Time-To-Die; -
у объекта отсутствуют дочерние объекты.
Если у родительского и дочернего динамического объекта совпадает значение msDS-Entry-Time-To-Die, сначала удаляется дочерний объект, а затем — родительский.
Удаление выполняется полностью, без помещения объекта в корзину каталога и без создания записи в состоянии tombstone.
Механизм сборки мусора запускается независимо на каждом контроллере домена и удаляет динамические объекты при выполнении заданных условий.
Репликация и обработка
Атрибуты динамических объектов, включая entryTTL и msDS-Entry-Time-To-Die, реплицируются между контроллерами домена аналогично атрибутам статических объектов.
Операции работы с каталогом (поиск, чтение, добавление и изменение) поддерживают динамические объекты без каких-либо отличий от статических.
Эллес обеспечивает уникальность имен объектов независимо от их типа. Невозможно создать статический объект с именем, совпадающим с именем существующего динамического объекта, и наоборот.
Ограничения и особенности
В Эллес действуют следующие ограничения:
-
запрещено создавать статические объекты в качестве дочерних объектов динамического объекта;
-
запрещено изменять тип существующего объекта (статический → динамический);
-
при удалении динамического объекта удаляются все ссылки на него из связанных (linked) атрибутов других объектов;
-
ссылки на объект в несвязанных (non-linked) атрибутах сохраняются.
Дополнительно реализован механизм корректировки времени жизни родительских объектов. Если дочерний динамический объект имеет большее значение msDS-Entry-Time-To-Die, чем родительский, значение времени жизни родительского объекта автоматически увеличивается до максимального значения времени жизни потомков плюс одна секунда. Это предотвращает удаление родительского объекта раньше его дочерних объектов.
Работа с динамическими объектами
Управление динамическими объектами осуществляется с помощью:
-
группы подкоманд
samba-tool dynamicobject(см. раздел «Администрирование динамических объектов»); -
стандартных подкоманд для работы с объектами следующих классов при использовании ключа
--dynamicobject:-
подразделения (см. раздел «Администрирование подразделений (OU)»);
-
компьютеры (см. раздел «Администрирование компьютеров»);
-
пользователи (см. раздел «Администрирование пользователей»);
-
группы (см. раздел «Администрирование групп»);
-
контакты (см. раздел «Администрирование контактов»).
-
В примере создается временный пользователь для тестирования доступа к ресурсам.
Пользователь создается как динамический объект и автоматически удаляется по истечении заданного срока жизни:
-
Создание динамического объекта пользователя со сроком жизни 1 час:
samba-tool dynamicobject add user TempAccessUser \ --ttl=3600Пользователь
TempAccessUserбудет автоматически удален из каталога через 3600 секунд. -
Проверка того, что созданный пользователь присутствует в списке динамических объектов в каталоге:
samba-tool dynamicobject list
Команда выводит DN всех динамических объектов, существующих в каталоге.
-
Проверка значений атрибутов, связанных со сроком жизни объекта:
samba-tool dynamicobject show CN=TempAccessUser,CN=Users,DC=<domain>,DC=<tld> \ --attributes=entryTTL,msDS-Entry-Time-To-DieАтрибут
entryTTLпоказывает оставшийся срок жизни объекта, аmsDS-Entry-Time-To-Die— момент времени, когда объект будет удален. -
Если временный доступ требуется сохранить дольше, можно увеличить значение TTL:
samba-tool dynamicobject edit CN=TempAccessUser,CN=Users,DC=<domain>,DC=<tld>
В открывшемся редакторе изменить значение атрибута
entryTTLи сохранить изменения. -
После изменения TTL можно повторно проверить параметры объекта:
samba-tool dynamicobject show CN=TempAccessUser,CN=Users,DC=<domain>,DC=<tld> \ --attributes=entryTTL,msDS-Entry-Time-To-Die -
Если требуется немедленно удалить объекты с истекшим сроком жизни, можно запустить очистку вручную:
sudo samba-tool dynamicobject cleanup
После истечения TTL пользователь TempAccessUser будет автоматически удален механизмом сборки мусора.
Управление настройками срока жизни динамических объектов в лесу
Управление настройками срока жизни динамических объектов осуществляется с помощью следующих подкоманд утилиты samba-tool:
-
получение текущего значения времени жизни динамических объектов по умолчанию:
samba-tool dynamicobject ttl defaultttl
или:
samba-tool forest dynamicobject defaultttl
-
изменение значения времени жизни динамических объектов по умолчанию:
samba-tool dynamicobject ttl defaultttl <seconds>
или:
samba-tool forest dynamicobject defaultttl <seconds>
-
получение текущего минимального значения времени жизни динамических объектов:
samba-tool dynamicobject ttl minttl
или:
samba-tool forest dynamicobject minttl
-
изменение минимального значения времени жизни динамических объектов:
samba-tool dynamicobject ttl minttl <seconds>
или:
samba-tool forest dynamicobject minttl <seconds>
Допустимый диапазон значений для обоих параметров составляет от 1 до 31557600 секунд (до одного года). При изменении параметров новые значения начинают применяться к создаваемым динамическим объектам.
| Подробнее см. в разделах «Администрирование динамических объектов» и «Администрирование леса». |
Настройка периодичности автоматической очистки динамических объектов
Периодичность проверки динамических объектов на истечение срока жизни настраивается с помощью параметра dynamic object:check_deleted_interval в разделе [global] файла конфигурации smb.conf.
Параметр задает интервал (в секундах), через который выполняется проверка динамических объектов и удаление объектов с истекшим сроком жизни. Значение по умолчанию составляет 20 секунд.
Пример изменения значения:
[global]
...
dynamic object:check_deleted_interval = 60
...