Архитектура защиты ACCESS
Если у вас имеется опыт работы с защитой, используемой на сервере или большой ЭВМ, структура защиты в Access покажется вам знакомой. Вы можете указать пользователей, которым предоставляется или, наоборот, не разрешается доступ к объектам базы данных. Кроме того, вы можете определить группы пользователей и назначить разрешения на уровне группы, чтобы облегчить построение защиты для большого числа пользователей. Пользователю достаточно быть членом группы, чтобы получить права доступа, установленные для неё.
Access хранит информацию о защите в двух местах. Во время установки программа Setup создаст в папке \Program Files\Microsoft Ofice\0fficeстандартный файл рабочей группы (System.mdw), который впоследствии используется по умолчанию при запуске Access. Этот файл содержит информацию обо всех пользователях и группах. При создании базы данных Access сохраняет сведения о правах, предоставляемых конкретным пользователям и группам, в файле базы данных.
Учётные записи пользователей и групп хранятся в файле рабочей группы. Разрешение на доступ к конкретным объектам сохраняются в файле базы данных.
Расположение текущего файла рабочей группы хранится в реестре Windows. Можно использовать служебную программу Wrkadm.exe (администратор рабочих групп) для изменения текущего или определения нового файла рабочей группы. Кроме того, можно выбирать нужный файл рабочей группы во время выполнения приложения, задав соответствующий параметр командной строки в ярлыке запуска. Если вам приходится часто запускать в сети совместно используемое защищенное приложение, нужно позаботиться о том, чтобы системный администратор задал вашу рабочую группу, используемую по умолчанию, как общий файл в сетевой папке.
Каждая рабочая группа имеет уникальный внутренний идентификатор, генерируемый Access при определении файла рабочих групп. Любая база данных, созданная пользователем рабочей группы, «принадлежит» как этому пользователю, так и рабочей группе. Каждый пользователь и группа также имеет уникальный внутренний идентификатор, но можно дублировать один и тот же код пользователя и группы в нескольких рабочих группах. Когда вы назначаете право доступа к объекту своей базы данных, Access сохраняет в ней внутренний идентификатор пользователя или группы вместе с информацией о доступе. Таким образом, предоставленные вами права перемещаются вместе с файлом базы данных при копировании его в другую папку или на другой компьютер.
При установке Access всегда создается стандартная рабочая группа, содержащая один встроенный код пользователя и два встроенных кода групп. Код пользователя называется Admin, и для него не определен пароль. Access автоматически загружает вас с этим кодом и предоставляет вам все права к привилегии этого пользователя. При создании базы данных или нового объекта в базе данных ваш текущий код пользователя становится владельцем объекта и по умолчанию получает полные права на доступ к этому объекту. Поскольку большинство пользователей Microsoft Access никогда «не включают» защиту и загружаются как пользователи Admin, владельцем всего, что они создают, является универсальный код Admin.
Первой встроенной группой является группа Users. Все пользователи, в том числе и новые, становятся ее членами и не могут быть удалены из нее, Кроме того, внутренний идентификатор группы Users всегда один и тот же во всех устанавливаемых в мире копиях Access. Группе Users автоматически предоставляются полные права доступа к любому новому объекту или базе данных, которые вы создаете. Это означает, что даже если пользователь зарегистрировался с кодом иным, чем Admin, он все равно имеет полный доступ к вашим базам данных и объектам в них, поскольку пользователь всегда является членом универсальной группы Users!
Вторая встроенная группа называется Admins. Ее внутренний идентификатор уникален для каждого файла рабочей группы и определяется на основе информации, которую вы предоставляете программе администратора рабочих групп при создании файла. По умолчанию в эту группу включен только пользователь Admin. Но, как показано ниже, вы можете определить другого пользователя, включить его в группу Admins и удалить пользователя Admin. Эта группа должна содержать, по крайней мере, одного пользователя.
Группа Admins обладает двумя основными привилегиями. Во-первых, члены группы Admins могут определять и изменять учетные записи пользователей и групп, а так же устанавливать и менять пароли. (Вы всегда можете изменить собственный пароль.) Во-вторых, члены группы Admins имеют полный доступ к любым базам данных, созданным при использовании этого файла рабочей группы. Члены этой группы могут первоначально не иметь никаких разрешений на доступ кобъектам, но могут назначить себе нужные права. Для понимания этого свойства важно иметь в виду, что любая база данных, созданная при использовании конкретного файла рабочей группы, наследует код этой рабочей группы. Некто может быть членом группы Admins в другом файле рабочей группы, но если коды рабочих групп не совпадают, этот пользователь не получит прав доступа к вашей базе данных[5].
В таблице 1 приведены разрешения, которые можно назначать базе данных или ее объектам. Обратите внимание, что у владельца объекта может и не быть никаких конкретных разрешений, но, пользуясь своим статусом владельца, он имеет право предоставлять любые или все разрешения любому пользователю или группе, включая себя самого.
Таблица 1
Примеры разрешений
Разрешение | Объект | Разрешённые действия |
Открытие/запуск (Open/Run) | База данных, форма, отчет, макрос | Открытие базы данных, формы или отчета, запуск макроса. (Любой пользователь может выполнять процедуры в модулях.) |
Монопольный доступ (Open Exclusive) | База данных | Открытие базы данных для монопольного доступа. Без этого разрешения пользователь не может открыть базу данных и отключить других пользователей |
Чтение макета (Read Design) | Таблица, запрос, форма, отчет, макрос, модуль | Просмотр объектов в режиме конструктора. Если для таблицы или запроса предоставлен любой тип доступа к данным, автоматически дается разрешение на чтение макета, поскольку оно необходимо для корректного открытия набора записей |
Изменение макета (Modify Design) | Таблица, запрос, форма, отчет, макрос, модуль | Просмотр и изменение макета объектов. Если в приложении используется программа Visual Basic, изменяющая макеты запросов во время выполнения, вы должны предоставить разрешение на изменение макета всем пользователям этих запросов |
Администратора (Administer) | База данных, таблица, запрос форма, отчет, макрос, модуль | Предоставление разрешений на доступ к объекту, даже если пользователь или группа не является владельцем объекта |
Чтение данных (Read Data) | Таблица, запрос | Просмотр данных таблицы. Также дает разрешение на чтение макета. В случае запроса пользователь должен иметь разрешение так же на чтение данных для всех используемых в нем таблиц или запросов |
Обновление данных (Update Data) | Таблица, запрос | Обновление данных таблицы или запроса. Кроме того, предоставляет разрешения на чтение данных и макета. В случае запрос пользователь должен иметь также разрешение на обновление данных для всех таблиц, изменяемых с его помощью. |
Вставка данных (Insert Data) | Таблица, запрос | Вставка данных в таблицу или запрос. Кроме того, предоставляет разрешения на чтение данных и макета. В случае запроса пользователь должен дополнительно иметь разрешение на вставку данных для всех таблиц или запросов, изменяемых с его помощью |
Удаление данных (Delete Data) | Таблица, запрос | Удаление данных из таблицы или запроса. Кроме того, предоставляет разрешения на чтение данных и макета. В случае запрос пользователь должен дополнительно иметь разрешение на удаление данных для всех таблиц, изменяемых с его помощью |