Защита доступа к 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 для получения дейс- твующих полномочий для всех атрибутов объекта.