олицетворение доступа к базе данных - PullRequest
0 голосов
/ 09 декабря 2010

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

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

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

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

Обновление
Здесь есть поток переполнения стека здесь относительно роли приложения SQL Server

Ответы [ 2 ]

0 голосов
/ 09 декабря 2010

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

Если вы включили Kerberos / Delegation, то же самоеприменяется.Ссылки Один и Два

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

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

0 голосов
/ 09 декабря 2010

Зависит.

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

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

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