Иллюстрированный самоучитель по Architecture .NET

Политика безопасности. Уровни политики безопасности. Кодовые группы.

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

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

Политика безопасности задается на нескольких уровнях. Предоставленные разрешения определяются пересечением уровней политики. Этими уровнями являются предприятие, машина, прикладная область и пользователь. Если между разрешениями, предоставленными на определенном уровне, возникает конфликт, то выбирается более ограничивающий вариант. Итак, политика предприятия имеет приоритет над политикой каждой машины предприятия, а политика машины – над любой политикой прикладной области или отдельного пользователя.

Кодовые группы

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

Корневой узел указанной структуры называется "All_Code". Ниже этого уровня находится набор дочерних узлов, и у каждого из них могут быть свои дочерние узлы. Каждый узел представляет некоторую кодовую группу. Если код принадлежит к какой-либо кодовой группе, то он может быть членом одной из ее дочерних групп. Если же код не принадлежит к определенной кодовой группе, то ни к одной из ее дочерних групп он принадлежать не может.

Вычисляя подтверждение, вы назначаете коду его группу. А назначая группу, вы, в свою очередь, получаете определенный набор разрешений. Такой набор условий соответствует именованному набору разрешений. Поскольку код может принадлежать нескольким группам, то набор разрешений, которые он может получить, является объединением всех наборов разрешений для всех групп, к которым код принадлежит. Поэтому политика кода определяется в два этапа. Для каждого уровня объединение всех наборов разрешений, к которым он принадлежит, определяет разрешения для сборки. Тогда у каждого уровня фактически получается один набор разрешений. Затем для всех этих наборов выполняется операция пересечения, чтобы у каждого параметра разрешения осталось наиболее ограничивающее значение.

Предположим, например, что на уровне машины сборке предоставляются все права доступа, а на уровне пользователя доступ к вводу/выводу файлов ограничен чтением. Тогда сборка получит неограниченные разрешения ко всему, кроме файлового ввода/вывода, для которого будут разрешены только операции чтения.

У кодовых групп может быть два атрибута. Атрибут exclusive (исключающий) требует, чтобы код никогда не получал разрешений, кроме тех, что приписаны исключительной группе. Очевидно, код может принадлежать только к одной группе, отмеченной как исключительная. Ну а второй атрибут, level final (конечный уровень), указывает, что при вычислении членства кодовых групп не следует учитывать никаких уровней, находящихся ниже текущего уровня политики. Уровни рассматриваются в следующем порядке: предприятие, машина, пользователь и прикладная область.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.