Яку роль відіграє “Ідентифікація пулу додатків” для пулу програм?


16

Коли ми говоримо про безпеку IIS 7.5, AFAIK:

Ідентифікація пулу додатків визначає, на кого працює моя веб-програма.

Метод аутентифікації визначає, на кого клієнти мають автентифікацію.

У мене віртуальна папка налаштована так:

  • Я використовую анонімну автентифікацію з розрахунком на те, що всі клієнти повинні бути аутентифіковані як IUSR .
  • Я надаю IUSR повний контроль над папкою.
  • Ідентифікатор мого пулу додатків встановлений як обліковий запис XXX, який не має дозволу на папку. (Я навмисно це встановив)

Але виявляється, що я не можу переглядати файли в цій папці. Щойно я даю дозволу облікового запису XXX отримати доступ до цієї папки, все піде добре.

Отже, яку роль відіграє ідентифікація пулу додатків в анонімній аутентифікації? Зовсім несподівано, що я повинен дати дозволу облікового запису App Pool Identity отримати доступ до папки. Я думав, анонімної автентифікації буде достатньо?

Спасибі.

Відповіді:


18

Тут багато перевантажених термінів, а також зміни між IIS 7 та 7.5.

Ідентифікація пулу додатків проти облікового запису пулу

Почнемо з ідентифікації пулу додатків (нижній регістр I, також обліковий запис пулу додатків ):

Як я це розповідаю, обліковий запис пулу додатків - це обліковий запис, який використовується для завантаження пулу додатків, і особистість, яку припускає пул додатків, коли він не видає себе за когось іншого.

Отже, незалежно від того, яку особу ви надаєте пулу додатків, потрібно буде мати змогу читати файли в папці вмісту : особливо {але не обмежуватись ними} будь-якими файлами web.config (які є частиною конфігурації IIS, а також керувати тим, що Басейн додатків буде робити).

Якщо він не може отримати доступ до папки, він може припустити, що там може бути важливий (змінюється гра) файл web.config і відображатиметься помилка. Тому обліковий запис пулу додатків потребує читання доступу до всіх папок вмісту.

ApplicationPoolIdentity

Навіщо відрізняти обліковий запис пулу додатків (ідентифікація пулу додатків) від ідентичності пулу додатків? Оскільки ApplicationPoolIdentity, що використовується спеціальними капіталами, є новим типом облікового запису - керованим обліковим записом служби - введений та зроблений за замовчуванням у IIS 7.5 / Windows 2008 R2, а також доступний у Windows 2008 SP2 (але не за замовчуванням).

Див. Ідентифікатори пулу програм на IIS.Net

Коли ви створюєте веб-сайт під R2 за допомогою GUI:

  • буде створений пул додатків для розміщення цього веб-сайту та
  • тип облікового запису буде ApplicationPoolIdentity, а не мережевий сервіс (за замовчуванням 2008 року), локальна служба або локальна система.

З RTM 2008 року обліковим записом у пулі додатків за замовчуванням був мережевий сервіс та унікальний ідентифікатор / унікальний пул додатків; новий тип облікового запису R2 / SP2 AppPoolIdentity - це обліковий запис, схожий на мережеві послуги (тобто це комп'ютер під час підключення поза вікном), але запобігає виданню себе іншим пулом додатків у тому ж полі.

Повернутися до початкового питання:

  • Обліковий запис пулу додатків визначає, ким працює ваше додаток, коли він не видає себе за когось іншого

  • Метод аутентифікації описує, як ви збираєтесь аутентифікувати клієнтів (щоб видати себе за себе)

  • В обліковому записі " Анонімний користувач" визначено, кого ви збираєтеся запускати, як під час представлення себе за запит, який не має автентифікації - IUSR є таким користувачем.

Між іншим, за допомогою IIS 7.5 ви можете встановити обліковий запис користувача Anonymous як ідентифікатор пулу додатків (властивості методу автентичності Anonymous), що може спростити ізоляцію та захист вмісту для певного веб-сайту.

Встановіть дозволи, використовуючи IIS AppPool \ YourSiteName для формату імен. (див. також цю публікацію )


4

Ви бачите дві речі, які зазвичай плутаються в ASP.NET:

  1. "ідентифікація користувача" - автентифікація облікового запису користувача не має нічого спільного з обліковим записом або особою, яка фактично працює під II та ASP.NET. Анонімна автентифікація дозволяє будь-якому користувачеві отримати доступ до будь-якого загальнодоступного контенту, не надаючи клієнтському браузеру ім'я користувача та пароль. Анонімний обліковий запис IUSR, який за замовчуванням отримує автентифікацію в IIS, просто застосовує доступ до вмісту загальнодоступних веб-сайтів. Це не впливає на процеси або ресурси, які використовуються в основі II-служб або ASP.NET-служб.
  2. "ідентифікація програми" - це фактичний обліковий запис "WindowsIdentity" на сервері, який фактично працює за IIS та ASP.NET, що є обліковим записом ідентифікації пулу додатків, присвоєному пулу II і наданим ASP.NET. Ваш процес ASP.NET за замовчуванням працює в цьому обліковому записі ідентифікації пулу додатків (називається віртуальним обліковим записом у версіях II версії 7.5+).

Пояснення: По-перше, "автентифікація" в ASP.NET - це лише подія, яка зазвичай встановлюється в web.config, яка входить у певний обліковий запис користувача, який передається як ток користувача IIs ASP.NET як звичайний HttpContext об'єкт ... тобто поточний сеанс або контекст поточного користувача. Він насправді не змінює WindowsIdentity, який запускає процес ASP.NET, просто передає йому маркер ідентифікатора користувача. Використовуючи HttpContext, ваш код може використовувати цей ідентифікатор або ім'я для зберігання прав на базу даних у різних розділах вашого веб-сайту. Але це не буде впливати на доступ до файлів через ASP.NET, оскільки це не впливає і не змінює ідентичність фактичного облікового запису "процес", який запускає ASP.NET під II.

Це не відбувається, поки ви не зробите "Імперсонація", яка скаже ASP.NET видавати себе за все, що маркер передається йому II, а потім запускається під цим ідентифікатором облікового запису. Ви можете встановити себе в своїй веб-конфігурації. Якщо ви активізуєте себе в ASP.NET, тоді WindowsIdentity змінюється на робочому процесі на той, який засвідчується автентифікованим обліковим записом, передається ASP.NET з IIS, і ви можете потім отримувати доступ до файлів, виходячи, звичайно, з прав, які вам призначені для цього облікового запису користувача. Важливо відзначити, коли це відбувається тимчасово, і ASP.NET може повернутись до своєї ідентичності процесу за замовчуванням, яка є в поточних версіях IIs, знову обліковий запис ідентифікації пулу додатків, призначений даному пулу додатків.

Коли IIs просто використовує звичайний анонімний обліковий запис користувача без встановленого явного аутентифікації в ASP.NET, IIs запускається за замовчуванням призначеного веб-сайту облікового запису Pool Application Pool Identity Pool та передає його ASP.NET та робочому процесу, який працює за ним. Цей обліковий запис ідентифікації пулу додатків обробляє всі запити для IIS та запускає ASP.NET для цього сайту.

Коли IIs запускається під цією установкою та доступ до нього користувач, він фактично аутентифікує за кадром за замовчуванням анонімний рахунок IUSR, який визначає доступ до веб-сторінок та інших основних ресурсів. Але цей рахунок НЕ передається ASP.NET. І це не впливає на запуску IIS Identity Pool Application, під яким працює ASP.NET.

Якщо ви встановите Impersonate на "true", скажімо, у своїй web.config, і ви використовуєте за замовчуванням анонімний обліковий запис IUSR в II для загальнодоступного доступу, і ви встановлюєте явно справжню властивість anonimnaAuthentication у web.config (замість використання Windows або інший обліковий запис для входу), II будуть викидати ідентифікатор пулу додатків та II, і тепер ASP.NET запустить свої процеси застосування як анонімний обліковий запис, що підтверджується автентичністю IUSR, і імперсмен.

Коли ви зробите це, ASP.NET і його процеси тепер працюватимуть під обліковим записом IUSR .... тобто процес додатків ASP.NET запустить свій акаунт WindowsIdentity як обліковий запис IUSR. Тепер ви можете застосувати доступ для читання / запису до цього анонімного облікового запису IUSR та до папок, до яких цей обліковий запис має доступ. (Примітка. Не забудьте додати обліковий запис процесу за замовчуванням, обліковий запис пулу додатків для пулу, а також права до цих папок. Це відповідно до рекомендацій Microsoft)

Щасти!


2

У грі є два контексти аутентифікації. Процес веб-сервера (який обробляє ваші веб-запити) працює як користувач App Pool Identity. Коли надходить запит на ваш віртуальний хост, пул додатків видає себе за користувача, вказаного в специфічному веб-сайті "Анонімні автентифікаційні дані" - за замовчуванням IUSR.

Будь-які сценарії, запущені з вашого веб-сайту, працюватимуть як IUSR, але реєстрація та деякі інші функції працюватимуть як користувач App Pool (за замовчуванням мережева служба - хоча це нещодавно було змінено для використання спеціального користувача віртуальної програми). Ідентифікація пулу додатків (мережева послуга) повинна мати можливість перелічити файли у вашому каталозі, оскільки певні перевірки робляться в стеці запитів, перш ніж контроль передається вашому сценарію.

Рекомендується запускати один сайт на пул і встановлювати ідентифікатор пулу додатків таким же користувачам, як і анонімний користувач вашого веб-сайту. Можна вийти з контексту анонімного користувача (IUSR) та привілеї привласнити ті, які мають сам ідентифікатор пулу додатків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.