Защита доступа к DIB
Защита доступа к DIB определяет, кто может обращаться к информации
каталога, и в какой степени он может влиять на данные. Ваша возможность
добавлять объекты, считывать их и т.д. зависит от предоставленных
вам полномочий (привилегий). Вы можете обращаться к таким типам
данных как объекты, атрибуты и значения.
Тем, кто уже работал с базой объектов Bindery, полномочия доступа
могут быть знакомы. Bindery имеет пять уровней защиты: Attached,
Logged in, Object, Supervisor и Bindery. Эти уровни реализуют
полезную и простую системы защиты Bindery.
Защита доступа DIB служит тем же целям, но она гораздо более гибкая
и ориентированная на объекты, чем защита, реализованная для Bindery.
Она значительно более мощная и позволяет вам управлять доступом
практически любым нужным вам способом. Если вы знакомы с тем,
как в NetWare 4.0 реализована защита файловой системы, вам не
следует беспокоиться об изучении наследования полномочий доступа
к DIB. Нужно только не забывать о разделении двух типов защиты.
Защита каталога предназначена для ограничения доступа к каталогу,
а защита файловой системы - для ограничения доступа к файлам.
Bindery организует доступ по уровням защиты. Неважно, к какому
объекты вы пытаетесь обратиться, важно только, что этот объект
имеет определенный уровень защиты. Защита Bindery достаточно эффективна,
но она не такая гибкая как защита DIB. С помощью каталога отдельной
группе пользователей можно предоставить полномочия доступа к объектам,
отдельным атрибутам объекта или всем атрибутам.
Полномочия доступа DIB, допускающие обращение к объектам, отличны
от тек, которые допускают обращение к атрибутам. Для объектов
это следующие полномочия:
Просмотр (Browse)
Добавление (Add)
Удаление (Delete)
Переименование (Rename)
Супервизор (Supervisor)
а для атрибутов:
Сравнение (Compare)
Чтение (Read)
Запись (Write)
Сам (Self)
Супервизор (Supervisor)
Есть четыре способа получить любое из этих полномочий или их все:
с помощью прямого назначения, путем наследования от родителей
в дереве, из эквивалентных присваиваний полномочий и по членству
в группе (Group Membership). Существует процесс фильтрации, который
применяется к каждому из этих типов назначений для конкретного
объекта. Давайте познакомимся с каждым из них поближе.
Назовем в нашем обсуждении те объекты, которым присваиваются полномочия
доступа, субъектами. Субъект - это то, чему (или кому) дается
право на действие, и часто это объект пользователя, объект сервера
или объект группы, однако этом может быть любой объект в дереве.
Целью является то, над чем этот субъект выполняет действия. Целью
может быть заданный объект, конкретный атрибут объекта или все
его атрибуты. Полномочия доступа назначаются с помощью атрибута
целевого объекта, который называется списком управления доступом
- ACL (Access Control List). ACL содержит список назначений полномочий
доступа.
Прямое присваивание полномочий происходит, когда субъект специфицированный
по имени и цели, идентифицируется явным образом. Эти прямые присваивания
записываются в списки ACL. Прямое присваивание полномочий заменяет
другие полномочия, которые могут наследоваться или получаться
в противном случае. Если вы хотите быть уверенными, что субъект
имеет определенные права, то можете назначить их с помощью прямого
присваивания полномочий, которые требуются в ACL того объекта,
к которому требуется обращаться. Не включенные в эти присваивания
полномочия не разрешаются (блокируются).
Полномочия наследуются на основе структуры дерева каталога. Подчиненные
объекты наследуют привилегии, которые даны их родительским объектам.
На основе их взаимосвязей в древовидной структуре они используют
полномочия, предоставленные родительским объектам (независимо
от того, насколько удаленными они являются). Предположим, например,
что подчиненными объектами в дереве объектов Novell являются Olga
и Julia. Если мы предоставляем полномочия Novell, то Olga и Julia
также будут иметь эти полномочия. Как это работает, показано на
Рис. 3.2.
+----------------+
¦ Popurri ¦
+-----+-----+----+
+-----------+ +----------+
+--------+-------+ +--------+-------+
¦ Researching ¦ ¦ Marketing ¦
+--------+-------+ +-----+-----+----+
+-------+ +-----------+ +---+
+--------+-------+ +--------+-------+ +--------+-------+
¦ Olga ¦ ¦ Julia ¦ ¦ Kirill ¦
+----------------+ +----------------+ +----------------+
Access Control List =
права чтения Popurri
Olga и Kirill могут считывать атрибуты Julia
Некоторые типы объектов имеют атрибут равной защиты, который указывает,
что в смысле полномочий доступа один объект равен другому (или
другим). Таким образом, объект получит все назначения полномочий,
присвоенный тому объекту, к которому он приравнен. Аналогично,
объект получает все полномочия той группы, членом которой он является.
Если объект Dina равен по защите объекту Lina, которому присвоены
полномочия на Printserver, Dina имеет на Printserver те же полномочия,
что и Lina.
Присваивание всех этих полномочий различным субъектам выполняется
не только алгоритмом вычисления полномочий для данной цели. При
отсутствии некоторого метода присваивания полномочий по умолчанию
каждому объекту в дереве потребовались бы иметь конкретные присваивания
для каждого намеченного объекта. Вместо явных присваиваний для
каждого объекта в дереве лучше полагаться на привилегии, присвоенные
выше по дереву и допустить избирательное их ограничение.
Процесс ограничения полномочий, присвоенный в дереве на более
высоком уровне называется маскированием и реализуется через специальную
запись в ACL - маску наследования (IM). Каждому объекту можно
IM, которая будет использоваться в вычислении действующих полномочий.
IM действует как фильтр, предотвращая назначения выбранных привилегий
объекту на более низком уровне в дереве. Субъект может иметь полномочия
доступа к заданной цели, даже если ему для этого не присвоены
явные полномочия. Если субъекту даются полномочия доступа к объекту,
который является родительским для целевого объекта, то субъект
будет иметь те же полномочия доступа к цели, если фильтры IM не
запрещают некоторые из них. При фильтрации будет разрешен установленный
флаг полномочий IM.
Метод присваивания полномочий доступа предусматривает указание
имени защищенного атрибута и предоставляемых полномочий. Эти три
элемента образуют запись в списке ACL. Записи в ACL объекта ограничивают
доступ к этому объекту и атрибутам этого объекта и подчиненных
объектов.
Именем защищенного атрибута должно быть конкретное имя атрибута
или [Entry Rights], [All Attributes Rights], либо [SMS Rights].
Если используется [Entry Rights], то полномочия будут влиять на
объект и все подчиненные ему объекты. Если используется [All Attributes
Rights], то полномочия влияют на все атрибуты объекта и атрибуты
подчиненных ему объектов. При использовании [CMS Rights] полномочия
влияют на объект, все атрибуты объекта, а также на подчиненные
объекты и атрибуты подчиненных объектов. Если используется имя
конкретного атрибута, то затрагивается конкретный атрибут.
Записи ACL можно использовать для ограничения тех полномочий,
которые могут наследоваться. Это делается с помощью задания в
качестве имени субъекта маски наследования [Inheritance Mask].
В качестве имени субъекта могут использоваться и другие значения.
Эти значения применяют полномочия к определенным объектам, но
не именуют объекты конкретно. Возможные значения: [Public] - для
всех объектов, [Root] - для корня дерева каталога, [Creator] для
создателя объекта и [Self] - для самого объекта. После создания
объекта полномочия [Creator] и [Self] вы присваивать не можете.
Эти назначения возможны только при добавлении объекта к дереву
каталога.
К счастью, пошаговый процесс определения действующих полномочий
для данного субъекта может выполняться службой каталога. Если
вам нужно знать какие у вас действующие права, вы можете использовать
функцию API NWDSGetEffectiveRights для получения прав уровня объекта
и NWDSListAttrsEffectiveRights для получения действующих полномочий
для всех атрибутов объекта.