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