Частичное доверие в ASP.NET не обеспечивает изоляцию приложений

Переводы статьи Переводы статьи
Код статьи: 2698981 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

ВВЕДЕНИЕ

Платформа ASP.NET позволяет администраторам размещать приложения в режимах частичного доверия, например со средним уровнем доверия. Она также позволяет настраивать пользовательские уровни частичного доверия с помощью файлов настраиваемых политик. Дополнительные сведения об использовании частичного доверия в ASP.NET 2.0 см. на следующей веб-странице MSDN (Microsoft Developer Network): Ранее мы описывали частичное доверие ASP.NET как механизм для принудительной изоляции приложений в общей среде размещения, где несколько приложений с разными уровнями доверия размещаются на одном и том же веб-сервере. Мы обновляем рекомендации, чтобы отразить тот факт, что запуск приложения ASP.NET в режиме частичного доверия не гарантирует полной изоляции от других приложений в том же процессе или на том же компьютере. 

Настройка работы в раздельных низкопривилегированных процессах (с использованием отдельных пулов приложений) для приложений ASP.NET — это рекомендуемый способ изоляции приложений ASP.NET на одном веб-сервере. В следующем разделе приведены сведения о настройке изоляции приложений. Мы обновляем документацию, чтобы отразить изменения политики, описанные в данной статье. 

Дополнительная информация

Администраторы серверов должны использовать приведенные здесь рекомендации для гарантии изоляции приложений в общих средах размещения. Эти рекомендации касаются ASP.NET в системе Windows Server 2003 с пакетом обновления 2 (SP2) и более поздних версиях. Рекомендации описывают службы IIS версий 6.0–7.5.

Многие из описанных здесь задач можно автоматизировать с помощью программы командной строки AppCmd.exe в IIS 7 и 7.5, а также сценариев администрирования IIS в IIS 6.0.

Размещение приложений в раздельных сайтах в службах IIS

В общей среде размещения приложения следует помещать на разные сайты IIS. Конфигурация приложений лучше изолируется, если они размещены в разных сайтах. Кроме того, узел среды CLR в .NET Framework также будет отдельным. Это обеспечивает дополнительную изоляцию на соответствующем уровне.

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

Службы IIS 6.0 (Windows Server 2003 с пакетом обновления 2 (SP2))

  1. Откройте диспетчер IIS.
  2. В области слева разверните узел текущего сервера.
  3. Щелкните правой кнопкой мыши узел Веб-сайты, выберите пункт Создать, а затем — Веб-сайт.
  4. Нажмите кнопку Далее.
  5. Введите уникальное имя веб-сайта, а затем нажмите кнопку Далее.
  6. Настройте привязки сайта к среде размещения.
  7. Укажите физический путь папки, где хранятся файлы приложения.
  8. Установите флажок запуск сценариев (например ASP) и нажмите кнопку Далее.
  9. Нажмите кнопку Готово. Новый сайт появится в узле Веб-сайты.

Службы IIS 7 (Windows Vista с пакетом обновления 2 (SP2) и Windows Server 2008 с пакетом обновления 1 (SP1)), службы IIS 7.5 (Windows 7 и Windows Server 2008 R2)

  1. Откройте диспетчер IIS.
  2. В области Подключения разверните узел текущего сервера.
  3. Выберите узел Сайты и используйте команду Добавить веб-сайтв области Действия.
  4. В диалоговом окне Добавление веб-сайта введите уникальное имя веб-сайта, а затем — физический путь к папке с файлами приложения. По умолчанию для сайта создается новый пул приложений с тем же именем, что и у сайта. (Это рекомендуемая конфигурация.)
  5. Настройте привязки сайта к среде размещения.
  6. Снимите флажок Запустить веб-сайт немедленно, чтобы сайт не был доступен, пока не будут выполнены все описанные здесь действия.
  7. Нажмите кнопку ОК. Новый сайт появится в узле Сайты в области Подключения.

Размещение приложений в раздельных пулах приложений

В общей среде размещения приложения следует помещать в раздельные пулы приложений. Это позволяет изолировать приложения в отдельных процессах операционной системы с уникальными идентификаторами. Это обеспечивает определенный уровень изоляции сайтов. (В следующем разделе приведены сведения о настройке изоляции идентификаторов пулов приложений.)

Службы IIS 6.0 (Windows Server 2003 с пакетом обновления 2 (SP2))

  1. Откройте диспетчер IIS.
  2. В области слева разверните узел текущего сервера.
  3. Щелкните правой кнопкой мыши узел Пулы приложений и выберите команды Создать и Пул приложений.
  4. Введите уникальное имя пула приложений, а затем нажмите кнопку ОК.
  5. Разверните узел Веб-сайты.
  6. Щелкните целевой веб-сайт правой кнопкой мыши и выберите пункт Свойства.
  7. Перейдите на вкладку Основной каталог.
  8. В поле Пул приложений в нижней части диалогового окна выберите новый пул приложений.
  9. Нажмите кнопку ОК.

