Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=6234

Безопасность и разделение доступа

Администратор

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

Тезис: данные невозможно скрыть. Программный код можно скрыть только в mde.

Так и говорите вашему клиенту. Единственный ход, который позволит заказчику ограничить доступ к базе данных - это не хранить в рабочей копии все данные.

1. Пытаемся обезопасить данные.

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

Обрезка данных - рабочая копия включает данные за месяц (неделю, полгода). Период хранения определяет параноик, которому снится промышленный шпионаж. Ежесуточно (еженедельно, ежемесячно) при выключенных сетевых подключениях (чтобы никто ничего не вводил в этот момент) производится слияние-разделение баз данных. В полную копию сливаются новые данные (апдейтятся старые), в рабочей копии обрезаются данные, которые уже не нужны для повседневной работы (отработанные заказы и т.п.). Полная копия сливается на ZIP, CD-RW и кладется в сейф. Процесс разделения завершен.

Шифрование. Т.е. наиболее важная информация перед сохранением шифруется. Сам интерфейс (фактически, дешифратор) паролируется, привязывается к винту и т.п., чтобы никто не мог его унести домой. Недостатки: существенное замедление работы. Такое пройдет для таблиц типа "Пароли", но в расчетных таблицах вроде "Заказы", "Клиенты" это приведет к слишком большим тормозам в работе.

Прежде чем городить огород, задумайтесь: а оно вам надо. Потеря (крах) MDW приведет к потере данных. Обрезка данных приведет к проблеме синхронизации (все равно что-нибудь потеряете или неправильно синхронизируете), шифрование тоже может дать сбой, не говоря о замедлении. Потом, это ваше драгоценное время и вы будете его тратить не на оптимизацию алгоритма а на заботу о том, чтобы система безопасности функционировала адекватно. Может и нет нужды безопаситься. Нужны ли ваши данные кроме вас хоть кому-нибудь?

2. Разделение доступа.

MDW - все, что сказано раньше (вскрывается, но все равно вешаем). К сожалению, основной недостаток, это невозможность разделить доступ до такого уровня: на кнопку, на одну операцию и т.п.

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

Интерфейсно. Создается несколько интерфейсов (пользовательский, административный). Если еще удачно разрезать по нескольким базам данные, то будет пересечение подможества интерфейсов и подмножества данных. Если не нужен секретарю доступ к аналитике, то у нее его и не будет! Просто и со вкусом.) Недостаток в поддержке сразу нескольких АРМ, когда все просто и легко держать в одном.

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