§4. Разрешения на доступ к объектам
В таблице 1 приведены разрешения, которые можно назначать базе данных или ее объектам. Обратите внимание, что у владельца объекта может и не быть никаких конкретных разрешений, но, пользуясь своим статусом владельца, он имеет право предоставлять любые или все разрешения любому пользователю или группе, включая себя самого.
Таблица 1. Типы разрешений на доступ
Разрешение | Объект | Разрешённые действия |
Открытие/запуск (Open/Run) | База данных, форма, отчет, макрос | Открытие базы данных, формы или отчета, запуск макроса. (Любой пользователь может выполнять процедуры в модулях.) |
Монопольный доступ (Open Exclusive) | База данных | Открытие базы данных для монопольного доступа. Без этого разрешения пользователь не может открыть базу данных и отключить других пользователей |
Чтение макета (Read Design) | Таблица, запрос, форма, отчет, макрос, модуль | Просмотр объектов в режиме конструктора. Если для таблицы или запроса предоставлен любой тип доступа к данным, автоматически дается разрешение на чтение макета, поскольку оно необходимо для корректного открытия набора записей |
Изменение макета (Modify Design) | Таблица, запрос, форма, отчет, макрос, модуль | Просмотр и изменение макета объектов. Если в приложении используется программа Visual Basic, изменяющая макеты запросов во время выполнения, вы должны предоставить разрешение на изменение макета всем пользователям этих запросов |
Администратора (Administer) | База данных, таблица, запрос форма, отчет, макрос, модуль | Предоставление разрешений на доступ к объекту, даже если пользователь или группа не является владельцем объекта |
Чтение данных (Read Data) | Таблица, запрос | Просмотр данных таблицы. Также дает разрешение на чтение макета. В случае запроса пользователь должен иметь разрешение так же на чтение данных для всех используемых в нем таблиц или запросов |
Обновление данных (Update Data) | Таблица, запрос | Обновление данных таблицы или запроса. Кроме того, предоставляет разрешения на чтение данных и макета. В случае запрос пользователь должен иметь также разрешение на обновление данных для всех таблиц, изменяемых с его помощью. |
Вставка данных (Insert Data) | Таблица, запрос | Вставка данных в таблицу или запрос. Кроме того, предоставляет разрешения на чтение данных и макета. В случае запроса пользователь должен дополнительно иметь разрешение на вставку данных для всех таблиц или запросов, изменяемых с его помощью |
Удаление данных (Delete Data) | Таблица, запрос | Удаление данных из таблицы или запроса. Кроме того, предоставляет разрешения на чтение данных и макета. В случае запрос пользователь должен дополнительно иметь разрешение на удаление данных для всех таблиц, изменяемых с его помощью |
§5. Явные и неявные разрешения
Как отмечалось выше, вы можете получить доступ к объекту, благодаря разрешению, назначенному вашему коду пользователя, или через разрешения, предоставленные любой группе, к которой вы принадлежите. Access использует модель «наименее ограничительных» разрешений. Это подразумевает, что вы обладаете наибольшими правами доступа, предоставленными вашему коду пользователя и любой из групп, в которые вы включены. На рисунке 2 показано гипотетическое множество пользователей и групп вместе с разрешениями доступ к объекту Таблица, явно назначенными каждому пользователю и группе. Обратите внимание, что отдельные пользователи могут неявно наследовать дополнительные разрешения или права благодаря их членству в одной или скольких группах. Денис имеет, по крайней мере, разрешения на чтение, обновление, вставку и удаление данных, так как он является членом группы Маркетинг. Будучи владельцем объекта Таблица (как его создатель), Денис также получает права администратора и разрешение на изменение макета, так как Access назначает эти разрешения при создании объекта. А если кто-то другой создал этот объект и позднее передал права владельца Денису, то Денис моя предоставить самому себе любые отсутствующие разрешения.
Поскольку пользователи всегда являются членами группы Users, которой по умолчанию предоставляются все права доступа к любому новому объекту, любой другой пользователь, а не только Admin, может получить полный доступ ко всем вашим объектам. Чтобы проверить разрешения пользователя или группы, сначала откройте нужную базу данных. Вы должны быть владельцем базы данных и всех объектов, которые хотите проверить, или иметь разрешение администратора на доступ к базе данных и объектам. После выбора команды Сервис - Защита - Разрешения (Tools - Security - User And Group Permissions) Access откроет окно диалога.
Рис. 3. Некоторые разрешения, предоставленные группу Users
В списке в левой верхней части окна отображаются пользователи или группы, определенные в базе данных. Установите переключатель Пользователи (Users) или Группы (Groups) в зависимости от того, что вы хотите увидеть. В списке Имя объекта (Object Name) выводятся объекты базы данных. Пользуясь расположенным ниже раскрывающимся списком, можно изменить тип отображаемых объектов. После выбора нужного объекта флажки в нижней части окна отобразят явно назначенные разрешения. Если вы выберете группу Users и просмотрите объекты, то убедитесь, что она имеет полные права доступа ко всем объектам. Кроме того, имея права администратора на доступ к объектам, можно выбирать любые из этих объектов и изменять разрешения, предоставляемые пользователю или группе.
Внимание! Не пробуйте изменять разрешения или владельца объекта до тех пор, пока полностью не поймете все возможные последствия такого действия. Если вы только приступили к изучению системы защиты Access, в целях безопасности работайте с запасной копией своей базы данных. Может случиться так, что вы отмените свое разрешение и не сможете восстановить его!
На вкладке Смена владельца (Change Owner) для любого объекта вы можете определить, кто (пользователь или группа) является его текущим владельцем. В большинстве случаев всеми объектами владеет пользователь Admin. Вы можете выделить один или несколько объектов, выбрать другого пользователя или группу и щелкнуть на кнопке Сменить владельца (Change Owner), чтобы назначить нового владельца. Никогда не передавайте объект другому владельцу, если вы полностью не понимаете возможные последствия такого действия. Прежде чем назначить объекту нового владельца, вы должны твердо знать, как зарегистрироваться в качестве такого владельца. Если вы владеете объектом, то всегда можете передать права владельца другому коду пользователя или группы (или отобрать их).
§6. Использование мастера защиты
Теперь, после знакомства с системой защиты Access, должно быть очевидно, что для реальной защиты базы данных требуется немало усилий. При обычной установке Access стандартная рабочая группа создается на основе информации о пользователе Windows и названии организации. Поэтому любому человеку, имеющему доступ к вашему компьютеру, не представит особого труда выяснить эти сведения и продублировать их. Итак, для начала вам нужна уникальная рабочая группа, чтобы было трудно воспроизвести ее идентификатор, дающий всем членам группы Admins право изменять разрешения. Затем вам потребуется код пользователя, отличный от Admin, в качестве владельца вашей базы данных и всех ее объектов. Кроме этого, для всех объектов необходимо удалить разрешения из группы Users. А чтобы никто не мог изучить ваши данные и тексты процедур с помощью служебных программ для просмотра дисков, вы должны зашифровать базу данных.
Конечно, можно проделать все эти шаги «вручную», но Microsoft предоставляет мастера, помогающего установить защиту на уровне пользователя. Он выполнит за вас перечисленные выше шаги, включая шифрование базы данных. Но прежде чем воспользоваться его помощью, необходимо выполнить несколько операций.
§7. Подготовка к установке защиты
Чтобы мастер защиты успешно выполнил свою работу по установке защиты базы данных, вы должны зарегистрироваться под именем владельца этой базы данных или в том же самом файле рабочей группы, который использовался вами при создании базы данных, и при этом быть в нем членом группы Admins. Вспомните, что одним из важнейших шагов является создание новой рабочей группы с уникальным кодом, которая, скорее всего, будет отличаться от рабочей группы, использовавшейся при создании базы данных. Кроме того, при создании базы данных вы, вероятнее всего были зарегистрированы как пользователь Admin, а для базы данных, владельцем которой является Admin, нельзя установить защиту. В этом случае вам придется назначить нового владельца.