Службы IIS 7 (Windows Vista с пакетом обновления 2 (SP2) и Windows Server 2008 с пакетом обновления 1 (SP1)), службы IIS 7.5 (Windows 7 и Windows Server 2008 R2)

После выполнения действий из раздела "Размещение приложений в раздельных сайтах в службах IIS" новый сайт автоматически помещается в новый отдельный пул приложений. Если же вам нужно настроить новый отдельный пул приложений для существующего сайта, выполните следующие действия. 
  1. Откройте диспетчер IIS.
  2. В области Подключения разверните узел текущего сервера.
  3. Выберите узел Пулы приложений.
  4. В области Задачи выберите пункт Добавить пул приложений.
  5. Введите уникальное имя пула приложений, а затем выберите целевую версию .NET Framework и режим конвейера.
  6. Нажмите кнопку ОК. Новый пул приложений появится в списке.
  7. В области Подключения разверните узел Сайты.
  8. Выберите сайт, переносимый в только что созданный пул приложений.
  9. В области Действия выберите пункт Основные параметры.
  10. В диалоговом окне Изменение сайта нажмите кнопку Выбрать.
  11. В списке Пул приложений выберите созданный ранее пул приложений.
  12. Нажмите кнопку ОК.
В диалоговом окне Изменение сайта нажмите кнопку ОК.

Настройка изоляции пулов приложений (идентификаторов процессов)

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

Службы IIS 6.0 (Windows Server 2003 с пакетом обновления 2 (SP2))

Создайте локальную учетную запись пользователя для пула приложений
  1. Откройте диспетчер IIS.
  2. В области слева разверните узел Локальные пользователи и группы.
  3. Щелкните элемент Пользователи правой кнопкой мыши и выберите команду Создать пользователя.
  4. Введите уникальное имя и стойкий пароль новой учетной записи.
  5. Снимите флажок Потребовать смену пароля при следующем входе в систему.
  6. Установите флажок Запретить смену пароля пользователем.
  7. Нажмите кнопку Создать, а затем Закрыть.
  8. В области слева выберите узел Пользователи. Новая учетная запись появится в списке.
Настройте новую учетную запись для пула приложений
  1. Откройте диспетчер IIS.
  2. В области слева разверните узел текущего сервера.
  3. Разверните узел Пулы приложений.
  4. Щелкните целевой пул приложений правой кнопкой мыши и выберите пункт Свойства.
  5. Перейдите на вкладку Удостоверение.
  6. Выберите пункт Настраиваемую.
  7. Введите имя пользователя и пароль новой учетной записи.
  8. Нажмите кнопку ОК.
  9. В диалоговом окне Подтверждение пароля повторно введите пароль и нажмите кнопку ОК.

Службы IIS 7 и 7.5 (Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 с пакетом обновления 1 (SP1), Windows 7 и Windows Server 2008 R2)

  1. Откройте диспетчер IIS.
  2. В области Подключения разверните узел текущего сервера.
  3. Выберите узел Пулы приложений.
  4. Выберите целевой пул приложений.
  5. В области Действия выберите пункт Дополнительные параметры.
  6. В разделе Модель процесса задайте для свойства Identity значение ApplicationPoolIdentity. Это приведет к автоматическому созданию уникального идентификатора для этого пула приложений. В следующих разделах вы можете использовать его для настройки списков управления доступом на уровне пользователей у файлов, к которым приложение должно иметь доступ.
  7. Нажмите кнопку ОК.

Настройка списков управления доступом на уровне пользователей для содержимого приложения

Список управления доступом на уровне пользователей — это перечень разрешений, связанных с объектом. Он может использоваться для управления доступом к объекту. Использование списков управления доступом на уровне пользователей для ограничения доступа к содержимому приложения помогает усилить изоляцию сайтов на одном веб-сервере. Дополнительные сведения о списках управления доступом и идентификаторах IIS см. в разделе Защита содержимого в службах IIS с помощью списков управления доступом к файловой системе

Все версии служб IIS

  1. Откройте корневой каталог содержимого сайта в командной строке или проводнике.
  2. Используйте один из следующих способов, чтобы удалить записи о доступе для обычных пользователей для этого каталога. (Сюда в числе прочего относится группа "Пользователи".)
    • В проводнике щелкните папку правой кнопкой мыши, выберите пункт Свойства, откройте вкладку Безопасность и измените список управления доступом.
    • В командной строке используйте программу icacls.exe (или cacls.exe в старых версиях Windows), чтобы изменить список управления доступом.
  3. Добавьте новую запись для идентификатора процесса, заданного для сайта.
  4. Предоставьте ему доступ на чтение и выполнение в этой папке.
При наличии отдельных папок, куда приложение должно записывать данные (например, папки для отправки файлов), выполните следующие действия.

