2010-12-09 3 views
0

Моя цель - предотвратить прямой доступ пользователей к серверу базы данных. Один из способов - создать службу WCF или веб-службу посередине между интерфейсом и сервером базы данных.Идентификация доступа к базе данных

Прежде всего, пользователи будут аутентифицированы для приложения. Впоследствии приложение будет подключаться через службу WCF для выполнения бизнес-логических операций. Служба WCF будет выполнять операции, связанные с базой данных, используя одну учетную запись Windows. Это предотвратит доступ других пользователей к серверу базы данных, поскольку разрешение будет предоставлено только одной учетной записи Windows.

Вот мои вопросы: хотя доступ к базе данных предоставляется только одной учетной записи Windows, а WCF будет использовать эту учетную запись Windows для выполнения операций, связанных с базой данных, можно ли пометить все операции, связанные с базой данных, с учетными данными журнала в пользователе?

Обновление
Спасибо за ответы. Похоже, что вышеупомянутый сценарий не достижим. В настоящее время я изучаю функцию роли приложения SQL 2008. Один из примеров: here. Но после дальнейших исследований, по-видимому, проблема с объединением соединений.

Update
Существует переполнение стека потока here о роли приложений SQL Server

+0

Я не знаю никого, кто использует роли приложения ... – gbn 2010-12-09 13:52:51

ответ

0

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

Если вы включили kerberos/делегирование, то же самое относится. Ссылки One и Two

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

Примечание: каждый пользователь MS Office имеет MSQRY32.EXE, который действует как инструмент запроса. Если вы не хотите прямого доступа к БД, тогда вам нужно убедиться, что не установлены или не установлены разрешения

0

Зависит.

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

Это известное ограничение, и причина в том, что это олицетворение создаст токен, который доставит вас в поле, но это не будет проходить в другую коробку. Я попытался найти Q & A, где парень MS ответил, но все еще был в состоянии. Всякий раз, когда я его нахожу, будет обновляться.

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