Реализация представлена в виде представления с SQL-запросом, собирающим всю необходимую информацию для последующей фильтрации.
Результатом выполнения представления является таблица со следующими параметрами:
Настройка отчёта состоит из 3-х этапов:
Для успешного сбора данных в целях безопасности необходимо предварительно сконфигурировать на целевом компьютере, выполняющим запрос, хранение пароля УЗ.
Поскольку Zodiac по умолчанию выполняет скрипты от имени пользователя systemd, для хранения пароля предлагается использовать окружение сервиса zodiac-agent, задав пароль в переменной Password. Для этого необходимо выполнить следующие действия:
...
[Service]
Environment=Password=<пароль_УЗ>
...
где <пароль_УЗ> - пароль доменной учётной записи, от имени которой производится поиск дат истечения паролей пользователей в каталоге.
3. Произвести перезапуск systemd:
systemctl daemon-reload
systemctl restart zodiac-agent
Для подготовки скрипта сбора данных в службе каталога ALD Pro необходимо выполнить следующие действия:
ldapsearch -h <адрес_контроллера> -D "<данные_сервисной_УЗ>" -w $Password "(objectClass=person)" uid krbPasswordExpiration | sed -re 's/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]+)Z/\3.\2.\1 \4:\5:\6/'
где:
ldapsearch -h 172.26.72.162 -D "uid=test1,cn=users,cn=accounts,dc=ald,dc=demo" -w $Password "(objectClass=person)" uid krbPasswordExpiration | sed -re 's/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]+)Z/\3.\2.\1 \4:\5:\6/'
До начала подготовки представления требуется дождаться выполнения настроенного скрипта. Убедиться в выполнении скрипта можно с помощью панели "Статистика" внутри элемента скрипта.
Для подготовки представления необходимо выполнить следующие действия:
Для определения названия таблицы необходимо выполнить следующие действия:
1.1 Авторизоваться под УЗ с правами администратора на компьютере, на который назначен скрипт;
1.2 Перейти в директорию /var/zodiac/agent/scrwd;
1.3 Обнаружить директорию с содержимым привязанного скрипта index.sh;
1.4 Первое число имени директории является приставкой к имени таблицы, которое в дальнейшем необходимо будет отредактировать в SQL-запросе.
Пример:
Есть скрипт, привязанный раннее к компьютеру с именем ETCD-PTR-03
Чтобы узнать приставку таблицы, созданной для сохранения результата выполнения скрипта, авторизуемся под УЗ администратора на данном компьютере и перейдём в указанную директорию.
Путем перебора обнаружим искомую директорию.
Для того, чтобы не перебирать вручную все директории, можно воспользоваться скриптом:
#!/bin/bash
# Перебираем все директории и поддиректории
find . -type d | while read dir; do
# Проверяем наличие файла index.sh в текущей директории
if [ -f "$dir/index.sh" ]; then
# Ищем слово ldapsearch в файле index.sh
if grep -q "ldapsearch" "$dir/index.sh"; then
# Если найдено, выводим название директории
echo "$dir"
fi
fi
done
Внутри скрипта потребуется указать искомое ключевое слово вместо ldapsearch и путь до директории, в которой производится поиск (если скрипт уже не находится в соответствующей директории).
В данном случае искомой приставкой является 26, т.е. названием таблицы будет являться dyn_tbl_script_26.
SELECT
dyn_tbl_script_X1.data ->> 'uid' AS uid,
(DATE_PART('day', ((dyn_tbl_script_X1.data ->> 'krbPasswordExpiration')::timestamp + interval 'X2') - NOW()))::integer AS remaining_days
FROM public.dyn_tbl_script_X1
ORDER BY id ASC
Внутри SQL-запроса заменить следующие приставки:
Перейти в подраздел Столбцы представления и выставить типы для следующих колонок:
Выставить для каждой колонки отображаемые имена (колонка Имя);
Сохранить созданное представление. В случае некорректной настройки появится предупреждение об ошибке.
Для применения представления необходимо выполнить следующие действия: