2012-04-04 3 views
1

Я хочу, чтобы мои приложения подключались к SQL-серверу с помощью учетной записи службы, а не передавали учетные данные пользователя домена. При прохождении необходимо предоставить конкретным пользователям доступ для чтения/записи к базе данных, который я считаю дырой в безопасности.SQL Server: определение пользователя домена при использовании учетной записи службы

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

Можно ли это сделать? Является ли это лучшей практикой, учитывая, что мне нужно каким-то образом получить имя исходного пользователя на SQL-сервер?

+1

Что случилось с использованием проверки подлинности Windows, с группами безопасности? То есть предоставлять доступ к группам, а не отдельным пользователям. –

+0

Потому что это позволяет им выполнять запросы непосредственно к базе данных, минуя правила приложения. Причины, по которым вы можете остановить это, - это то же самое, что и причина защиты вашего приложения от SQL-инъекции. – Trent

ответ

1

Если пользователь регистрируется на SQL Server с использованием входа в SQL Server, невозможно узнать, кто он (на доменном уровне) в SQL Login.

however johh smith's name is still passed through to SQL server 

Да, что вы можете сделать, это каким-то образом захватить имя пользователя AD с помощью User.Identity.Name, а затем отправить его в SQL Server на таблицу аудита вручную, созданный самостоятельно

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