#sql-server #sql-server-2005
#sql-сервер #sql-server-2005
Вопрос:
Пожалуйста, посоветуйте, как ограничить доступ пользователей к mssql: просто подключайте и выполняйте только определенный список функций или хранимых процедур. Проблема в том, что роль ‘public’ по умолчанию предоставляет больше прав, чем необходимо — перечислять базы данных, получать список пользователей и т.д. Как закрыть столько, сколько возможно (запретить все), и после этого открывать только то, что разрешено?
Реальная ситуация следующая: сайт-партнер попросил не получать данные через веб-сервис xml, а иметь прямое подключение к mssql, и я собираюсь создать для них табличную функцию или хранимую процедуру с параметрами, но хочу скрыть все, что происходит внутри сервера.
Спасибо.
Ответ №1:
Вы можете отказать им в разрешениях, которые им не понадобятся. Например, вы можете DENY VIEW ANY DATABASE
сделать так, чтобы они не могли видеть другие базы данных на сервере. Существует множество опций, доступных через средство ЗАПРЕТА (их так много, что у них есть отдельные страницы для тех, которые применяются на уровне сервера, и для тех, которые применяются на уровне базы данных).
Просто:
DENY VIEW ANY DATABASE to <user> --Run in master
и
DENY VIEW DEFINTION to <user> -- run in the database you've given them connect permission
должно быть достаточно, чтобы они ничего не могли видеть или выбирать из каких-либо таблиц. Затем вам просто нужно явно предоставить им разрешения, которые вы хотите, чтобы они имели.
Комментарии:
1. когда я проверяю
sp_helprotect null,'public'
— я хочу закрыть все доступные действия, правильно ли устанавливать ограничения? Или другой доступный простой способ, когда я могу просто запретить все и разрешить именно то, что мне нужно?