Защита базы при помощи файла рабочей группы. Часть 1.

Источник: Leadersoft

Защита базы при помощи файла рабочей группы

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

      При установке защиты, первым делом нужно задать себе вопрос: что и от кого Вы собираетесь защищать? Дело в том, что попытки создать «непрошибаемую» защиту однозначно обречены на провал. К тому же, часто опасения по поводу желания кого либо «взломать» Вашу базу сильно преувеличены. Обычно при разработке проектов, требующих повышенного уровня надежности и безопасности применяют не Access, а другие, более подходящие для такого дела хранилища данных - например SQL Server. Для всех остальных случаев вполне подходит стандартная защита Access при помощи файла рабочих групп.

      Рабочей группой в Access называется группа пользователей, работающих с базой.

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

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

HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Access\Jet\4.0\Engines\SystemDB

и

HKEY_USERS\.DEFAULT\Software\Microsoft\Office\10.0\Access\Jet\4.0\Engines\SystemDB

      Можно так же посмотреть, где лежит стандартный файл рабочей группы через Сервис - Защита - Администратор рабочих групп - Связь - Обзор - тут видим System.mdw. Убедится же в том, что Access его создает при запуске (если его нет) можно очень просто -  удалите его и закройте Access. Снова откройте Access и создайте новую пустую базу. Теперь посмотрите Сервис - Защита - … System.mdw опять появился.

      То есть, по сути, стандартная система защиты Access всегда включена. До активизации пользователем процедуры подключения для рабочей группы, Access при первом запуске или при создании новой базы проверяет наличие файла рабочей группы, и если его нет, то создает его и автоматически подключает к нему всех пользователей с помощью встроенной учетной записи пользователя «Admin» с пустым паролем. Окно для ввода логина и пароля при этом не выводится, а потому создается впечатление, что база ничем «не защищена». Это верно в том смысле, что дверь не заперта, а лишь прикрыта - любой может ее открыть.

      Можно и самому создать собственный mdw. Для этого жмем Сервис - Защита - Администратор рабочих групп - Создать. Откроется диалоговое окно Сведения о владельце рабочей группы.  В поля Имя  и Организация введите название рабочей группы и если хотите, организации. В поле Код группы введите уникальный идентификатор группы, состоящий из букв и цифр. Этот идентификатор может включать до 20 символов. В качестве идентификатора защиты рекомендуется использовать набор символов, который сложнее угадать, чтобы обеспечить тем самым большую степень защищенности рабочей группы.

      Нажмите кнопку ОК. Появится диалоговое окно, позволяющее задать имя нового файла рабочей группы. Введите полное имя файла с расширением mdw, или нажмите кнопку Обзор, чтобы выбрать папку, в которой будет сохранен новый файл, и укажите имя файла. Если Вы не укажите имя файла, то Access сам его придумает - это будет конечно же System1.mdw. Нажмите кнопку ОК. Появится диалоговое окно, позволяющее проверить введенную информацию. Нажмите ОК. Созданный mdw автоматически присоединяется к Access, то есть теперь все базы на данной машине будут запускаться через него.

      Об этом часто забывают начинающие разработчики : то, что созданный ими файл рабочей группы можно подключить не только к конкретной базе, но и для всех приложений Access. Для этого достаточно указать его через Сервис - Защита - Администратор рабочих групп - Связь - Обзор - ….mdw. Теперь все базы будут открываться лишь после прохождения «авторизации» через созданный mdw, то есть каждый раз придется водить имя пользователя и пароль, хотя база может быть и не защищена. Это иногда приводит в смятение начинающих экспериментаторов: "наиграшись" с Администратором рабочих групп и своими mdw хочется вернуть все "как было", но вот как? Избавиться от этого просто: укажите стандартный mdw вышеуказанным способом (C:\Documents and Settings\Администратор\Application Data\Microsoft\Access\System.mdw). Но можно сделать проще -  передвиньте куда-нибудь созданный вами mdw - Access его «потеряет» и при запуске спросит: «Access не может найти …mdw. Использовать файл рабочей группы по умолчанию?» Скажите «Да» и создастся новый стандартный mdw с полными правами для всех пользователей и с отключенным диалоговым окном ввода логина/пароля. Но тут есть один момент: новый mdw будет уже System1.mdw - ведь старый System.mdw никуда не делся. В следующий раз при подобных действиях появится соответственно System2.mdw и т. д. Все это копии одного и того же стандартного файла рабочих групп. Чтобы не плодить их до бесконечности, подключитесь к «родителю» - System.mdw, остальные удалите.

      А вот чтобы окно авторизации выводилось лишь на конкретную защищенную базу, ее нужно запускать через специальный ярлык с параметрами командной строки. Для этого создаем ярлык базы данной, жмем на него правой кнопкой - Свойства - Вкладка Ярлык и в поле Объект пишем:

"C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE" "Полный путь к защищенной базе"/WRKGRP "Полный путь к файлу рабочей группы - mdw"

      Здесь происходит последовательное выполнение команд: сначала запускается СУБД Access - MSACCESS.EXE (для Office 2003 нужно Office10 заменить на Office11), затем запускается база с указанием пути к соответствующему пользовательскому файлу рабочей группы. Если первая и последняя команды пропущены, то к базе подключается mdw используемый по умолчанию.

Итак, что такое mdw, как его подключить к Access или к конкретной базе данных разобрались. Осталось теперь разобраться, как же собственно производить установку защиты через файл рабочих групп? Об этом в следующей статье.


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