C# для профессионалов. Том II
Шрифт:
Представляет интерес вопрос, как действует
Сборки соответствуют группам кода в зависимости от условий членства. Если вернуться к примеру групп кода
Сборка является членом корневой группы кода (All Code); так как она приходит из локальной сети, то она является также членом группы кода Intranet, но вследствие того, что она была загружена со специального сайтато ей также предоставляется
Легко увидеть группы кода, членом которых является сборка, используя команду:
Выполнение этой команды для сборки на локальном диске создает вывод:
Можно заметить, что группы кода перечислены на трех уровнях — Enterprise, Machine и User (Предприятие, Машина и Пользователь). В данный момент сосредоточимся только на уровне Machine, два других более подробно рассмотрим позже. Если вы желаете знать об отношениях между тремя уровнями, то эффективные полномочия, предоставляемые сборке, являются пересечением полномочий из трех уровней. Например, если удалить полномочие
Теперь используем эту команду для той же сборки, но через HTTP на удаленном сервере. Мы увидим, что сборка является членом различных групп, которые имеют более ограничительные права:
Для
Полномочия доступа к коду и множества полномочий
Представьте себя администратором политики безопасности в сети персональных машин большого предприятия. В такой среде весьма полезно для CLR собирать свидетельства о коде, прежде чем его выполнять, но в равной степени администратор должен иметь возможность строго контролировать, что разрешается делать коду на нескольких сотнях машин, которыми он управляет, если CLR знает, откуда он пришел. Именно здесь начинают играть свою роль полномочия.
После того как сборка сопоставлена с группами кода, CLR просматривает политику системы безопасности для определения предоставляемых сборке полномочий. Это на самом деле похоже на систему безопасности учетных записей пользователей в Windows 2000. Полномочия обычно применяются не к пользователям, а к группам. То же самое справедливо для сборок: полномочия применяются к группам кода, а не к отдельным сборкам, что делает управление политикой системы безопасности в .NET гораздо более простой задачей.
Политика безопасности определяет, какие действия разрешается выполнять сборками в группе кода. Давайте обсудим полномочия доступа к коду, предоставляемые CLR. Нижеследующий список показывает, какие возможности предоставляют полномочия доступа к коду:
□ DirectoryServicesPermission — получение доступа к активному каталогу (Active Directory) с помощью классов
□ DnsPermission — использование системы имен доменов TCP/IP (DNS).
□ EnvironmentPermission — чтение и запись переменных окружения.
□ EventLogPermission — чтение и запись в журнал событий.
□ FileDialogPermission — доступ к файлам, которые были выбраны пользователем в диалоговом окне Open.
□ FileIOPermission — работа с файлами (чтение, запись и добавление в файл, а также создание и изменение папок).
□ IsolatedStorageFilePermission — доступ к закрытым виртуальным файловым системам.