Разработка обеспечения по контролю за действиями пользователей

Автор: Святоха А.А.

Аннотации

Святоха А.А. В данной работе рассмотрена реализация системы логирования и представления действий пользователя.

Введение

Целью является создание программного обеспечения по контролю за действиями пользователей в системе бухгалтерского учета. Благодаря возможностям системы, администратор легко может выявлять критические изменения, внесенные пользователями повлекшие нестабильную работу сервера.

Анализ систем логирования

Естественной потребностью системного администратора или специалиста по безопасности является некий анализ того, что происходит как на конкретном компьютере конкретного пользователя, так и в локальной сети. Технически задача выполнима, ибо разработчики множества приложений, которыми мы пользуемся, заложили в свои продукты функцию логирования информации. Информация, которую хранят логи (файл с записями о событиях в хронологическом порядке, простейшее средство обеспечения журналирования) конкретного компьютера в сети, может сказать много тому, кто, с некоторым знанием предмета, рискнет заглянуть внутрь.

Для того чтобы грамотно добывать полезную информацию из логов, иногда достаточно простого текстового редактора, но часто встречаются ситуации, когда лог и просмотреть довольно сложно, и трактовать правильно тяжело. В этом случае может потребоватся дополнительное программное обеспечение для удобного представления информации, а также возможности поиска по заданным критериям.

Обоснование выбора платформы

В качестве системы администрирования используется Microsoft SQL Server 2008 (рис. 1), и использует базу данных в качестве хранилища логов. В большинстве своем это отдельная таблица базы данных, каждая строка которой является отдельным событием. Такое логирование часто может отрицательно сказаться на общей производительности базы данных, так как логирование в базу данных может быть довольно интенсивным (к примеру, MS SQL Server 2000/2005 успевает в C2 Audit логи писать несколько десятков записей в секунду). Естественно, что все зависит от того, как сконфигурировано приложение. Впрочем, некоторые производители предупреждают о возможных проблемах вне зависимости от конфигурации, обычно это предупреждение является перестраховкой, так как всегда есть возможность подобрать конфигурацию системы аудита, которая будет не слишком обременительной.

Реализация системы логирования устроена посредством триггеров СУБД, которые срабатывают при изменении либо удалении записей в определённой таблице, и заносят старые значения в таблицу хранящую логи.

MS SQL Server Management Studio 2008Рисунок 1 – MS SQL Server Management Studio 2008

Так как используется СУБД от Microsoft, хорошим решением будет реализация клиента для просмотра логов на платформе .NET на языке программирования C#. Основным преимуществами данного решения является то, что платформа .NET обеспечивает удобный интерфейс для подключения к СУБД, особенно к СУБД от Microsoft. Дополнительными преимущества – это простота разработки на основе использования парадигмы ООП, качественная интегрированная среда разработки MS Visual Studio, с возможностью визуального проектирования интерфейса взаимодействия с пользователем и широким функционалом. Основной минус в том, что данное решение не является кроссплатформенным – может применятся только на компьютерах с операционной системой Windows и требует установленного пакета .NET.

Разработка программной модели

Первое с чего необходимо начать разработку это реализация подключения к СУБД, для этого было разработано окно входа (рис. 2) для указания параметров подключения.

Окно подключения к СУБДРисунок 2 – Окно подключения к СУБД

После заполнения форм и нажатия кнопки «Вход» вызывается метод Connect класса DB_Connection, который формирует строку с параметрами для подключения к СУБД:

public class DB_Connection
    {
        private SqlConnection connection;

        public void Connect(
string server,
bool windowsAuth,
string user,
string password)
        {
            string connetionString = null;
            if (windowsAuth)
            {
                connetionString =
$"Server={server};Trusted_Connection=true;";
            }
            else
            {
                connetionString =
$"Data Source={server};User ID={user};Password={password};";
            }
            connection = new SqlConnection(connetionString);
            connection.Open();
        }
	
	public void SafeConnect(
string server,
bool windowsAuth,
string user, string
password)
        {
            if (connection == null) {
Connect(server, windowsAuth, user, password);
		 }
        }
/* … */
}

После чего мы попадаем в главное окно программы (рис. 3.3) в котором можно видеть две вкладки: одну с таблицей с логами, в которой поля в которых есть изменения отображены красным цветом и другую таблицу в которой находится текущее состояние полей. Ниже находятся формы для выбора критериев отображения результатов, после выбора всех критериев следует нажать кнопку «Применить фильтры», после чего будет сформирован SQL запрос, который выберет необходимые данные из таблицы логов, данный запрос отображается в нижней строке, вот его пример:

SELECT logs.*, users.cUser_Iden, users.cUser_FullName FROM GD_PERSON_log logs INNER JOIN GD_USER users ON logs.nId_User=users.nId_User WHERE logs.nId_User='6' AND logs.nId_Person='1' AND logs.DateOfChange>='2018.09.10' AND logs.DateOfChange<='2018.09.29'
Главное окно программыРисунок 3 – Главное окно программы

Выводы

Была разработана система логирования для администратора СУБД на базе Microsoft SQL Server. Благодаря возможностям системы, администратор легко может выявлять критические изменения, внесенные пользователями повлекшие нестабильную работу сервера.