К вопросу о защите данных в Microsoft Access
В «Мире ПК» № 4/99 опубликована статья В.А. Дронова «Защита данных в Access 97», в которой автор, полностью, как ему кажется, построив систему защиты на уровне пользователя, обнаруживает, что ее очень легко обойти. На самом деле это не так. Конечно, защита Access имеет свои недостатки, но в версиях Access 2.0—97 она вполне работоспособна и достаточно надежна. Главная ошибка В.А. Дронова заключается в преуменьшении роли Мастера защиты Access. Эта утилита далеко не так примитивна, как думает автор. Ее назначение — создать новую, защищенную базу данных, перенести в нее все объекты приложения, отнять права у всех пользователей, кроме одного, который и станет полновластным администратором защищенной базы.
Излагаемая в статье последовательность действий по созданию защиты на уровне пользователей в основном правильна. Действительно, нужно создать новый файл рабочей группы, отличный от System.mdw, создать учетную запись Администратора, отличного от Admin, и добавить его в группу Admins, после чего задать пароль для пользователя Admin и закрыть Access. Затем следует вновь открыть Access, но уже от имени нового Администратора (правда, в статье не сказано, что базу данных при этом открывают с нажатой клавишей
Однако присваивать пользователям какие бы то ни было права по доступу к объектам базы данных, как это пытается делать автор, пока преждевременно: база не защищена, и сначала необходимо преобразовать ее в защищенную. Именно здесь нам и потребуется Мастер защиты.
Запустите его («Сервис?Защита?Мастер») и в открывшемся окне согласитесь на предлагаемую по умолчанию полную защиту. В следующем окне задайте имя защищенной базы данных (лучше оставить предложенное Мастером имя старой базы, предваренное словом «Защита») и нажмите ОК. Мастер приступит к преобразованию, которое в зависимости от размера исходной базы данных и производительности компьютера может занять от 1—3 до 15—20 мин, и по окончании процесса выведет окно с сообщением об успешном завершении операции. Теоретически вы можете получить и сообщение об ошибке, но я не видел его ни разу, хотя работаю с Access и пользуюсь Мастером защиты уже более пяти лет.
Теперь закройте базу данных и Access, запустите Access снова, введите имя Администратора и пароль и войдите (при нажатой клавише
В защищенной базе Admin по умолчанию не будет иметь никаких прав — не меняйте это положение. Предоставьте необходимые права всем вашим пользователям (не забывайте о правах на саму базу данных — пользователи, кроме Admin, должны иметь право хотя бы открыть ее), задайте пароль для каждого из них и для самой базы.
Выполнив все это, попробуйте снять с базы пароль, подключиться к файлу System.mdw или аналогичному и почитать данные из базы или присвоить Admin новые права. Если вы все сделали верно, ничего не получится. Правда, злоумышленник сможет создавать в защищенной базе новые объекты, никак не связанные с существующими, — эта «дырка» действительно есть, — но имеющиеся данные и объекты будут для него закрыты.
Вопреки тому, что пишет В.А. Дронов, полученную таким способом защиту вполне можно распространить и на отчуждаемые («коробочные») продукты на базе Access, созданные с помощью соответствующего SDK, однако это довольно сложный процесс, описание которого выходит за рамки настоящей заметки.