2010-01-25 5 views
2

Мы построили инфраструктуру C#, которая должна пройти все изменения данных в нашей базе данных. Мы не хотим, чтобы кто-либо делал изменения данных непосредственно в базе данных. Все изменения должны проходить через наши рамки.Вопрос авторизации/безопасности SQL Server

Мой вопрос в том, как обеспечить соблюдение этого? Как мы можем заставить SQL Server разрешать только те команды Insert/Update/Delete, которые создаются из нашей системы, а не какие-либо потенциально сотни людей, которые могут быть подключены через SSMS или какой-либо другой инструмент?

У меня нет большого опыта в области безопасности и аутентификации SQL Server, поэтому мне нужно какое-то направление в этом отношении.

Большое спасибо.

ответ

2

Создание SQL войдите в приложение для своего приложения и предоставите ему разрешения на хранимые процедуры или базовые таблицы - независимо от ваших потребностей.

Не предоставляйте доступ никому другому.

Но вы упоминаете «фреймворк», что означает, что многие приложения и имена пользователей будут использовать его ... поэтому, возможно, вам нужен другой подход.

0

Один из способов будет за счет использования триггеров и проверки либо APP_NAME, host_name

if app_name() in('SQL Query Analyzer','Microsoft SQL Server Management Studio') 
raiserror (.....) 
return 

или запретить запись/обновление/удаление доступа ко всем логинов, но тот, который использует ваше приложение

+0

Как насчет SQLCMD? –

1

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

Смежные вопросы