Ограниченные разрешения для пользователя SQL Server - PullRequest
1 голос
/ 13 марта 2012

У меня есть приложение .NET, которое подключается к SQL Server 2008 для хранения некоторых данных. Я использую аутентификацию SQL Server, предоставляя имя пользователя sql и пароль моему конечному пользователю в файле app.config. Если нужно что-то изменить, я даю конечному пользователю другие учетные данные.

Как я могу ограничить пользователя sql только в разрешении на чтение / запись данных и выполнение существующих хранимых процедур и всего остального, что должно быть запрещено? Какова наилучшая практика для установки разрешений для пользователя SQL, который приложение использует для подключения к базе данных? Можно ли как-то запретить пользователю входить в Management Studio и связываться с моими данными? Я не ищу идеальное 100% надежное решение, но лучшая практика для этого. Заранее большое спасибо.

Обновление : я работаю в среде общего сервера SQL Server.

Ответы [ 3 ]

4 голосов
/ 13 марта 2012

Вам нужно будет создать нового пользователя SQL, что-то вроде «LimitedUser».Чтобы сделать это в SSMS, выберите папку безопасности сервера, который вы используете, щелкните правой кнопкой мыши, выберите «Новый», выберите «Логин».

Выберите тип проверки подлинности (проверка подлинности с помощью сервера SQL легко управляется) и установите значение по умолчанию.базы данных в вашу базу данных.

Вам нужно будет установить роли сервера, чтобы этот новый пользователь отображал только вашу БД, а на последней странице (статус) установите для входа значение false, чтобы они не могли использовать эти учетные данные для входа в систему.в SSMS и «связывайтесь с вашими данными».

Нажмите OK, и вы закончили создание вашего ограниченного пользователя.

Назначьте его своей базе данных, а затем в SSMS щелкните правой кнопкой мыши наваш БД, выберите Свойства, Разрешения.

Выберите своего пользователя или роль и в таблице разрешений ниже включите только то, что необходимо включить.

0 голосов
/ 07 мая 2013

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

Для вашего клиент-серверного приложения вам нужен VPS-хостинг с вашим собственным экземпляром SQL-сервера, где вы можете создавать логины уровня сервера. Без создания имен входа на уровне сервера существует метод no для защиты клиент-серверного приложения. Любые обходные пути - просто псевдобезопасность.

0 голосов
/ 13 марта 2012

Как я вижу, ваш вопрос полностью связан с безопасностью сервера SQL.

Вы можете ограничить пользовательские разрешения на сервере, базе данных или объектной области, используя оператор GRANT , сервер или * 1005.* базы данных ролей .Например, вы можете назначить роль db_datareader для пользователя, а затем предоставить этому пользователю разрешение EXECUTE для некоторых хранимых процедур (или для всей базы данных).

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

Я не совсем уверен, что вы можете запретить вход в SQL Server Managent studio (SSMS)), но SSMS не будет отображать информацию, которая должна быть невидимой для пользователя с текущими разрешениями пользователя.

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