Календарь на Июнь 2024 года: calendar2008.ru/2024/iyun/
Навигация
Главная »  Windows 

Изучаем безопасность Windows 2003: .NET Framework


Марсин Полич (Marcin Policht)
Предыдущая статья этой серии была посвящена политикам ограничения на запуск программного обеспечения (далее ПО), предоставляющим возможность определения, какие из приложений являются исполняемыми в средах Windows XP/200x. Эта установка может быть определена либо на уровне компьютера, либо пользователя, исходя из настраиваемых критериев (таких, как хэш, сертификат, путь или зона Интернета, из которой получено это ПО).

Хотя этот механизм помогает добиться увеличения защищенности, он не позволяет осуществлять какого-либо уровня гранулированности контроля доступа, после того, как программа запущена - ее права доступа уже определены уровнем привилегий, присвоенных пользователю, запустившему программу. Чтобы улучшить эту ситуацию требуются существенные изменения методов работы ПО.

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

Однако, прежде чем мы начнем обсуждение функций безопасности, предлагаемых платформой .NET, давайте проясним основные принципы ее работы.

Большая часть неразберихи, связанной с .NET, происходит из-за неистовой маркетинговой компании Microsoft, приведшей к тому, что это имя, в качестве суффикса, добавлялось практически к каждому продукту, выпущенному в последние годы. Кроме того, неразберихе способствовало то, что .NET является довольно сложной концепцией, объединяющей многие технологии и продукты, поэтому ее довольно трудно объяснить людям, не обладающего определенным кругозором в области разработки ПО.

Эта статья посвящена .NET Framework и послужит основой для всех последующих статей, связанных с .NET.

