Как я могу заблокировать базу данных MS-SQL от своих пользователей и при этом получить к ней доступ через ODBC? - PullRequest
2 голосов
/ 08 сентября 2008

У меня есть приложение ms-access, которое обращается к ms-sql db через соединение ODBC. Я пытаюсь заставить своих пользователей обновлять данные только через часть приложения, но мне все равно, будут ли они читать данные напрямую или через свою собственную базу данных ms-access (они используют ее для создание специальных отчетов).

Мне нужен способ сделать данные редактируемыми только в том случае, если они используют скомпилированный файл .mde, который я им распространяю. Я знаю, что могу сделать данные доступными только для общего населения и редактировать их для некоторых пользователей.

Есть ли способ заставить ms-sql сделать данные редактируемыми, только если они обращаются к ним через мой консервированный mde?

Подумал, есть ли способ получить ms-доступ для входа в базу данных от имени другого пользователя (или изменить имя входа после подключения)?


@ Джейк,
Да, он использует формы. Я просто хочу переключать пользователей один раз, когда у меня появляется всплывающая панель запуска / основного меню.

@ Питер,
Это действительно направление, которое я возглавляю. Чего я не определил, так это как переключиться на второй идентификатор. Я не очень беспокоюсь о том, что пароль будет перехвачен, все пользователи являются внутренними и находятся во внутренней локальной сети. Если они могут прослушать этот пароль, они, безусловно, могут узнать его для моего привилегированного ID.

@ вообще никого,
Прямо сейчас его безопасность мраком. Я дал использовать специальный .mdb для составления отчетов, который позволит им читать данные, но не обновлять их. Они не знают о связи с таблицами через соединение ODBC. Чуть более грамотный пользователь ms-access / DB может обойти то, что я сделал за считанные секунды, - и есть несколько людей, которые считают себя администраторами баз данных, так что в конце концов они поймут.

Ответы [ 2 ]

2 голосов
/ 08 сентября 2008

Есть способ сделать это, который эффективен для внутренних пользователей, но может быть взломан. Вы создаете два идентификатора для каждого пользователя. Одним из них является идентификатор отчета, который имеет доступ только для чтения. Это идентификатор пользователя, о котором пользователь знает: Fred / mypassword

Второй - это идентификатор, который может выполнять обновления. Этот идентификатор - Fred_app / mypassword_mangled. Они входят в ваше приложение с Фредом. Когда ваше приложение обращается к данным, оно использует идентификатор приложения.

Это можно прослушать, но для многих приложений этого достаточно.

1 голос
/ 08 сентября 2008

Разрешено ли в вашем приложении обновление связанных таблиц или оно проходит через формы? Похоже, ваша идея использовать централизованного пользователя с различными ролями - это путь. Да, вы можете менять пользователей, но я могу добавить больше кодирования, и как только вы начнете добавлять все больше и больше кода, другие решения (хранимые процедуры и т. Д.) Могут показаться более привлекательными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...