Безопасность на уровне пользователя MS Access для формы, которая должна быть прочитана, но таблица должна быть скрыта

StackOverflow https://stackoverflow.com/questions/930654

  •  06-09-2019
  •  | 
  •  

Вопрос

Может ли безопасность на уровне пользователя позволить кому-либо получить доступ к форме, но не к таблице?У меня есть форма, которая подключена к таблице с помощью команды "ВЫБРАТЬ".Он не "ОБНОВЛЯЕТ" и не "УДАЛЯЕТ".Я бы хотел, чтобы пользователь получил доступ к моей форме, но я не хочу, чтобы они могли просматривать детали в базовой таблице.Я перепробовал всевозможные комбинации в мастере обеспечения безопасности на уровне пользователя, но по какой-то причине моя форма остается пустой, если я не предоставлю пользователю полный доступ для каких-либо действий.Есть какие-нибудь идеи?Кстати, я работаю в Access 2003.

Нет правильного решения

Другие советы

Вы могли бы создать MDE и предоставить его своим пользователям.Если вы сделаете это, пользователи не смогут видеть ничего, кроме предоставленного вами пользовательского интерфейса.

Если ваши таблицы находятся в той же базе данных Access, что и формы и запросы, вам сначала нужно "разделить базу данных" на внешний интерфейс и серверную часть.Видишь:

http://databases.about.com/od/tutorials/ss/splitaccessdb.htm

для получения информации о том, как это сделать.Внешний интерфейс содержит все, кроме таблиц.Серверная часть содержит таблицы.Внешний интерфейс связан с внутренними таблицами с помощью объектов "связанных таблиц" во внешнем интерфейсе.

После разделения базы данных откройте интерфейс в Access и создайте MDE, выбрав в строке меню Сервис / Утилиты базы данных / Создать файл MDE.MDE - это то, что вы предоставляете пользователям.Они открывают его так же, как и любую другую базу данных, за исключением того, что они не могут спроектировать ни один из объектов.

Убедитесь, что у вас есть макрос AUTOEXEC, определенный во внешнем интерфейсе, чтобы при открытии MDE пользователем у него была точка входа.Пользователь не может видеть ни один из объектов в MDE, поэтому, если у вас нет макроса AUTOEXEC для открытия первой формы, при попытке открыть MDE ничего не произойдет.

Если вам нужна возможность управлять связанными таблицами в MDE, разрешив пользователю подключаться к внутренней базе данных с помощью диалогового окна Файл / Открыть, смотрите Следующую статью:

http://www.mvps.org/access/tables/tbl0009.htm

Конечно, ничто из этого не мешает вашим пользователям открывать серверную базу данных.Если вам нужна более надежная защита, вы можете увеличить размер серверной базы данных до SQL Server Express.Более подробная информация здесь:

http://office.microsoft.com/en-us/access/HA102755371033.aspx

То, что вы ищете, - это запрос RWOP.Это означает "запуск с разрешения владельца".

Чтобы это сработало, предполагая, что вы уже запустили мастер обеспечения безопасности для своих интерфейсных и серверных баз данных и удалили разрешения пользователям даже на чтение таблиц, затем вы создаете сохраненный запрос в качестве источника записей вашей формы.В свойствах запроса по умолчанию задано РАЗРЕШЕНИЕ на ЗАПУСК как "пользователя". Измените это значение на "владельца" и сохраните запрос.Запрос будет выполняться с любыми разрешениями для базовой таблицы, которые есть у владельца запроса.Если вы работаете от имени администратора с полными правами доступа, вам захочется установить для разрешений сохраненного запроса значение только для чтения (или создать запрос при входе пользователя в систему, который имеет доступ к таблицам только для чтения - первое сделать гораздо проще).

Несколько предостережений:

  1. безопасность на уровне пользователя - сложная штука.Если вы пропустите хотя бы один шаг, описанный в техническом документе ULS по безопасности, ваше приложение не будет защищено.Способ проверить это - открыть Access с файлом рабочей группы по умолчанию, а затем посмотреть, можете ли вы получить доступ к объектам в своей базе данных, войдя в систему как пользователь admin по умолчанию.Если вы можете, значит, где-то на этом пути вы допустили ошибку.

  2. безопасность на уровне пользователя может взломать любой, кто захочет.Это не значит, что он бесполезен, это просто означает, что он не пуленепробиваемый.Я не так сильно беспокоюсь об этом, поскольку считаю безопасность не столько технической проблемой, сколько проблемой персонала - вы должны предоставить сотрудникам достаточные привилегии для выполнения их работы, и вы должны доверять им, что они не будут злоупотреблять предоставленными вами привилегиями.

  3. если вы используете Access 2007 и используете формат ACCDB, запросы RWOP вам недоступны, поскольку безопасность на уровне пользователя Jet не поддерживается для формата ACCDB.Однако, если вы используете формат MDB, он будет отлично работать в формате A2007.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top