Ограниченные разрешения для пользователя SQL Server

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

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

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


person Claudiu Constantin    schedule 13.03.2012    source источник


Ответы (3)


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

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

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

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

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

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

person callisto    schedule 13.03.2012
comment
В качестве альтернативы вы можете использовать оператор grant. - person Colin; 13.03.2012
comment
Я могу создать только пользователя, а не логин. Я подключаюсь к среде SQL Server с общим хостингом. Было бы здорово, если бы вы могли настроить свои шаги для создания пользователя SQL. - person Claudiu Constantin; 13.03.2012
comment
как мне назначить его в вашу базу данных? И как мне выбрать разрешения - в свойствах нет параметра «Разрешения». - person jprusakova; 18.06.2012

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

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

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

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

person Alex_L    schedule 13.03.2012

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

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

person Monstieur    schedule 07.05.2013