Блокировка SQL Server для конкретного приложения на веб-сервере - PullRequest
1 голос
/ 17 ноября 2008

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

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

Ответы [ 3 ]

0 голосов
/ 17 ноября 2008

В строке подключения вы можете установить Application Name=MyAppName - это не настоящая защита, но вы можете проверить это в своих SP (sysprocesses - в столбце program_name) и через sp_who.

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

Вы можете регулярно проверять это с помощью некоторого автоматизированного T-SQL, чтобы убедиться, что никто не сделал глупостей.

Я никоим образом не защищаю это , но вы можете сделать что-то подобное для представлений (сравнивая SPID текущего процесса и имя_программы):

CREATE VIEW YourViewNameHere
AS
SELECT *
FROM YourTableNameHere
WHERE EXISTS (
    SELECT spid, program_name
    FROM sys.sysprocesses
    WHERE program_name = 'YourProgramNameHere'
        AND spid = @@SPID
)
0 голосов
/ 17 ноября 2008

Самый простой способ - просто заблокировать его на уровне пользователя. Вы можете запустить ваше win / веб-приложение в определенном контексте безопасности, для которого настроены необходимые права.

Это дает преимущество, заставляя пользователей запускать ваше приложение для взаимодействия с SQL, и не может просто открыть Enterprise Manager или что-то подобное.

0 голосов
/ 17 ноября 2008

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

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