Как подключиться из IIS к удаленному SQL через Windows Auth без учетной записи службы?

2

У меня есть довольно типичное приложение .NET, которое использует Entity Framework, MS SQL и IIS. Приложение было разработано с расчетом на то, что сервер SQL будет работать локально для IIS, и с проверкой подлинности SQL для подключения к базе данных. Пользователи будут входить в приложение через проверку подлинности Windows.

Недавно мне было поручено разделить веб-серверы и серверы SQL на два сервера; однако мне больше не разрешается использовать проверку подлинности SQL, но вместо этого она должна использовать проверку подлинности Windows.

Моя новая строка подключения теперь выглядит примерно так:

 <add name="MyDbConn2" connectionString="Initial Catalog=MyDb;Data Source=MyServer;Integrated Security=SSPI;"/>

,

Я являюсь моей локальной средой разработки, я попытался настроить пользователя AppPool для учетной записи службы (например, «домен \ пользователь») и настроить <identity/>в файле web.config использование того же пользователя AppPool, например, так:

<identity impersonate="true" userName="domain\User" password="****"/>

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

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

jktravis
источник

Ответы:

0

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

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

pholcroft
источник
Учетная запись NetworkService является предопределенной локальной учетной записью, используемой диспетчером управления службами. Эта учетная запись не распознается подсистемой безопасности, поэтому вы не можете указать ее имя при вызове функции LookupAccountName. Он имеет минимальные привилегии на локальном компьютере и действует как компьютер в сети. См. Ссылку docs.microsoft.com/en-gb/windows/win32/services/…
Тони Донг
Да, я думаю, что вы правы. Вы можете сделать только первую часть моего ответа. Если у сетевой службы недостаточно прав для запуска приложения, похоже, вам потребуется другое решение.
pholcroft