Если я хочу ограничить доступ к базе данных для пользователя, лучше ли будет позволить базе данных обработать это или создать отдельную программу, которая соединит их? - PullRequest
0 голосов
/ 10 февраля 2012

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

Мои знания о сервере MS SQL немного ограничены, хотя и растут, и я знаю, что я могу сделать множество разных вещей в самой базе данных, чтобы ограничить, кто имеет к чему доступ. Другой вариант - отключить базу данных от исходящих соединений и просто запустить приложение на локальном сервере БД, которое обрабатывает входящие соединения через сокеты, проверяет пользователей и проверяет, действительно ли они могут получить доступ к тому, что они пытаются получить. Мне это кажется более простой идеей; Мне нужно беспокоиться только об одном пользователе базы данных, и я могу строго контролировать, какие таблицы (и столбцы, если необходимо) доступны для разных уровней пользователей. Хотя, как я уже сказал, SQL-сервер не является моей компетенцией, и я хочу знать, не слишком ли я усложняю то, что может быть очень легко сделать в базе данных, или, возможно, открываю себе какую-то другую проблему, о которой я не думаю ? Там нет тонны пользователей. Сейчас меньше 10 и не ожидается роста, поэтому не стоит беспокоиться о слишком большом количестве сокетов или потоков, работающих в этом отдельном приложении.

Больше всего меня беспокоит то, что база данных содержит важную личную информацию о людях. Это, конечно, небольшая компания, но в то же время, если кто-то получит эти данные, это будет очень плохо (да, эти данные зашифрованы). Со старым приложением, если у вас была правильная строка подключения, вы могли бы получить и получить все, что хотите, и хотя этого никогда не было, я не хочу быть одним из тех программистов, которые реализовали более строгую защиту после того, как это было необходимо.

1 Ответ

0 голосов
/ 10 февраля 2012

Попытка построить это самостоятельно обречена на неудачу. SqlServer уже имеет множество встроенных функций безопасности.

Я думаю, что оптимальным решением вашей проблемы было бы использование встроенной системы безопасности (т. Е. Пользователи входят в систему со своими действительными учетными данными Windows). Это также сделает все ваши строки подключения идентичными. Затем вы можете предоставить доступ к таблицам / схемам только тем людям, которые должны иметь к ним доступ.

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