Управление доступом для кода

Обновлен: Ноябрь 2007

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

Большинство распространенных механизмов обеспечения безопасности предоставляют пользователям права на основе их пользовательских данных (обычно это пароль), и ограничивают доступ пользователей к ресурсам (как правило, папкам и файлам). Однако этот подход неспособен решить некоторые проблемы: пользователи получают код из множества источников, некоторые из которых могут быть ненадежны; код может содержать ошибки или уязвимые места, которые могут быть использованы вредоносным кодом. Кроме того, код в некоторых случаях может выполнять действия без ведома пользователя. В результате возможно повреждение компьютерных систем и утечка конфиденциальных данных, когда осмотрительные и благонадежные пользователи запускают вредоносное или содержащее множество ошибок программное обеспечение. Для выполнения кода большинство механизмов безопасности, применяемых в операционных системах, требуют, чтобы каждый его участок был полностью доверенным, кроме, возможно, сценариев на веб-страницах. Таким образом, необходим механизм безопасности с широкой областью применения, позволяющий коду, полученному от одной компьютерной системы, безопасно выполняться на другой системе даже при отсутствии отношений доверия между этими системами.

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

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

В этом подразделе

Связанные подразделы