Поделиться через


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

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

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

Разрешения на доступ для кода

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

Разрешения на доступ для кода позволяют пользователю получать доступ к защищенному ресурсу, такому как файл, или производить защищенное действие, такое как доступ к управляемому коду.Все разрешения на доступ для кода можно запросить в коде; будут они предоставлены или нет, определяется средой выполнения.Каждое разрешение на доступ для кода является производным от класса CodeAccessPermission, и поэтому разрешения имеют общие методы: Assert, Demand, Deny, PermitOnly, IsSubSetOf, Intersect и Union.

Разрешения, предоставляемые платформой .NET Framework

В этой таблице перечислены разрешения на доступ для кода, предоставляемые .NET Framework.

Класс разрешений

Разрешает

AspNetHostingPermission

Доступ к ресурсам в средах размещения ASP.NET.

DirectoryServicesPermission

Доступ к классам System.DirectoryServices.

DnsPermission

Доступ к серверам службы доменных имен (DNS) в сети.

EnvironmentPermission

Чтение или запись в переменные среды.

EventLogPermission

Чтение или запись в службы журнала событий.

FileDialogPermission

Чтение или запись в файлы с помощью диалогового окна Открыть.

FileIOPermission

Чтение или запись в файлы или каталоги.

IsolatedStorageFilePermission

Чтение или запись в файлы или каталоги в изолированном хранилище.

MessageQueuePermission

Доступ к очередям сообщений через управляемые интерфейсы очереди сообщений (также называемые MSMQ).

OdbcPermission

Доступ к источникам данных ODBC.

OleDbPermission

Доступ к базам данных посредством OLE DB.

OraclePermission

Доступ к базам данных Oracle.

PerformanceCounterPermission

Доступ к счетчикам производительности.

PrintingPermission

Доступ к принтерам.

ReflectionPermission

Получение сведений о типе во время выполнения.

RegistryPermission

Чтение, запись, создание или удаление разделов и значений реестра.

SecurityPermission

Выполнение, объявление разрешений, вызов неуправляемого кода, пропуск проверки и другие права, относящиеся к безопасности.

ServiceControllerPermission

Доступ к работающим или остановленным службам.

SocketPermission

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

SqlClientPermission

Доступ к базам данных SQL.

UIPermission

Доступ к функциям пользовательского интерфейса.

WebPermission

Установка или принятие подключений по веб-адресам.

Создание собственных разрешений

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

Разрешения идентификации

Разрешения идентификации представляют характеристики, которые идентифицируют сборку.Среда CLR предоставляет разрешения идентификации сборке при ее загрузке, исходя из полученной информации о сборке.Дополнительные сведения см. в разделе Разрешения идентификации.

Разрешения на основе ролей

Деловые приложения часто обеспечивают доступ к данным или ресурсам на основании учетных данных, предоставляемых пользователем.Обычно такие приложения проверяют роль пользователя и в соответствии с ней предоставляют доступ к ресурсам.Среда CLR обеспечивает поддержку авторизации на основе ролей с использованием учетных записей Windows или пользовательских удостоверений.Дополнительные сведения см. в разделе Безопасность на основе ролей.

Задачи безопасности

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

Целевой тип

См. в разделе

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

Практическое руководство. Запрос разрешения на доступ к неуправляемому коду

Запрос дополнительных разрешений

Практическое руководство. Запрос необязательных разрешений с помощью флага RequestOptional

Запрос разрешения для именованного набора разрешений

Практическое руководство. Запрос разрешения для именованного набора разрешений

Запрос разрешений в XML-кодировке

Запрос разрешений в XML-кодировке

Отказ в разрешениях

Практическое руководство. Отклонение запроса разрешений с помощью флага RequestRefuse

Выполнение принудительной проверки безопасности

Практическое руководство. Выполнение принудительной проверки безопасности

Выполнение декларативной проверки безопасности

Выполнение декларативной проверки безопасности

Переопределение проверки безопасности

Переопределение результатов проверки безопасности

Совместное использование библиотеки с частично доверенным кодом

Совместное использование библиотек с не вполне надежным кодом

