Некоторые мысли о управлении правами пользователей в хранилище данных Jet:
, если вы действительно хотите, чтобы заблокировать вещи вниз, вы никогда не будете управлять с Jet, поскольку это по своей сути уязвимы, потому что пользователь должен имеют WRITE доступ к файлу MDB.
Если вы довольны контролем прав на данные в своем интерфейсном приложении, вы можете предоставить разные интерфейсные терминалы (один для пользователей WRITE и один для READ-ONLY).
Если вы не используете формат ACCDB, вы можете использовать безопасность на уровне Jet. Это удивительно сложная технология, если вы действительно хотите заблокировать доступ к данным - вы должны следовать всем инструкциям в White Paper White Paper к письму, или ваши данные будут открыты для всех, у кого есть стандартный файл рабочей группы Jet. И даже после того, как вы закончите, это является crackable (хотя не без расходов $$$ купить программное обеспечение для взлома). BTW, пароли базы данных до того, как Access 2007 были совершенно бесполезны и легко взломали. Access 2007 повышает безопасность, повышая уровень шифрования данных, но пароль базы данных вызывает множество проблем и не позволяет вам иметь более одного уровня доступа (если вы не предоставляете два разных интерфейса с разными паролями - ср. # 2).
Если вы просто хотите использовать Jet ULS для управления доступом в своем интерфейсе, вы можете добавить своих пользователей в группы, а затем проверить членство в группе в интерфейсных пользовательских интерфейсных объектах (т. Е. Формах) и дать WRITE разрешение пользователям, которые находятся в группе пользователей, которая обеспечивает этот уровень доступа.Самый простой способ сделать это, предполагая, что у вас больше пользователей READ-ONLY, чем у тех, у кого есть разрешение WRITE, заключается в том, что пользователи READ-ONLY регистрируются как пользователь admin по умолчанию (т. Е. Вы ничего не делаете для их настройки) и имеете WRITE пользователи регистрируются в качестве пользователя в группе с разрешением WRITE. Другими словами, если они не вошли в систему как пользователь «admin», у них есть полный доступ WRITE.
Другой альтернативой является использование групп безопасности NTFS. Код API для этого находится на Access Web, но для этого требуется администратор Windows. Опять же, вы ограничиваете доступ в своем внешнем приложении, а не ограничиваете права пользователя во внутреннем MDB.
только Jet ULS фактически позволяет предотвратить READ-ONLY пользователя (который не треснул файл рабочей группы) от редактирования данных. Все пользователи должны иметь сетевой доступ к вашему внутреннему MDB, но вы можете усложнить им доступ к данным, даже не перепрыгивая через обручи при внедрении Jet ULS. Вот некоторые шаги, чтобы сделать это (и да, все они являются формой «безопасность через маскировку» и будет только замедлить READ-ONLY пользователь определяется взломать ваш задний конец):
правой кнопкой мыши каждой таблицы на вашем заднем конце и включите атрибут HIDDEN. Это также можно сделать в коде (см. SetHiddenAttribute в справке). Естественно, если конечный пользователь устанавливает свои параметры доступа для отображения скрытых таблиц, это ничего не сделает. Но большинство конечных пользователей об этом не знают, и если ваши пользователи запускают ваше приложение во время выполнения, у них не будет такой возможности.
Изменения Startup Properties в серверной базе данных, чтобы не дисплея окна базы данных и на не использования специальных ключей. Вы можете найти код для настройки свойств запуска в разделе справки «AllowBypassKey».
В фоновом режиме создайте макрос с именем AutoExec с помощью одной команды Quit. Если отключены специальные клавиши, невозможно предотвратить выполнение этого макроса, и как только пользователь попытается открыть задний конец (даже если они удерживают клавишу SHIFT, то есть стандартное нажатие клавиши для обхода всех подпрограмм запуска) , база данных (и экземпляр Access) будет закрыта.
Теперь все эти вещи могут быть отменены кем-то, кто знает, что они делают. Если вы дадите мне задний план с этими реализованными вещами, я буду в нем примерно через 5 минут, просто запустив код в другой базе данных Access, чтобы изменить все эти свойства запуска, чтобы дать мне доступ.
Но ваши конечные пользователи, вероятно, не обладают таким уровнем знаний. Любой такой пользователь, который, вероятно, должен быть пользователем WRITE, нет? :)
Да, конечно, все эти вещи легко взломать любой, кто знает, как это сделать. Но также легко пробиться в ваш дом за секунды для человека с правильными инструментами. Это не означает, что вы не запираете двери, даже если это не пуленепробиваемая защита от взлома.
Другое соображение состоит в том, что если вы предоставляете своим пользователям только время выполнения Access, а не полный доступ, они не смогут отменить любые из этих параметров в вашем внутреннем MDB.
Последняя всего:
Безопасность не только техническая проблема - большинство из них, на самом деле, люди, проблемы. Для того, чтобы люди могли выполнять свою работу, вы должны доверять им в определенной степени, предоставляя им доступ к вашим данным.Например, нет технического решения проблемы ненадежного системного администратора, и единственный способ полностью защитить ваши данные - не предоставлять им никакого доступа к нему вообще.
Я думаю, что у вас есть неправильный заголовок вашего вопроса. Вы не спрашиваете о безопасности, но об управлении правами пользователя на данные. Это может быть достигнуто с помощью безопасности Jet ULS, если вы не используете формат ACCDB Access 2007. –