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

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

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

Нужно быть знакомым со следующими принципами управления доступом для кода, чтобы писать эффективные приложения, нацеленные на среду CLR.

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

  • Принудительный и декларативный синтаксис. Взаимодействие с системой безопасности среды выполнения происходит с использованием принудительных и декларативных вызовов безопасности. Декларативные вызовы выполняются с использованием атрибутов; принудительные вызовы выполняются с использованием новых экземпляров классов в вашем коде. Некоторые вызовы могут выполняться только принудительно, в то время как другие могут выполняться только декларативно, а некоторые могут выполняться любым способом. Дополнительные сведения см. в разделе Синтаксис безопасности.

  • Использование безопасных библиотек классов. Библиотеки классов используют безопасность доступа к коду для указания разрешений, которые им требуются, чтобы предоставлять к себе доступ. Необходимо учитывать разрешения, требуемые для доступа к любой библиотеке, используемой кодом.

  • Прозрачный код. В .NET Framework 4 и более поздних версиях в дополнение к определению соответствующих разрешений нужно определить, должен ли код выполняться как прозрачный для безопасности. Прозрачный для безопасности код не может вызывать типы или члены, которые определены как критические для безопасности. Это правило относится к приложениям как с полным, так и с частичным доверием. Дополнительные сведения см. в разделах Использование безопасных библиотек классов и Прозрачный для системы безопасности код.

См. также

Основные понятия

Написание проверяемого строго типизированного кода

Синтаксис безопасности

Запрос разрешений

Использование безопасных библиотек классов

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