Если говорить в простейших терминах, то .NET Framework является новой средой периода исполнения, что означает, что ее основной целью является обеспечение механизмов, обеспечивающих выполнение других программ. Эти механизмы (встроенные в данный каркас приложений (framework) делают процесс разработки более простым, а всю платформу - более устойчивой и безопасной. Наиболее важными механизмами .NET Framework являются следующие:

  • Автоматическое управление памятью (также известное как "сборка мусора" (garbage collection)). Большая часть читателей знакома с термином "утечка памяти" (memory leak), описывающим процесс, при котором приложение использует системный ресурс (обычно, память), но не возвращает его в систему после завершения своей работы. Как правило, это является результатом недоработок или ошибок в программе. Компоненты каркаса приложений ответственны за отслеживание того, как используются системные ресурсы и должны обеспечивать их высвобождение, как только они более не требуются приложению.
  • Защищенность на уровне кода (code-level security): .Net Framework позволяет системному администратору не только контролировать, какие приложения могут исполняться на системе, но также и то, какой уровень разрешений будет предоставлен им в ходе работы (например, разрешая определенным приложениям выполнять запись в файлы, в то же время ограничивая другие только возможностью чтения).
  • Стандартизированное управление версиями (Standard version management): Одной из наиболее распространенных проблем приложений периода "до-.NET", выполняемых на платформе Windows, являлась так называемая проблема "ада DLL" (DLL hell). Этот термин относится к ситуации, при которой множество приложений, установленных на одном компьютере, требуют различных версий динамически подсоединяемых библиотек (DLL, dynamic link library). Хотя частное решение этой проблемы уже было введено в Windows 2000 (см. статью The Way Out of Your Private (DLL) Hell), оно не являлось полным и не учитывало всех возможных сценариев конфликта DLL. В приложениях .NET эта проблема полностью решена. Приложения могут определять именно те версии файлов поддержки, в которых они нуждаются. Эта информация хранится в сборке (assembly), являющейся составной частью каждого .NET-приложения.
  • Многоплатформенная поддержка (Multiplatform support): Больше нет необходимости компилировать отдельные версии одного и того же приложения для различных платформ. Например, во времена NT 4.0, разные версии одного приложения требовалось компилировать для платформ Intel и RISC. Хотя RISC-системы более не поддерживаются (начиная с Windows 2000), вам может потребоваться использовать подобный подход, когда вы будете иметь дело со стандартными приложениями Windows, работающими на платформах Win32 и Win64 (Itanium). Для решения этой проблемы необходимо разбить процесс компилирования .NET-приложений на два этапа (более подробно об этом - чуть позже).
  • Более не существует проблем совместимости и функциональных различий между различными языками программирования: Microsoft модернизировала новые версии языков программирования (наиболее часто используемыми являются Visual Basic .NET and C#, но также присутствуют и многие другие), используемые для создания .NET-приложений. Цель заключалась в том, чтобы гарантировать, что программы могут свободно смешивать код, написанных разными разработчиками, увеличивая возможность многократного использования ПО и ускоряя процесс разработки.
Возможно, наибольшим преимуществом .NET Framework является упрощение процесса разработки ПО. Хотя, на первый взгляд, значительных достижений с точки зрения управления системами не видно, помните, что подавляющая часть головной боли администраторов является следствием слабой разработки ПО. Предоставляя предварительно упакованные компоненты, ответственные за выполнение наиболее критически важных задач (таких как безопасность или управление памятью), приложения становятся менее дорогостоящими и более устойчивыми.

Все возможности, перечисленные выше, являются прямым следствием новой архитектуры, в которой работает ПО. (Хотя, термин "новая" является относительным, принимая во внимание то, что подобный подход уже используется разработчиками Java не первый год). В прошлом, традиционные программы Windows, в виде скомпилированного двоичного кода, исполнялись с помощью возможностей, предоставляемых операционной системой. В новой архитектуре процесс компилирования разбит на два этапа. При этом .NET-приложения, вместо того, чтобы компилироваться в специфический для машины двоичный код, первоначально конвертируется в промежуточный язык (IL, Intermediate Language). IL является независимым от платформы и языков программирования, что обеспечивает два основных преимущества:

  1. Одна и та же программа может выполняться на нескольких платформах (например, 32-битной и 64-битной версиях Windows 2003), без необходимости создания двух отдельных двоичных версий до развертывания.
  2. Программисты могут кодировать на любом доступном языке программирования .NET, не заботясь об их совместимости или различиях функциональных возможностей, поскольку результирующий код на IL является независимым от языка, используемого в ходе разработки ПО.
Код на IL автоматически компилируется в его двоичный эквивалент (что составляет второй этап процесса компилирования) каждый раз, когда приложение запускается. Эта часть процесса компилирования является специфической для каждой платформы операционной системы и выполняется с помощью JIT компилятора (Just-in-Time compiler).

В некоторых случаях, однако, этот тип поведения может оказаться нежелательным вследствие его влияния на производительность. В подобном случае, вы можете скомпилировать это приложение один раз, когда оно устанавливается на компьютер. Это приведет к созданию двоичного кода, хранимого локально и устранит необходимость синхронного компилирования. JIT компилятор является подкомпонентом центральной части каркаса приложений, называемого Common Language Runtime (CLR).

CLR функционирует как промежуточный уровень между .NET-приложениями (часто называемыми управляемыми (managed) приложениями, чтобы отделять их от неуправляемых (unmanaged) приложений, созданных в период "до-.NET") и базовой операционной системой (на самом деле, не имеет значения, какой операционной системой, если только она поддерживает CLR). С помощью контроля действий управляемых приложений в ходе их выполнения, этот промежуточный уровень способен обеспечить все перечисленные ранее преимущества .NET framework.

Обратите внимание, что CLR способен управлять только теми приложениями, которые были разработаны в соответствии со спецификациями .NET: более старые программы не могут использовать преимущества его функций.

.NET Framework (на момент написания статьи в версии 1.1) появился встроенным в Windows 2003 Server, но он также может быть установлен на более старые операционные системы, а именно: Windows 2000, Windows 98, Windows ME, Windows NT (с Service Pack 6a) и Windows XP. Для подобной установки также требуется Internet Explorer 5.01 или более поздняя его версия.

Полный набор инструкций, описывающих требования и сам процесс установки, предоставлен в разделе MSDN Web-сайта Microsoft. Вы можете получить его как часть регулярного процесса обновления Windows или с помощью пакета (без ограничений на свободное распространение) .NET Framework (доступного в качестве загружаемого файла или на компакт-диске).

.NET Framework доступен в версиях 1.0 и 1.1. Прежде чем решить, какую версию устанавливать, я рекомендую изучить любые проблемы совместимости между этими двумя версиями. Это будет зависеть, в большой мере, от каркаса приложений, в котором разрабатывались приложения. Для более подробной информации по этой теме, отсылаю вас к документации, предоставляемой Microsoft.

Следующая статья этой серии будет посвящена функциям безопасности, реализованные в .NET framework, позволяющим администратору контролировать права доступа управляемых приложений, запускаемых на Windows 2003 Server.

 




 

 Технологии Microsoft для создания облачных ЦОДов.
 E Ink выпускает цветные дисплеи для электронных "читалок".
 Настройка Linux - перенос на другой диск.
 Толковый словарь "Термины и жаргон Интернета". (документация).
 Программа Microsoft Academic Open License: Специальное предложение для Учреждений Российской Академии Наук.


Главная »  Windows 

© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено.