2016-04-27 2 views
2

Я построил базу данных доступа, которая имеет бэкэнд SQL Server. У меня есть упрямый и несколько узнаваемый пользователь, который будет часто заходить в таблицы напрямую. Я пытаюсь остановить это поведение.Предотвращение определенного пользователя от прямого редактирования связанных таблиц

Проблема, с которой я сталкиваюсь, заключается в том, что он является законным пользователем базы данных, которую я должен был предоставить ему для чтения/записи на SQL Server, чтобы он мог использовать db, как и все остальные. Однако, независимо от того, как я собираю или скрываю панели в конце дня, все, что ему нужно сделать, это открыть новый пустой доступ к базе данных, использовать его соединение ODBC, ссылку на бэкэнд SQL Server с помощью связанных таблиц и очистить его чтение-запись доступ позволяет ему напрямую редактировать таблицы.

Есть ли способ дать пользователям возможность читать только или лучше Пока нет доступа к таблицам SQL Server и все еще имеет функцию db правильно? «Правильно» означает, что пользователи могут вносить изменения в записи, такие как редактировать комментарии и т. Д. Подобно тому, как работает веб-сайт. Сам сайт имеет доступ на запись к базе данных бэкэнд, и пользователю разрешено вносить изменения с помощью графического интерфейса пользователя на сайте.

+1

Это прекрасный пример ограничений доступа как корпоративного приложения. –

+0

Используете ли вы проверку подлинности Windows или проверку подлинности SQL Server? – Andre

+1

Возможно ли (в вашем доступе db) считывать данные с представления SQL-сервера (предоставлять доступ к выбору для просмотра) и сохранять данные через хранимую процедуру (выполнить грант)? – Frode

ответ

1

Эта проблема может быть решена только при значительных изменениях приложений.

Вы можете переделать приложение, чтобы использовать только Хранимую процедуру для доступа к данным. Ни один пользователь (по крайней мере, не противный) имеет право на запись на любую таблицу в вашей базе данных. Каждая операция записи выполняется с помощью хранимых процедур.

Это проверенный и проверенный подход к обеспечению безопасности баз данных. Тем не менее, он используется в настоящее время меньше, потому что он требует дополнительных усилий, чтобы заставить его работать с OR-Mappers и другими RAD-инструментами, такими как Access. Если вы реализуете этот подход в Frontend Access, вам придется реализовать каждую операцию записи в базе данных вручную и, таким образом, потерять основное преимущество RAD Access.

Почему этот пользователь редактирует данные в таблицах проблемы?

Если ваша база данных имеет надежный набор правил проверки, реализованных с ограничениями и триггерами, и имеет надлежащий аудит на месте, чтобы узнать, какой пользователь изменил что-то, тогда это не должно быть проблемой. Ты просто позволил ему сделать это, если захочет.

Но почему пользователь делает это вообще?

Если какой-либо пользователь скорее использует обратные таблицы непосредственно для чтения и записи данных, это указывает на огромную проблему удобства использования с вашим приложением. Обратите внимание на проблемы с удобством использования в вашем внешнем приложении, и проблема исчезнет, ​​принося пользу всем вашим пользователям!


PS: Концепция ролей приложений, которая может быть другим подходом к решению этой проблемы, не работает с Access. Access создает новые подключения к базе данных самостоятельно. Нет возможности активировать роль приложения для этих соединений.

+0

«Если ваша база данных имеет надежный набор правил проверки, реализованных с ограничениями и триггерами, и у вас есть правильный аудит, чтобы узнать, какой пользователь изменил что-то, тогда это не должно быть проблемой. Вы просто позволяете ему делать это, если захочет. " - за исключением одной вещи (если только она не изменена в последних версиях) - при открытии редактора таблиц в Access это требует довольно недружественных блокировок в таблицах, что может помешать другим пользователям выполнять любые вставки/обновления/удаления. –

+0

@ Damien_The_Unbeliever: Хороший момент! Это действительно проблема, которая останется. И нет, это не изменилось в последних версиях Access. – PhilS

+0

У меня есть другие базы данных Access, в которых используется соединение ADO, запеченное в VBA, и пользователи полностью заблокированы из таблиц SQL Server. Тем не менее, я столкнулся с проблемой в этом, где мне пришлось использовать непрерывную форму, и я не мог попробовать, чтобы я мог успешно использовать то же соединение ADO для правильной работы. Знаете ли вы, что непрерывные формы используют хранимые процедуры? – Spainy32

0

я должен был дать ему доступ на чтение/запись для SQL Server, чтобы он мог использовать дб, как и все остальные

Вы не можете и дать ему доступ и нет.

Единственный выход - это обратиться к руководству с просьбой о формальных правилах и сообщить пользователям следовать им и вести себя.

+0

Он - управление, и я пробовал обратиться к нему со своим начальством. Я должен остановить его с помощью приложения. – Spainy32

+0

Ах, тогда это может стать трудным. Затем вам следует позаботиться о регулярных резервных копиях, и, всякий раз, когда он наносил какой-либо ущерб, утверждают, что база данных должна быть восстановлена. – Gustav

0

Получите ваш ИТ-отдел, чтобы удалить Access, установить время выполнения Access и заставить его использовать ваше приложение таким образом.

Смежные вопросы