Использование технологии "Регистры правил" для управления правами доступа (УАУ)

Материал из КинтВики
Версия от 13:43, 23 ноября 2008; Rebot (обсуждение | вклад) (Automatic page editing)
Перейти к: навигация, поиск


Павел Лазарев, ЗАО "Корпоративные информационные технологии (КИНТ)", 2004

Регистры правил являются удобным инструментом для выборки непротиворечивой информации при сложных и/или разнообразных входных условиях. В данной статье рассматривается использование технологии регистров правил для управления правами доступа к объектам информационной базы.

Обзор технологии "Регистры правил".

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

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

Недостатки алгоритмического подхода общеизвестны - это сложность, запутанность логики при усложнении ситуации, трудность понимания и модификации кода. Однако чаще всего системы строятся, базируясь именно на таком подходе, ибо он прост в реализации и удобен для программирования.

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

С практической точки зрения технология регистров правил предназначена для реализации некоторой системы правил, подходящей для решения поставленной задачи.

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

Структура регистра правил выражает функциональную зависимость {Детерминант -> Корень}. Как детерминант, так и корень могут обладать структурой (иметь атрибуты). Атрибуты детерминанта называют также измерениями регистра, атрибуты корня - ресурсами. Значение корня - это кортеж значений его ресурсов. Ресурс может являться набором значений (множеством элементов), а также ссылкой на детерминант следующего уровня системы правил.

Например, для системы контроля доступа детерминант регистра может состоять из следующих измерений: Пользователь, ТипОбъекта, ВидОбъекта, а корень иметь ресурс Доступ (булево значение, Да/Нет).

Набор правил в общем случае строится по принципу уточнения входной ситуации. Это означает, что сначала определяются правила, общие для любых значений, а затем - правила, конкретизирующие, сужающие входную ситуацию.

Например, самым общим правилом системы контроля доступа обычно является правило задания политики безопасности - политика разрешения или политика запрещения. В первом случае по умолчанию доступ запрещен, для получения разрешения необходимо выполнения некоторых условий. Во втором - по умолчанию доступ разрешен, запрещаются лишь конкретные ситуации.

При помощи регистра правил очень легко и естественно задается правило такого рода, например, для задания политики разрешения можно использовать:

Детерминант Корень
Пользователь Тип объекта Вид объекта Доступ
      Да

Далее, мы можем определить уточняющие правила, ограничивающие доступ к объектам информационной системы:

Детерминант Корень
Пользователь Тип объекта Вид объекта Доступ
Иванов Отчет   Нет

Задачи системы управления правами доступа.

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

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

Это плохо, неудобно, но… что делать?

Недостатки существующих подходов к построению систем управления правами доступа.

Чаще всего, контроль доступа строится на базе системы ролей (субъектов), для которых определяются списки контроля доступа (access control list, ACL) к объектам информационной системы. При этом для каждого класса объектов информационной системы некоторым образом задаются права, которые имеют по отношению к ним субъекты.

Например, для пользователей "Пользователь1" и "Пользователь2" мы определяем роль "Менеджер по продажам". Для объекта "Счет-фактура на расход" роль "Менеджер по продажам" имеет права "Доступ разрешен".


DataAccess1.png

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

Что, если нам надо ограничить сумму документа, которые имеют право выписывать определенные менеджеры? Или получать определенные клиенты? Или разрешить работать только с документами сегодняшнего дня?

Ясно, что таких ситуаций может быть огромное множество, причем мы не можем их спрогнозировать на этапе разработки системы.

Нам необходим инструмент, позволяющий описать входную ситуацию и выдать на ее основе решение - предоставлять доступ или нет.

К счастью, такой инструмент у нас уже есть, и это - регистр правил.

Проектирование регистра правил, предназначенного для управления правами доступа.

Для создания регистра правил нам надо выбрать измерения, составляющие детерминант, и ресурсы, составляющие корень.

Один ресурс нам известен - это булево значение Доступ (Да/Нет).

В качестве второго ресурса выберем строку сообщения, которую система будет выводить при отказе в доступе.

Ограничим измерения регистра следующими значениями:

  • Событие системы. Возможные значения - Открытие, Запись, Проведение, ОтменаПроведения.
  • Тип объекта. Значения - Документ, Отчет, Справочник.
  • Вид объекта. Значения - виды соответствующих объектов.
  • Имя пользователя.
  • Сумма документа. Измерение является диапазоном, ограниченным "снизу" значением измерения. Это означает, что, например, правилу с заданной суммой документа 1000, будут соответствовать все документы, имеющие сумму >= 1000.
  • Возраст документа в днях. Измерение является диапазоном, ограниченным "снизу".

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

Регистр правил "Контроль доступа"

Детерминант Корень
Событие системы Тип Объекта Вид Объекта Пользователь Сумма документа Возраст документа Доступ Сообщение
               


Интеграция регистра правил "Контроль прав доступа" в конфигурации "1С: Предприятие 7.7".

Для интеграции регистра правил "Контроль прав доступа" в конфигурацию "1С: Предприятие 7.7" нам необходимо добавить объекты конфигурации и глобальные функции, реализующие механизм регистров правил.

Кроме того, нужно добавить вызов регистра правил при соответствующих событиях системы - при открытии документов, отчетов, справочников, перед проведением и отменой проведения документов. Обычно в конфигурациях уже существуют соответствующие точки входа в виде глобальных процедур, которые можно легко использовать для перехвата системных событий.

Настройка системы контроля прав доступа.

Для настройки регистра правил "Контроль доступа" нам необходимы следующие шаги:

  • Создаем структуру регистра правил "Контроль доступа".
  • Создаем в регистре правил "Контроль доступа" общее правило для задания политики безопасности.
  • Создаем в регистре правил "Контроль доступа" правила для задания доступа в соответствии с конкретными значениями детерминанта.

Преимущества системы контроля прав доступа на базе регистров правил.

Система контроля прав доступа, использующая механизм регистров правил, имеет все преимущества, свойственные системам, построенным на базе декларативного подхода к программированию, а именно:

  • Простоту и естественность задания правил.
  • Простоту настройки и сопровождения системы правил.

Кроме того, использование регистров правил обеспечивает дополнительные преимущества:

  • Простоту и легкость для понимания системы правил, основанной на принципах уточнения входной ситуации.
  • Гибкость, необходимую для учета всего многообразия входных ситуаций.
  • Возможность расширения функциональности без изменения кода системы, путем задания новых измерений регистра правил.
  • Возможность расширения функциональности путем введения подчиненных регистров правил.

В конфигурации "УчетoАнализoУправление" фирмы "КИНТ" (http://www.kint.ru) регистры правил используются для решения таких задач как контроль доступа, система скидок, установка цен, установка типовых операций и т.д.

Заключение.

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

Литература.

  1. "Регистры правил", Д. Малюгин, 2003, http://itland.ru/lib/index.php?id=48.
  2. "Регистры правил. Развитие парадигмы", Д.Малюгин, 2004, http://itland.ru/lib/index.php?id=247.
Эта статья или раздел созданы автоматически. Любые правки будут перезаписаны. Пожалуйста, оставляйте свои замечания на вкладке — «Обсуждение».