Службы IIS 6.0 (Windows Server 2003 с пакетом обновления 2 (SP2))

  1. В проводнике щелкните папку правой кнопкой мыши, выберите пункт Свойства, откройте вкладку Безопасность и добавьте доступ на Изменение для идентификатора процесса.
  2. Для папок со статическим содержимым (изображениями, текстовыми файлами и так далее) выполните следующие действия.
    1. Откройте диспетчер IIS.
    2. В области слева щелкните правой кнопкой мыши нужную папку и выберите пункт Свойства.
    3. Откройте вкладку Каталог.
    4. В списке Разрешен запуск выберите пункт Нет.

Службы IIS 7 и 7.5 (Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 с пакетом обновления 1 (SP1), Windows 7 и Windows Server 2008 R2)

  1. В проводнике щелкните папку правой кнопкой мыши, выберите пункт Свойства, откройте вкладку Безопасность и добавьте доступ на Изменение для идентификатора процесса.
  2. Для папок со статическим содержимым (изображениями, текстовыми файлами и так далее) добавьте в файл "web.config" запись для этой папки, отменяющую разрешение Script в параметре accessPolicy.
    <system.webServer> <handlers accessPolicy="Read,Write" /> </system.webServer>

Настройка папки временных файлов ASP.NET и задание списков управления доступом на уровне пользователей для отдельных сайтов

Платформе ASP.NET необходимо место на сервере для хранения временных данных, например скомпилированных файлов. Обычно это папка "Temporary ASP.NET Files". По умолчанию она находится в папке, где установлена платформа .NET Framework. Выделение разных мест для каждого сайта и индивидуальная защита папки помогают усилить изоляцию сайтов на одном веб-сервере. Дополнительные сведения о папке "Temporary ASP.NET Files" см. в разделе Общие сведения о динамической компиляции в ASP.NET.

Настройка разных папок временных файлов ASP.NET для каждого сайта

  1. Создайте для всех сайтов отдельные папки для хранения временных файлов ASP.NET. Для этого лучше не использовать системный диск.
  2. В корневом файле web.config или applicationHost.config сервера добавьте параметр, указывающий на расположение папки у сайта, в элементе <location>, например:
    <configuration> <location path="path"> <system.web> <compilation tempDirectory="temp-files-path" /> </system.web> </location> <!-- and so on --> </configuration>

Задание списков управления доступом на уровне пользователей для папки временных файлов ASP.NET

  1. Используйте командную строку или проводник, чтобы удалить разрешения на доступ для обычных пользователей для этого каталога. (Сюда в числе прочего относится группа "Пользователи".)
  2. Добавьте новую запись для идентификатора процесса, заданного для сайта, и предоставьте ему доступ на Изменение папки.

Удаление конфиденциальных данных конфигурации из корневых файлов конфигурации

Файлы web.config приложений располагаются в папке содержимого, предоставляемого приложением. Хотя платформа ASP.NET не предоставляет доступ к файлу web.config приложения, по практическим соображениям рекомендуется помещать конфиденциальные данные, например ключи и строки подключения, в файл конфигурации, внешний по отношению к приложению. Это позволяет защититься от раскрытия информации.

Службы IIS 6.0 (Windows Server 2003 с пакетом обновления 2 (SP2))

Хранение конфиденциальной информации в корневом файле web.config — не самый подходящий вариант для изоляции данных сайтов, так как доступ к нему имеют все сайты. Соответственно, в IIS 6 следует хранить конфиденциальные данные в файле web.config приложения. Это позволяет изолировать конфиденциальные данные от других сайтов. В этом случае ваше приложение будет использовать защитные механизмы платформы ASP.NET для предотвращения публикации файла web.config приложения и гарантии того, что данные не будут раскрыты.

Службы IIS 7 и 7.5 (Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 с пакетом обновления 1 (SP1), Windows 7 и Windows Server 2008 R2)

В службах IIS 7 и более поздних версиях перенесите конфиденциальные данные из файла applicationHost.config служб IIS в элемент <location>, ограничивающий область конфигурации сайтом, к которому она применяется. Дополнительные сведения см. в разделе Использование блокировки в конфигурации служб IIS 7.0. Корпорация Майкрософт благодарит следующих людей за помощь в защите пользователей:
Примечание. Это ЭКСПРЕСС-ПУБЛИКАЦИЯ, подготовленная непосредственно службой технической поддержки Майкрософт . Сведения, содержащиеся в данном документе, предоставлены в качестве отклика на возникшие проблемы. Из-за срочности в материалах могут быть опечатки, и в любое время и без уведомления в них могут быть внесены изменения. Чтобы получить дополнительные сведения, см. Условия использования.

Свойства

Код статьи: 2698981 - Последний отзыв: 7 июня 2012 г. - Revision: 1.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 3
Ключевые слова: 
atdownload kbinfo kbexpertiseinter kbsecurity KB2698981

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com