Architecture Net или что такое Microsoft.NET?




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

Уровни политики предприятия, машины и пользователя составляют иерархию кодовых групп. С каждой такой группой связан некоторый набор разрешений. Код, удовлетворяющий тому или иному набору условий, принадлежит к соответствующей кодовой группе.
Корневой узел указанной структуры называется "All_Code". Ниже этого уровня находится набор дочерних узлов, и у каждого из них могут быть свои дочерние узлы. Каждый узел представляет некоторую кодовую группу. Если код принадлежит к какой-либо кодовой группе, то он может быть членом одной из ее дочерних групп. Если же код не принадлежит к определенной кодовой группе, то ни к одной из ее дочерних групп он принадлежать не может.
Вычисляя подтверждение, вы назначаете коду его группу. А назначая группу, вы, в свою очередь, получаете определенный набор разрешений. Такой набор условий соответствует именованному набору разрешений. Поскольку код может принадлежать нескольким группам, то набор разрешений, которые он может получить, является объединением всех наборов разрешений для всех групп, к которым код принадлежит. Поэтому политика кода определяется в два этапа. Для каждого уровня объединение всех наборов разрешений, к которым он принадлежит, определяет разрешения для сборки. Тогда у каждого уровня фактически получается один набор разрешений. Затем для всех этих наборов выполняется операция пересечения, чтобы у каждого параметра разрешения осталось наиболее ограничивающее значение. Предположим, например, что на уровне машины сборке предоставляются все права доступа, а на уровне пользователя доступ к вводу/выводу файлов ограничен чтением. Тогда сборка получит неограниченные разрешения ко всему, кроме файлового ввода/вывода, для которого будут разрешены только операции чтения.
У кодовых групп может быть два атрибута. Атрибут exclusive (исключающий) требует, чтобы код никогда не получал разрешений, кроме тех, что приписаны исключительной группе. Очевидно, код может принадлежать только к одной группе, отмеченной как исключительная. Ну а второй атрибут, level final (конечный уровень), указывает, что при вычислении членства кодовых групп не следует учитывать никаких уровней, находящихся ниже текущего уровня политики. Уровни рассматриваются в следующем порядке: предприятие, машина, пользователь и прикладная область.