Отлаженный вариант построения хранилища данных для поиска фактов авторизации и времени использования корпоративных рессурсов (ПК, терминальных серверов).
Необходимо ответить на запрос службы экономической безопасности по подключениям кокретного пользователя к ресурсам компании (ПК, терминальным сервера) за период пандеми COVID-19.
Вариант с анализом журналов межсетевого экрана (далее МСЭ) подключения пользователя через ПКЗИ-ключ не предоставит полноценной информации. Так как МСЭ будет записывать в журнал инфомацию о подключениях только из дома (через МСЭ). Если же пользователь придёт в офис и пройдёт авторизацию на любом ПК, то информация о соединении не попадёт в журнал учёта соединений МСЭ. Потому что подключение не будет идти через ПКЗИ, это сеанс внутри корпоративной сети. Для предоставления полной информации необходимо анализировать журналы контроллеров домена Windows (сервера с установленной ролью AD DS). В журналах серверов AD DS будет содержаться вся информация о прохождении пользователем авторизации в рамках всего домена компании.
Необходимо проанализировать архив файлов журналов серверов AD DS (формат EVTX) за определенный период (с 09.2020 по 09.2021) и найти к каким ПК и серверам подключался конкретный пользователь.
В данном конкретном случае ETL процесс разбит на подпроцессы. Это необходимо по причине большого кол-ва файлов журналов в формате EVTX (каждый сервер AD DS генерирует за одни сутки максимум 40 файлов, таких серверов 4 штуки). Итого, необходимо в короткие сроки обработать 40 * 4 = 160 журналов. Сделать это можно только с помощью распеределениия задачи по нескольким сервера, отводя на обработку каждого журнала отдельный процесс (1 процесс = 1 поток = 1 нагруженное ядро CPU).
Процесс извлечения данных из журналов AD DS серверов разбит на 2 подпроцесса:
-
Серверный процесс (Manager process) Формирует список задач на парсинг обнаруженных файлов в формате EVTX для рабочих процессов.
-
Рабочий процесс (Worker process) Выполняет парсинг полученных от процесса - менеджера заданий. Данный процесс выполняет многопоточную (в нашем случае многопроцессную) обработку. Извлеченные из каждого файла EVTX данные сохраняются в файлах формата CSV. Обработанные файлы EVTX сжимаются в архивы формата ZIP и перемещаются в файловое хранилице (экономим место).
Извлечение данных намерено реализованно распределенно, это позволит масштабировать скорость обработки имеющихся EVTX файлов путем запуска новых рабочих процессов на других ПК (серверах). Таким образом, имея один процесс-менеджер и множество рабочих процессов можно масштабировать производительность извлечения данных (теоретически - неограниченно).
Загрузка данных в хранилище реализованна отдельным процессом, последовательно, с соблюдением даты. Захват данных в стейджинг максимально безопасным способом (все поля стейджинговой таблицы - текстовые). Далее, в процессе перемещения данных из стейджинга в соответствующую таблицу фактов происходит преобразование типов.
Генерирование итогового отчета реализованно отдельным процессом. Нужно добавить сохранение отчета в таблицу в хранилище данных (с сообветсвующим полем для даты генерирования отчета). Важный момент, отчет генерируется по запросу и для конкретных параметров, а не постоянно. После генерации отчёта его уже и выгружать в файл.