Могу ли я ограничить разрешения пользователя в SQL Server 2008 или C # во время выполнения? - PullRequest
0 голосов
/ 03 мая 2011

У меня есть веб-сайт, над которым я работаю, и он размещен на сайте общего хостинга, который дает мне 1 соединение с базой данных.

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

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

Так что мой вопрос - есть ли ЛЮБОЙ способ ограничить ЛЮБУЮ функциональность вообще во время выполнения ... возможно, как параметр, передаваемый в строке соединения?

Или я могу что-то сделать в C #? (пример: я могу начать транзакцию и откатить ее назад)?

Ответы [ 3 ]

0 голосов
/ 03 мая 2011

Вы можете использовать оператор EXECUTE AS t-sql, чтобы переключить контекст выполнения для сеанса на другого пользователя. Вы можете использовать WITH COOKIE для блокировки контекста выполнения до тех пор, пока вы не укажете значение cookie с помощью оператора REVERT.

0 голосов
/ 04 мая 2011

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

Это грубое решение, но, как сказал Фактор Мистик в своем комментарии, «получить лучший хостинг», вероятно, является лучшим решением (имеется в виду - проблема здесь лежит на хостинговой компании).

0 голосов
/ 03 мая 2011

Существует ли причина, по которой вы не можете создавать новые учетные записи для каждого пользователя? Затем используйте встроенную защиту сервера, чтобы ограничить возможности каждого пользователя.

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

grant select on my_table to limited_user_group
deny insert, update, delete on my_table to limited_user_group
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...