Журналы аудита NPrinting
Прошло много времени с тех пор, как я написал свой предыдущий пост. Этот будет довольно коротким, но я надеюсь, что вы сочтете его полезным. В обновлении NPrinting от ноября 2020 представили журналы аудита. Это – долгожданная функция, позволяющая нам фиксировать практически каждое движение, происходящее в среде NPrinting. Чтобы это работало, мы должны включить ведение журнала аудита в настройках консоли администратора NPrinting. Также доступны 2 параметра, которые определяют, сколько данных мы хотим хранить в базе данных журналов.
Настройки консоли администратора для ведения журнала аудита
Сейчас, если вы используете версию от ноября 2020 года, единственный поддерживаемый способ получить эти журналы – через API, который позволяет вам загружать файл CSV с журналами. Это хорошо описано здесь, поэтому я не буду дублировать эту документацию в своем посте. Также есть неподдерживаемый вариант. Он не поддерживается, поскольку там реальный беспорядок с файлами конфигурации базы данных хранилища NPrinting. Поскольку журналы аудита хранятся в базе данных PostgreSQL на сервере NPrinting, мы можем просто подключиться к нему с помощью коннектора Qlik Sense или QlikView PostgreSQL. Итак, что нам нужно будет изменить?
БД NPrinting хранит конфигурацию в файле C:\ProgramData\NPrinting\data\pg_hba.conf. Нам нужно остановить все службы, отредактировать его, чтобы разрешить «прослушивание» с других машин, сохранить и перезапустить БД. Бит, который нам нужно отредактировать, находится в самом конце файла (вы должны увидеть его ниже):
#Если вы хотите разрешить нелокальные соединения, вам нужно добавить больше
#Записи «хоста». В этом случае вам также нужно будет сделать PostgreSQL
#Прослушивание нелокального интерфейса через listen_addresses
#Параметр конфигурации или с помощью ключей командной строки -i или -h.
Это задокументировано и здесь: ссылка (просто добавьте запись хоста, например, сервер Qlik Sense, с которого вы хотите подключиться к базе данных).
Как только вы это сделаете, то сможете легко создать соединение PostgreSQL вашего репозитория NPrinting с журналами аудита. Вот детали подключения:
- имя хоста: ваш сервер nprinting
- порт: 4992
- база данных: nprinting_audit
- пользователь: postgres
- пароль: пароль вашего репозитория
С указанным выше набором вы можете просто выбрать SQL таблицу журналов аудита и создать анализ на свой вкус. Больше нечего объяснять, кроме используемых меток времени в формате UTC и могут потребоваться преобразования. Мой пример скрипта находится здесь:
LIB CONNECT TO 'PostgreSQL'; [audit_event]: LOAD ConvertToLocalTime(event_time , 'Sydney') as [local_date_time], // Adjust city to show your local time Date(Floor(ConvertToLocalTime(event_time , 'Sydney'))) as [local_date], Time(Frac(ConvertToLocalTime(event_time , 'Sydney'))) as [local_time], id, user_id, user_name, ip_address, source, target, target_id, target_name, app_id, event_time, action, description, data, data_type ; SELECT "id", "user_id", "user_name", "ip_address", "source", "target", "target_id", "target_name", "app_id", "event_time", "action", "description", "data", "data_type" FROM "public"."audit_event";
С помощью вышеизложенного вы можете придумать способ загрузки журналов только за последний день и их локального хранения в виде файлов .qvd. Существует множество известных методов инкрементной загрузки, которые вы можете использовать здесь, так что вы можете получить полную историю журналов, доступную для анализа, без чрезмерной нагрузки на базу данных журналов.
А что, если вы хотите использовать поддерживаемое решение?
С версией NPrinting от февраля 2021 года мы получаем еще пару методов API, которые мы можем использовать. Это еще не официально выпущенная версия, но она уже доступна как бета-версия/тестовая версия, и я уже опробовал ее. Те, кто работал с NPrinting API, знают, что мы можем использовать REST-коннектор из Qlik Sense/QlikView для выполнения вызовов NPrinting API. Я написал библиотеку «NPrinting.qvs», в которой есть множество подпрограмм, которые вы можете использовать. Теперь я обновил ее с помощью одной большой подпрограммы под названием «NP_Audit_Model», которая будет возвращать 1000 записей из аудита (это максимальное число, которое я смог использовать в качестве переменной vQueryLimit – установка большего значения вызывает ошибку). Официальная документация объясняет другие дополнительные параметры запроса, но я их не использовал. А вот параметры запроса:
- offset (необязательный) Количество пропускаемых записей. По умолчанию 0.
- limit (необязательный) Максимальное количество возвращаемых записей. По умолчанию 50.
- start (необязательный) Дата начала фильтрации в часовом поясе UTC и в формате гггг-мм-ддTЧЧ:мм:ссZ. Пример: 2020-09-15T11: 59: 08Z
- конец (необязательный) Дата окончания фильтрации в часовом поясе UTC и в формате гггг-мм-ддTЧЧ:мм:ссZ. Пример: 2020-09-15T11: 59: 08Z
- appId (необязательный) Идентификатор приложения для фильтрации.
- userId (необязательный) ID пользователя, по которому выполняется фильтрация.
- targetId (необязательный) Идентификатор цели для фильтрации.
- target (необязательный) Имя цели для фильтрации.
- dataType (необязательный) Тип данных для фильтрации
Имея это все, вы можете найти решение, как постепенно загружать журналы и сохранять их в файлах .qvd.
Резюме:
- Мой NPrinting.qvs теперь обновлен подпрограммой NP_Audit_Model, и вы можете скачать ее отсюда.
- обратите внимание, что сначала вы должны пройти аутентификацию (пример сценария ниже – замените «Сидней» на свой город, поскольку это обязательный параметр для преобразования времени в формате UTC)
// ================================================================== // Откорректируйте ниже включаемый файл, чтобы ссылка на NPrinitng.qvs была правильной $(Must_Include=lib://Files (elvaio_lech)/NPrinting/NPrinting.qvs); // Authenticate Call NP_Authenticate; // Get all audit data Call NP_Audit_Model('Sydney'); // END exit script; // ==================================================================
- Я также прикрепляю сюда файл .qvs под названием NPrinting Audit Trail.qvf.. Это приложение Qlik Sense со скриптами и образцом визуализации данных из вызова API. Это должно быть хорошей отправной точкой для всех, кому нужны эти данные. Это приложение, которое я собрал за 5 минут для этого поста в блоге, поэтому не ждите от него ничего особенного и помните, что вызов API для аудита данных требует версии NPrinting от февраля 2021 года!!!
Вот и все ... надеюсь, вам понравилось.