Требование полного доверия для типов в сборке AllowPartiallyTrustedCallersAttribute

Требование полного доверия для типов в сборке с атрибутом AllowPartiallyTrustedCallersAttribute

Создание объектов WindowsIdentity и WindowsPrincipal

Практическое руководство. Создание объекта WindowsPrincipal

Создание объектов GenericPrincipal и GenericIdentity

Практическое руководство. Создание объектов GenericPrincipal и GenericIdentity

Описание модели политики безопасности платформы .NET Framework.

Пять элементов, составляющих модель политики безопасности .NET Framework.К ним относятся:

  • Уровни политики безопасности: предприятие, компьютер, пользователь и домен приложения.

  • Группы кода, существующие как иерархия внутри уровней политики предприятия, компьютера или пользователя.

  • Именованные наборы разрешений, связанные с каждой группой кода.

  • Свидетельство, предоставляющее сведения об идентификации кода.

  • Узлы домена приложения, предоставляющие свидетельства о коде среде CLR.

Уровни политики безопасности

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

Это следующие уровни:

  • Политика предприятия.Применяется ко всему управляемому коду на предприятии, где распространен файл конфигурации предприятия.

  • Политика компьютера.Применяется ко всему управляемому коду на компьютере.

  • Политика пользователя.Применяется к коду во всех процессах, связанных с текущим пользователем операционной системы во время запуска среды CLR.

  • Политика домена приложения.Применяется к управляемому коду домена приложения узла.

Дополнительные сведения см. в разделе Уровни политики безопасности.

Группы кода

Группа кода — это логическое объединение кода, члены которого должны отвечать определенному условию.Любой код, удовлетворяющий этим условиям, включается в группу.Группы кода имеют связанные наборы разрешений, которые рассчитываются при применении политики.Дополнительные сведения см. в разделе Группы кода.

Именованные наборы разрешений

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

В следующей таблице перечислены именованные наборы разрешений, предоставляемые средой CLR.

Имя

Описание

Nothing

Разрешения отсутствуют (код не может быть запущен).

Execution

Разрешение на запуск (выполнение), но не на использование защищенных ресурсов.

Internet

Набор разрешений политики по умолчанию, подходящий для содержимого из неизвестного источника.

Local Intranet

Набор разрешений политики по умолчанию в рамках предприятия.

Everything

Все стандартные (встроенные) разрешения, за исключением разрешения на пропуск проверки.

FullTrust

Полный доступ ко всем ресурсам.

Дополнительные сведения см. в разделе Именованные наборы разрешений.

Свидетельство

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

Узлы доменов приложений

Каждое приложение .NET Framework запускается в домене приложения под контролем узла, который создает домен приложения и загружает в него сборки.Домены приложений могут включать:

  • Узлы веб-обозревателей.Запускают код в контексте веб-узла.

  • Пользовательские узлы.Создают домены и загружают в них сборки, в том числе динамические сборки.

  • Серверные узлы. Выполняют код, который обрабатывает запросы, отправленные на сервер.

  • Узлы оболочки.Запускают приложения (EXE-файлы) из оболочки.

В этой таблице перечислены задачи, связанные с доменами приложений:

Целевой тип

См. в разделе

Создание домена приложения

Практическое руководство. Создание домена приложения

Задание политики безопасности на уровне домена приложения

Задание политики безопасности на уровне домена приложения

Настройка домена приложения

Практическое руководство. Настройка домена приложения

Вызов функций в конкретном домене приложения

Calling Functions in a Specific Application Domain

Извлечение сведений о настройке из домена приложения

Извлечение сведений о настройке из домена приложения

Выгрузка домена приложения

Практическое руководство. Выгрузка домена приложения

Дополнительные сведения см. в разделах AppDomain, Узлы доменов приложений и Программирование с использованием доменов приложений.

См. также

Задачи

Разрешение вопросов, связанных с исключениями управления доступом для кода

Ссылки

Mscorcfg.msc (средство настройки .NET Framework)

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

Изоляция по пользователям, доменам и сборкам

Другие ресурсы

Настройка политики безопасности с помощью средства для настройки политики управления доступом для кода (Caspol.exe)