Как ограничить разрешения программы на C# только для чтения в базе данных SQLServer?

Я написал несколько C#, который подключается к живой производственной базе данных. Я хочу предоставить моему приложению доступ только для чтения к БД, но не уверен, как этого добиться.

Есть ли какой-нибудь тривиальный способ сделать это, изменив строку подключения?

Насколько я понимаю, приложение будет входить в систему с учетными данными человека, выполняющего приложение, и, следовательно, может иметь или не иметь права записи в БД на основании этого факта. Могу ли я статически ограничить разрешения приложения, чтобы, если кто-то изменит программу на что-то разрушительное, позже, любая манипуляция не удалась?

Извиняюсь за то, что вопрос может быть тривиальным, но это мое первое предприятие в мире программирования на MS.

Спасибо,

Гав

5 ответов

Решение

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

Если вы не хотите, чтобы разные люди имели разные разрешения, вы должны настроить учетную запись для приложения и использовать в строке подключения.

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

Пусть он войдет на сервер базы данных как пользователь, у которого есть только права на чтение. Это и просто не пытайтесь что-то записать в базу данных.

Вы всегда можете предоставить пользователю подключение к вашей базе данных, только роль "db_datareader" в этой базе данных.

db_datareader дает вашему пользователю разрешение SELECT для всех таблиц, но не более того.

http://i40.tinypic.com/2pp0xet.png

Существует два основных типа аутентификации SQL Server:

  1. Интегрированная проверка подлинности Windows и
  2. Смешанный режим проверки подлинности (проверка подлинности SQL Server)

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

См. http://msdn.microsoft.com/en-us/library/ms144284.aspx для получения дополнительной информации.

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

Другие вопросы по тегам