Безопасность IIS7, SQL 2008 и ASP.NET MVC - PullRequest
17 голосов
/ 18 января 2009

У меня есть приложение ASP.NET MVC, над которым я работаю. Я разрабатывал его на Windows Server 2003 с IIS6 и SQL 2008 Express, и все работало замечательно. Недавно я решил попробовать бета-версию Windows 7, поэтому теперь я использую IIS7 и столкнулся с проблемой подключения к моей базе данных, которую, похоже, не могу понять.

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

"Невозможно открыть базу данных" MyDatabaseName ", запрошенную при входе в систему. Ошибка при входе. Ошибка входа для пользователя 'IIS APPPOOL \ MyApplicationName'. "

Я, очевидно, неправильно настроил некоторые настройки безопасности, но я не могу найти хорошую документацию по как , чтобы правильно ее настроить. Я пытался дать разрешения NETWORK SERVICE для базы данных, но это не сработало. Кто-нибудь знает, что мне нужно сделать, чтобы дать разрешения «IIS APPPOOL \ MyApplicationName» для этой базы данных? Я что-то упускаю из виду?

Спасибо ...

Ответы [ 15 ]

1 голос
/ 18 января 2009

Эта ошибка обычно означает, что пользователь, на котором работает ваш сайт (или, что более важно, указывает на пул приложений), не имеет разрешений на использование БД. Вы можете либо проверить в IIS, от какого пользователя работает пул, и дать ему разрешения, либо вместо этого изменить строку подключения SQL, чтобы не использовать доверенную аутентификацию, и указать учетные данные пользователя, у которого есть разрешение, в строке подключения.

Edit: Если вы щелкнете правой кнопкой мыши по разделу «Идентификация пула» и перейдете к свойствам, появится окно, в котором вы можете выбрать одну из 3 учетных записей встроенной системы или указать собственную учетную запись. Либо дайте одной из встроенных учетных записей разрешение для БД, либо используйте учетную запись, которая имеет разрешение. Или оставьте все как есть и измените строку подключения.

0 голосов
/ 14 июня 2012

Да, метод идентификации пула приложений не работает так, как они говорят (во всяком случае, не в IIS7). Я думаю, что в MS есть хакеры, которые специально делают эту защиту запутанной, поэтому вы идете по пути наименьшего сопротивления и оставляете свою систему менее защищенной (чтобы они могли взломать ее позже). - шучу, но на самом деле их модель безопасности - просто безумие, никаких простых (пошаговых) инструкций где-нибудь на MSDN - нада, почтовый индекс!

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

Я столкнулся с той же проблемой между (SQL2008, который установлен на автономном сервере Win-server2003) и (IIS6 с ASP.NET3.5, который установлен на автономном сервере Win-server2003).

Где IIS пытается получить доступ к SQL2008 с помощью какого-либо пользователя в домене «домен \ имя пользователя».

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

Integrated Security=True;
0 голосов
/ 25 мая 2009

У меня точно такая же проблема. Я использую Windows 7 RC. Когда я пытаюсь использовать файл .mdf (расположенный в App_Data), теперь есть способ заставить эту вещь работать. Я попытался изменить идентификатор AppPool для LocalSystem, но он просто не будет работать.

Если я использую «стандартную» базу данных, она будет работать, если я использую LocalSystem, но не будет работать со знаменитым IIS APPPOOL \ DefaultAppPool.

Меня немного беспокоит то, что я не могу найти какую-либо информацию по этому вопросу, кажется, что пользователь 'IIS APPPOOL \ DefaultAppPool' совершенно бесполезен, если вы используете базу данных любого вида ...

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

0 голосов
/ 01 февраля 2009

Если вы посмотрите в описании поля, в нем говорится, что рекомендуется использовать учетную запись «Сетевые службы». Не уверен, почему в Win7 по умолчанию используется параметр ApplicationPoolIdentity.

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