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

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

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

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


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

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

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

Это было полезно?

Решение

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

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

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

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

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

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