РАЗГРАНИЧЕНИЕ ПРАВ ДОСТУПА В КОРПОРАТИВНОЙ СИСТЕМЕ
Для администратора корпоративной системы с большим количеством сетевых мест вопросы разграничения прав доступа (РПД) пользователей являются весьма актуальными. РПД способствует снижению риска потерь от случайных или умышленных неправомерных действий пользователя, поскольку предотвращает несанкционированный доступ к просмотру или изменению информации и настроек. Одновременно РПД позволяет реализовать нужную бизнес-логику работы. Например, можно обеспечить доступ определенных менеджеров только к заданным складам или части номенклатуры товаров, т.е. организовать работу только со "своими" документами. В некоторых случаях не менее важно отслеживать историю изменений документов или устанавливать ограничения на ввод "недопустимых" значений (например, формирование документов на отгрузку для клиента, у которого превышен лимит задолженности).
Таким образом, наличие развитых средств РПД является необходимым условием организации эффективной работы корпоративной системы. Причем с увеличением числа сетевых рабочих мест возрастает и значимость РПД.
В отечественных разработках корпоративных систем РПД реализовано не в полной мере. Во многих случаях доступ к полям базы данных устанавливается на уровне "Есть" или "Нет". В западных разработках РПД уделяется большое внимание, поскольку при этом обеспечивается внутренний аудит.
Рассмотрим реализацию РПД в системе КомТех (разработчик - компания "Бухгалтерия КомТех"). Перед разработчиками стояла задача создания системы РПД, которая удовлетворяла бы следующим основным требованиям: единый интерфейс настройки РПД для всех модулей;
РПД как по колонкам, так и по строкам любой таблицы (справочника, документа, отчета);
РПД по сервисным функциям системы;
РПД для группы пользователей, включая "заводские" настройки на типовые группы пользователей; возможность обмена настроек РПД между базами данных, например в случае, если учет ведется по нескольким предприятиям; формирование истории изменений документов; составление отчетов о предоставленных пользователям правах по конкретному документу, сервисной функции, колонке документа; при внедрении системы выполнения настройки РПД без участия разработчика; при обновлении версии системы автоматический перенос настройки РПД; достаточно простой интерфейс настроек РПД, чтобы с учетом конфиденциальности информации настраивать РПД мог бы пользователь, не владеющий навыками программирования (например, не системный администратор, а один из руководителей предприятия).
Система КомТех имеет единый табличный интерфейс пользователя. При этом любая информация (справочники, документы, журналы, отчеты) представлена в форме таблиц. Для каждого табличного окна предусмотрены единые пользовательские функции (например, редактирование структуры таблицы, формирование документа из другого документа, пересчет взаимосвязанных колонок по строке/строкам, обмен информацией между различными базами данных, печать и др.).
Каждому пользователю назначаются имя и пароль. Защиту информации обеспечивает СУБД Sybase SQL Anywhere, на которой функционирует КомТех. Администратор системы может воспользоваться "заводскими" настройками РПД, предусмотренными разработчиком для типовых групп пользователей (например, бухгалтер, менеджер, кладовщик и др.), либо создать "свои" группы пользователей, либо задать нужное РПД для конкретного пользователя.
Таким образом, администратор помимо добавления пользователя может создать группы пользователей, назначить для группы РПД, а затем переместить в эту группу нужных пользователей. Для каждой группы пользователей можно задать общую настройку РПД. Вместе с тем у конкретного пользователя, принадлежащего какой-либо группе, права доступа могут быть шире или уже прав доступа, определенных для группы.
Для пользователя имеется несколько уровней РПД: по модулям; по каждому справочнику, документу, журналу, отчету модуля; по каждой колонке справочника, документа, журнала, отчета; по каждой сервисной функции справочника, документа, журнала, отчета; по операциям внутри сервисных функций справочника, документа, журнала, отчета модуля.
На рис. 1 представлен экран настройки прав доступа, в котором пользователю может быть определен доступ к нужному модулю. Некоторые таблицы (справочники, документы, журналы и отчеты) могут быть общими для нескольких модулей, поэтому в списке модулей имеется специальная ветвь "Общие справочники, журналы".
В иерархическое "дерево" настройки РПД по каждому модулю включены справочники, первичные документы, журналы и отчеты. Если документ представляет собой многоуровневую структуру (например, шапка накладной, предметы накладной, партии по каждому предмету), то для каждого уровня формируются соответствующие ветви настройки прав доступа. Для справочников и документов могут быть определены такие режимы доступа, как "Нет", "Просмотр", , "Только добавить", "Редактирование своих записей", "Редактирование" (рис. 2). Режим "Только добавить" означает возможность добавлять записи и их редактировать до тех пор, пока пользователь не вышел из данной таблицы, режим "Редактирование своих записей" - возможность вносить изменения только в "свои" документы, т.е. документы, созданные этим пользователем. При этом "чужие" документы доступны только для просмотра. Для отчетов предусмотрены режимы прав доступа "Нет", "Просмотр", "Редактирование".
Каждый документ имеет ветви: "Функции", "Колонки", "Фильтр". Для справочников, добавленных пользователем в систему, также автоматически строится "дерево" для задания прав доступа. При раскрытии ветви функций можно назначить права доступа к пользовательским функциям для данной таблицы (рис. 3).
Некоторые функции, например "Печать", имеют свои подуровни доступа работы с печатными формами: "Добавление", "Удаление", "Экспорт", "Импорт", "Просмотр", "Изменение" и др. (рис. 4).
При раскрытии ветви колонки автоматически выводится список колонок таблицы, включая колонки, добавленные пользователем. Для каждой колонки пользователь может указать: "Нет", "Просмотр", "Редактирование". Для вычисляемых колонок режим "Редактирование" недоступен.
Ветвь "Фильтр" позволяет непосредственно в настройке прав доступа установить для конкретного пользователя логическое условие. На экране появляется стандартное для системы "дерево" составляющих формул, ветвями которого являются иерархические списки наименований колонок на русском языке данной и связанных таблиц, списки системных и вспомогательных функций. Например, если для пользователя в приходных накладных необходимо запретить доступ к складу с наименованием 'СКЛАД 2', то это можно сделать, установив для него в приходных накладных фильтр доступа в виде логического условия: { Получатель } О 'СКЛАД 2'. При этом { Получатель } выбирается из "дерева" составляющих формул, а остальная часть формулы вводится вручную.
Количество таблиц системы достигает двух тысяч, поэтому существенное значение имеет возможность групповых операций с РПД. К ним относятся, например, упомянутые ранее РПД по группам пользователей, а также маркировка нескольких документов или колонок таблицы с назначением для них одинакового режима доступа. Путем пометки нескольких документов возможно групповое назначение одинаковых прав доступа к выбранным функциям. При этом существует режим работы, при котором уровни доступа для шапок документа распространяются и на предметы.
Одной из сервисных функций системы является "Условие проверки" - при вводе/редактировании значения в справочниках, документах и журналах оно проверяется на соответствие заданному критерию. Если условие проверки не выполняется, то введенное значение поля не сохраняется, а возвращается предыдущее. Условие проверки может накладываться на любую редактируемую колонку любой таблицы системы. Доступ к заданию условия проверки определяется в РПД по ветви "Функции".
Условие проверки можно задать непосредственно в таблице документа. Для этого щелчком мыши по заголовку колонки вызывается "дерево" формул, аналогичное описанному выше при задании фильтра доступа. Примерами применения этой функции являются проверка дебиторской задолженности получателя при формировании ему расходной накладной и в случае превышения установленного лимита на отгрузку запрет на формирование накладной. Таким образом, при выборе какой-либо организации рассчитывается на системную дату дебиторская задолженность и сопоставляется с лимитом задолженности по этой организации. При превышении лимита система не позволит выбрать эту организацию в качестве получателя в расходной накладной.
Еще одной полезной сервисной функцией является "История изменений". Эта функция позволяет формировать отчет - что, когда и в какой строке базы данных исправлено. Отчет об изменениях в системе строится по документам и пользователям. В нем указываются дата и время изменений, документ, измененные значения и пользователь. Естественно, что доступ к этой функции также может быть ограничен РПД.
При эксплуатации системы может возникнуть потребность в закрытии всех или заданных реестров документов от какой-либо корректировки. С этой целью предусмотрен режим, в котором пользователь, имеющий соответствующие права доступа, за любой указанный месяц может закрыть/открыть требуемые реестры документов. Кроме того, в справочниках и документах имеется системная колонка "Закрыто для коррекции", значение "Да" в которой запрещает редактирование данных в такой строке.
Таким образом, чем более развиты средства настройки РПД, тем более эффективно может быть организовано функционирование системы. Следует также отметить, что многие из приведенных возможностей разработаны на основе реальных потребностей клиентов.[Графические материалы:
Рис. 1
Рис. 2
Рис. 3
Рис. 4
Материалы доступны в бумажной версии издания]