Разграничение прав доступа пользователей. Теоретические сведения к лабораторной работе. Разграничение доступа по спискам

Разграничение доступа

Наименование параметра Значение
Тема статьи: Разграничение доступа
Рубрика (тематическая категория) Военное дело

Рис.8.2. Стоимость и уровень технологий аутентификации

4. Новейшим направлением аутентификации является доказательство подлинности удаленного пользователя по его местоположению . Данный защитный механизм основан на использовании системы космической навигации типа GPS (Global Positioning System) . Пользователь, имеющий аппаратуру GPS, многократно посылает координаты заданных спутников, находящихся в зоне прямой видимости. Подсистема аутентификации, зная орбиты спутников, может с точностью до метра определить местоположение пользователя. Аппаратура GPS проста и надежна в использовании и сравнительно недорога. Это позволяет применять ее в случаях, когда авторизованный удаленный пользователь должен находиться в определœенном месте.

Суммируя возможности механизмов и средств аутентификации, по уровню информационной безопасности выделим три вида аутентификации : 1) статическую; 2) устойчивую; 3) постоянную.

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

Устойчивая аутентификация использует динамические данные аутентификации, меняющиеся с каждым сеансом работы. Реализациями устойчивой аутентификации являются системы, применяющие одноразовые пароли и электронные подписи. Устойчивая аутентификация обеспечивает защиту от атак, где злоумышленник может перехватить аутентификационную информацию и использовать ее в следующих сеансах работы. При этом устойчивая аутентификация не обеспечивает защиту от активных атак, в ходе которых маскирующийся злоумышленник может оперативно (в течение сеанса аутентификации) перехватить, модифицировать информацию и вставить ее в поток передаваемых данных.

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

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

Обычно полномочия субъекта представляются: списком ресурсов, доступным пользователю, и правами по доступу к каждому ресурсу из списка. В качестве вычислительных ресурсов бывают программы, данные, логические устройства, объём памяти, время процессора, приоритет и т.д.

Можно выделить следующие методы разграничения доступа : 1) по спискам; 2) с использованием матрицы установления полномочий; 3) по уровням секретности и категориям; 4) парольное.

1. При разграничении доступа по спискам задаются следующие соответствия: каждому пользователю – список ресурсов и прав доступа к ним или каждому ресурсу – список пользователœей и прав их доступа к данному ресурсу. Списки позволяют установить права с точностью до пользователя. Здесь нетрудно добавить права или явным образом запретить доступ. Списки используются в большинстве ОС и СУБД.

2. Использование матрицы установления полномочий предполагает применение матрицы доступа (таблицы полномочий). В указанной матрице строками являются идентификаторы субъектов, имеющих доступ в АС, а столбцами – объекты (информационные ресурсы) АС. Каждый элемент матрицы может содержать имя и размер предоставляемого ресурса, право доступа (чтение, запись и др.), ссылку на другую информационную структуру, уточняющую права доступа, ссылку на программу, управляющую правами доступа и др.
Размещено на реф.рф
(табл.8.3). Данный метод предоставляет более унифицированный и удобный подход, так как вся информация о полномочиях хранится в виде единой таблицы, а не в виде разнотипных списков. Недостатками матрицы являются ее возможная громоздкость и неоптимальность (большинство клеток – пустые).

Таблица 8.3

Разграничение доступа - понятие и виды. Классификация и особенности категории "Разграничение доступа" 2017, 2018.


На просторах России много фирм и мелких предприятий не имеют в штате своего системного администратора на постоянной основе или приходящего время от времени. Фирма растёт и рано или поздно одной расшаренной папки в сети, где каждый может делать что захочет, становится мало. Требуется разграничение доступа для разных пользователей или групп пользователей на платформе MS Windows. Линуксоидов и опытных админов просьба не читать статью.

Самый лучший вариант - взять в штат опытного админа и задуматься о покупке сервера. Опытный админ на месте сам решит: поднимать ли MS Windows Server с Active Directory или использовать что-то из мира Linux.

Но данная статья написана для тех, кто решил пока мучаться самостоятельно, не применяя современные программные решения. Попытаюсь объяснить хотя бы как правильно реализовывать разграничение прав.

Прежде чем начать хотелось бы разжевать пару моментов:

  • Любая операционная система "узнаёт" и "различает" реальных людей через их учётные записи. Должно быть так: один человек = одна учётная запись .
  • В статье описывается ситуация, что в фирме нет своего админа и не куплен, к примеру, MS Windows Server. Любая обычная MS Windows одновременно обслуживает по сети не более 10 для WinXP и 20 человек для Win7. Это сделано фирмой Microsoft специально, чтобы клиентские Windows не перебегали дорогу серверам Windows и вы не портили бизнес Microsoft. Помните число 10-20 и когда в вашей фирме будет более 10-20 человек, вам придётся задуматься о покупке MS Windows Server или попросить кого-либо поднять вам бесплатный Linux Samba сервер, у которого нет таких ограничений.
  • Раз у вас нет грамотного админа, то ваш обычный комп с клиентской MS Windows будет изображать из себя файловый сервер. Вы вынуждены будете продублировать на нём учётные записи пользователей с других компьютеров, чтобы получать доступ к расшаренным файлам. Другими словами, если есть в фирме ПК1 бухгалтера Оли с учётной записью olya, то и на этом "сервере" (именую его в дальнейшем как WinServer) нужно создать учётную запись olya с таким же паролем, как и на ПК1.
  • Люди приходят и уходят. Текучесть кадров есть везде и если вы, тот бедный человек, который не админ и назначен (вынужден) поддерживать ИТ вопросы фирмы, то вот вам совет. Делайте учётные записи, не привязанные к личности. Создавайте для менеджеров - manager1, manager2. Для бухгалтеров - buh1, buh2. Или что-то подобное. Ушёл человек? Другой не обидится, если будет использовать manager1. Согласитесь это лучше, чем Семёну использовать учётную запись olya, так как влом или некому переделывать и уже всё работает 100 лет.
  • Забудьте такие слова как: "сделать пароль на папку". Те времена, когда на ресурсы накладывался пароль давным давно прошли. Поменялась философия работы с различными ресурсами. Сейчас пользователь входит в свою систему с помощью учётной записи (идентификация), подтверждая себя своим паролем (аутентификация) и ему предоставляется доступ ко всем разрешённым ресурсам. Один раз вошёл в систему и получил доступ ко всему - вот что нужно помнить.
  • Желательно выполнять нижеперечисленные действия от встроенной учётной записи Администратор или от первой учётной записи в системе, которая по умолчанию входит в группу Администраторы.

Приготовление.

В Проводнике уберите упрощённый доступ к нужным нам вещам.

  • MS Windows XP. Меню Сервис - Свойства папки - Вид. Снять галочку Использовать мастер общего доступа
  • MS Windows 7. Нажмите Alt. Меню Сервис - Параметры папок - Вид. Снять галочку Использовать простой общий доступ к файлам .

Создайте на вашем компьютере WinServer папку, которая будет хранить ваше богатство в виде файлов приказов, договоров и так далее. У меня, как пример, это будет C:\dostup\. Папка обязательна должна быть создана на разделе с NTFS.

Доступ по сети.

На данном этапе нужно выдать в доступ по сети (расшарить - share) папку для работы с ней другими пользователями на своих компьютерах данной локальной сети.

И самое главное! Выдать папку в доступ с полным разрешением для всех! Да да! Вы не ослышались. А как же разграничение доступа?

Мы разрешаем по локальной сети всем подсоединяться к папке, НО разграничивать доступ будем средствами безопасности, сохраняемые в файловой системе NTFS, на которой расположена наш каталог.

  • MS Windows XP. На нужной папке (C:\dostup\) правой клавишей мыши и там Свойства. Вкладка Доступ - Полный доступ .
  • MS Windows 7. На нужной папке (C:\dostup\) правой клавишей мыши и там Свойства. Вкладка Доступ - Расширенная настройка. Ставим галочку Открыть общий доступ к этой папке . Заполняем Примечание. Жмём Разрешение. Группа Все должна иметь по сети право Полный доступ .

Пользователи и группы безопасности.

Нужно создать необходимые учётные записи пользователей. Напоминаю, что если на многочисленных ваших персональных компьютерах используются различные учётные записи для пользователей, то все они должны быть созданы на вашем "сервере" и с теми же самыми паролями. Этого можно избежать, только если у вас грамотный админ и компьютеры в Active Directory. Нет? Тогда кропотливо создавайте учётные записи.

  • MS Windows XP.
    Локальные пользователи и группы - Пользователи. Меню Действие - Новый пользователь.
  • MS Windows 7. Панель Управления - Администрирование - Управление компьютером.
    Локальные пользователи и группы - Пользователи. Меню Действие - Создать пользователя.

Теперь очередь за самым главным - группы! Группы позволяют включать в себя учётные записи пользователей и упрощают манипуляции с выдачей прав и разграничением доступа.

Чуть ниже будет объяснено "наложение прав" на каталоги и файлы, но сейчас главное понять одну мысль. Права на папки или файлы будут предоставляться группам, которые образно можно сравнить с контейнерами. А группы уже "передадут" права включённым в них учётным записям. То есть нужно мыслить на уровне групп, а не на уровне отдельных учётных записей.

  • MS Windows XP. Панель Управления - Администрирование - Управление компьютером.
  • MS Windows 7. Панель Управления - Администрирование - Управление компьютером.
    Локальные пользователи и группы - Группы. Меню Действие - Создать группу.

Нужно включить в нужные группы нужные учётные записи. Для примера, на группе Бухгалтеры правой клавишей мыши и там Добавить в группу или Свойства и там кнопка Добавить. В поле Введите имена выбираемых объектов впишите имя необходимой учётной записи и нажмите Проверить имена . Если всё верно, то учётная запись изменится к виду ИМЯСЕРВЕРА\учётная_запись. На рисунке выше, учётная запись buh3 была приведена к WINSERVER\buh3.

Итак, нужные группы созданы и учётные записи пользователей включены в нужные группы. Но до этапа назначения прав на папках и файлах с помощью групп хотелось бы обсудить пару моментов.

Стоит ли заморачиваться с группой, если в ней будет одна учётная запись? Считаю, что стоит! Группа даёт гибкость и маневренность. Завтра вам понадобится ещё одному человеку Б дать те же права, что и определённому человеку с его учётной записью А. Вы просто добавите учётную запись Б в группу, где уже имеется А и всё!

Намного проще, когда права доступа выданы группам, а не отдельным персонам. Вам остаётся лишь манипулировать группами и включением в них нужных учётных записей.

Права доступа.

Желательно выполнять нижеперечисленные действия от встроенной учётной записи Администратор или от первой учётной записи в системе, которая по умолчанию входит в группу Администраторы.

Вот и добрались до этапа, где непосредственно и происходит магия разграничения прав доступа для различных групп, а через них и пользователям (точнее их учётным записям).

Итак, у нас есть директория по адресу C:\dostup\, которую мы уже выдали в доступ по сети всем сотрудникам. Внутри каталога C:\dostup\ ради примера создадим папки Договора, Приказы, Учёт МЦ. Предположим, что есть задача сделать:

  • папка Договора должна быть доступна для Бухгалтеров только на чтение. Чтение и запись для группы Менеджеров.
  • папка УчётМЦ должна быть доступна для Бухгалтеров на чтение и запись. Группа Менеджеров не имеет доступа.
  • папка Приказы должна быть доступна для Бухгалтеров и Менеджеров только на чтение.

На папке Договора правой клавишей и там Свойства - вкладка Безопасность. Мы видим что какие-то группы и пользователи уже имеют к ней доступ. Эти права были унаследованы от родителя dostup\, а та в свою очередь от своего родителя С:

Мы прервём это наследование прав и назначим свои права-хотелки.

Жмём кнопку Дополнительно - вкладка Разрешения - кнопка Изменить разрешения .

Сначала прерываем наследование прав от родителя. Снимаем галочку Добавить разрешения, наследуемые от родительских объектов. Нас предупредят, что разрешения от родителя не будут применяться к данному объекту (в данном случае это папка Договора). Выбор: Отмена или Удалить или Добавить. Жмём Добавить и права от родителя останутся нам в наследство, но больше права родителя на нас не будут распространяться. Другими словами, если в будущем права доступа у родителя (папка dostup) изменить - это не скажется на дочерней папке Договора. Заметьте в поле Унаследовано от стоит не унаследовано . То есть связь родитель - ребёнок разорвана.

Теперь аккуратно удаляем лишние права, оставляя Полный доступ для Администраторов и Система. Выделяем по очереди всякие Прошедшие проверку и просто Пользователи и удаляем кнопкой Удалить.

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

Мы ставим галочку Заменить все разрешения дочернего объекта на разрешения, наследуемые от этого объекта и жмём Ок. Возвращаемся назад и снова Ок, чтобы вернуться к простому виду Свойства.

Данное окно позволит упрощённо достигнуть желаемого. Кнопка Изменить выведет окно "Разрешения для группы".

Жмём Добавить. В новом окне пишем Бухгалтеры и жмём "Проверить имена" - Ок. По умолчанию даётся в упрощённом виде доступ "на чтение". Галочки в колонке Разрешить автоматически выставляются "Чтение и выполнение", "Список содержимого папки", "Чтение". Нас это устраивает и жмём Ок.

Теперь по нашему техническому заданию нужно дать права на чтение и запись для группы Менеджеры. Если мы в окне Свойства, то снова Изменить - Добавить - вбиваем Менеджеры - Проверить имена. Добавляем в колонке Разрешить галочки Изменение и Запись.

Теперь нужно всё проверить!

Следите за мыслью. Мы приказали, чтобы папка Договора не наследовала права от свого родителя dostup. Приказали дочерним папкам и файлам внутри папки Договора наследовать права от неё.

На папку Договора мы наложили следующие права доступа: группа Бухгалтеры должна только читать файлы и открывать папки внутри, а группа Менеджеры создавать, изменять файлы и создавать папки.

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

Зайдите в папку Договора и создайте тестовый файл договор1.txt

На нём щелчок правой клавишей мыши и там Свойства - вкладка Безопасность - Дополнительно - вкладка Действующие разрешения.

Жмём Выбрать и пишем учётную запись любого бухгалтера, к примеру buh1. Мы видим наглядно, что buh1 получил права от своей группы Бухгалтеры, которые обладают правами на чтение к родительской папке Договора, которая "распространяет" свои разрешения на свои дочерние объекты.

Пробуем manager2 и видим наглядно, что менеджер получает доступ на чтение и запись, так как входит в группу Менеджеры, которая даёт такие права для данной папки.

Абсолютно так же, по аналогии с папкой Договора, накладываются права доступа и для других папок, следуя вашему техническому заданию.

Итог.

  • Используйте разделы NTFS.
  • Когда разграничиваете доступ на папки (и файлы), то манипулируйте группами.
  • Создавайте учётные записи для каждого пользователя. 1 человек = 1 учётная запись.
  • Учётные записи включайте в группы. Учётная запись может входить одновременно в разные группы. Если учётная запись находится в нескольких группах и какая-либо группа что-то разрешает, то это будет разрешено учётной записи.
  • Колонка Запретить (запрещающие права) имеют приоритет перед Разрешением. Если учётная запись находится в нескольких группах и какая-либо группа что-то запрещает, а другая группа это разрешает, то это будет запрещено учётной записи.
  • Удаляйте учётную запись из группы, если хотите лишить доступа, которого данная группа даёт.
  • Задумайтесь о найме админа и не обижайте его деньгами.

Задавайте вопросы в комментариях и спрашивайте, поправляйте.

Видеоматериал показывает частный случай, когда нужно всего лишь запретить доступ к папке, пользуясь тем, что запрещающие правила имеют приоритет перед разрешающими правила.

Создание локальной сети

Организация защиты данных в сети

Разграничение прав доступа в сети. Подключение компьютера к сети. Администрирование компьютерной сети.

Практическое занятие №15.

Разграничение прав доступа –это о граничение доступа к данным некоторого слоя информационной системы.

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

«Администрирование» - это папка в панели управления, содержащая средства для системных администраторов и опытных пользователей.

Администратор - опытный пользователь, умеющий работать с любыми настройками ОС и следящий за ее работоспособностью. Как следствие этого для него нет никаких ограничений при обязательной надежной защите пароля учетной записи от использования другими пользователями или взлома специальными утилитами.

Пользователь - пользователь, опыта которого недостаточно для полноценного администрирования, но который также заинтересован в надежной работе ОС. Имеет право работать с документами, папками, осуществлять ряд настроек и запускать определенные прикладные программы.

В локальной сети существует 4 уровня защиты файл-сервера:

  • защита именем регистрации и паролем;

· защита правами опекунства К файлам и подкаталогам могут применяться права доступа (чтение, изменение, удаление файла и т.д);

  • защита максимальными правами каталога (можно не дать пользователям сети возможность употребить свои права опекунств);

· защита атрибутами файла (одновременный доступ к файлу нескольких пользователей, только один пользователь, чтение, запись, переименование и удаление файла);

Для того, чтобы соединить более двух компьютеров в одну локальную сеть потребуется нужное количество компьютеров, сетевой коммутатор (свитч) или сетевой концентратор (хаб) и кабель витая пара.

Необходимо соединить компьютеры с хабом, посредством патчкордов. Вставить один конец в сетевую карту, другой - в один из портов хаба. Соединить хаб с розеткой и включить его.

С каждого компьютера заходим в Панель управления - Сетевые подключения и проверяем, подключено ли наше соединение. Если нет проверьте включена ли сетевая карта на компьютере и горит ли лампочка сзади компьютера (если горит значит компьютеры обнаружили друг друга надо только их правильно настроить чем мы и займемся.



Приступаем к их настройке. Жмем правой кнопкой на нужное Локальное подключение - Свойства - Протокол подключения (TCP/IP).

По-умолчанию, все настройки определяются автоматически, нам же требуется установить их вручную, поэтому выбираем Использовать следующий IP-адрес . Теперь стали доступны к заполнению поля, в которые мы и будем вводить параметры нашей локальной сети.

IP-адрес: 192.168.1.*

Маска подсети: 255.255.255.0 (оставляем по-умолчанию)

Нажимаем OK. Производим те же действия для остальных компьютеров, изменяя только последнюю цифру IP-адреса в указанном диапазоне.

Все, на этом настройка сетевых плат завершена и следует приступить к настройкам Группы.

Найдите на Рабочем столе значок Мой компьютер и нажмите на него правой клавишей мыши. В открывшемся меню выберите Свойства и перейдите во вкладку Имя компьютера. Здесь вы сможете выбрать название вашего ПК и рабочую группу, к которой он будет принадлежать. Нажимайте Изменить.

Имя рабочей группы обязательно должно быть одинаковым для всех компьютеров, соединенных в локальную сеть. Например, WORK или FIRMA . Изменяем имя группы на всех ПК, а также каждому присваиваем свое имя. Желательно назначать обдуманные имена компьютеров локальной сети, это ускорит поиск нужного в дальнейшем. Например, имя компьютера может обозначать пользователя, который пользуется данным ПК.

В итоге у вас должны получиться подобные компьютеры (Имя компьютера - Рабочая группа - IP-адрес - Маска подсети):

COMP1 - GROUP - 192.168.1.1 - 255.255.255.0
COMP2 - GROUP - 192.168.1.2 - 255.255.255.0
COMPX - GROUP - 192.168.1.X - 255.255.255.0

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

Общий доступ

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

Делается это следующим образом. Находим нужную папку, к которой нужно открыть доступ. Нажимаем на нее правой клавишей мыши и выбираем пункт Общий доступ и безопасность. Далее ставим две галочки напротив Открыть общий доступ к этой папке и Разрешить изменение файлов по сети, если вы разрешаете удалять, изменять или добавлять ее содержимое удаленно.

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

В Сетевом окружении откроется список всех доступных ПК в локальной сети.


Фрагменты.

Фрагмент 1. Как устроена компьютерная сеть Система компьютеров, связанных каналами передачи информации, называется компьютерной сетью.
Фрагмент 2. Локальные сети Небольшие компьютерные сети, работающие в пределах одного помещения, одного предприятия, называются локальными сетями (ЛС).
Фрагмент 3. Обычно компьютеры одной локальной сети удалены друг от друга на расстоянии не более одного километра. Во многих школах кабинеты информатики оснащены локальными сетями.
Фрагмент 4. Чаще всего ЛС организованы по следующему принципу: имеется одна центральная машина, которая называется файл-сервером. Пользователей локальной сети принято называть рабочей группой, а компьютеры, за которыми они работают - рабочими станциями.
Фрагмент 5. Центральная машина имеет большую дисковую память. В ней в виде файлов хранится программное обеспечение и другая информация, к которой могут обращаться пользователи сети.
Фрагмент 6. Название «сервер» происходит от английского server и переводится как «обслуживающее устройство». Компьютер-сервер -это машина, которая распределяет между многими пользователями общие ресурсы.
Фрагмент 7. Существуют две основные цели использования локальных сетей: 1) обмен файлами между пользователями сети; 2) использование общих ресурсов, доступных всем пользователям сети: большого пространства дисковой памяти, принтеров, централизованной базы данных, программного обеспечения и других.
Фрагмент 8. Если все компьютеры в сети равноправны, то есть сеть состоит только из рабочих станций пользователей, то ее называют одноранговой сетью.
Фрагмент 9. Одноранговые сети используются для реализации первой из отмеченных целей - обмена файлами. У каждого компьютера в такой сети есть свое имя.
Фрагмент 10. В сетях с выделенным серверомреализуется клиент-сервернаятехнология. На сервере устанавливается серверное ПО: серверная операционная система; WEB-сервер (организация Интранет); прокси-сервер (обеспечение работы с Интернет рабочих станций); файл-сервер (обеспечение совместного доступа к файлам) и т.п.
Фрагмент 11. На рабочей станции устанавливается клиентское ПО: операционная система для рабочих станций; клиентская часть прикладного ПО и т.п.
Фрагмент 12. Аппаратное обеспечение сети (Топология компьютерной сети) Топология ЛС – это физическое расположение компьютеров сети относительно друг друга и способ соединения их линиями.
Фрагмент 13. Наиболее распространены следующие способы соединения компьютеров: шина (как правило используется для одноранговых сетей); звезда (используется для любых локальных сетей); кольцо.
Фрагмент 14. Для организации локальной сети необходимо установить в каждый ПК сетевую плату и соединить все компьютеры с помощью специального кабеля.

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

Что ж, сама по себе данная тема довольно грузная, и требует определённого времени на анализ и постанувку задачи.

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

Давайте с самого начала обсудим архитектуру модульной системы на выбранной нами псевдо-системе.

Все модули представлены ввиде подключаемых к главному документу (индекс-файлу) вставок. Запрос модуля происходит из строки запроса QUERY_STRING, и название подключаемого модуля передаётся в качестве аргумента act. В некотором месте индекса файла происходит изъятие и обработка данного параметра. После, если у пользователя достаточно прав для доступа к модулю в контексте чтения, происходит проверка существования указанного в строке запроса модуля, и если таковой существует, то происходит его подключение к индекс файлу.

Я не просто так упомянул о "контексте чтения", так как наша системе предполагает существование двух контекстов работы с системой, а именно - чтение и запись. При этом под чтением предполагается непосредственный доступ к модулю и к тем его частям, которые не предполагают внесение изменений в структуру данных в БД. Под записью же предполагается непосредственное внесение изменений в информацию, хранимую в базе данных.

Для воплощения данного механизма мы будет проверять значение переменной строки запроса `do`, которая обрабатывается в самом модуле и носит информацию о том, к какому разделу модуля необходимо предоставить доступ пользовалю.

Значение do буду фиксированными, данная переменная будет принимать следующие значения:

  • main - главная часть модуля (доступно в контексте чтения)
  • config - раздел настройки модуля (доступно в контексте записи)
  • create - произвести некоторые действия, по добавлению информации в БД (доступно в контексте записи)
  • delete - доступ к разделу, предоставляющему возможности удалить некоторую информацию, в контексте данного модуля (доступно в контексте записи)
  • edit - доступ к редактированию информации в контексте модуля (доступно в контексте записи)

В целом, этот список можно увеличить, при этом всё зависит лишь только от масштабов проекта и его потребностей в функционале.

Теперь непосредственно о модулях. Кроме физического существования некоторого модуля в контексте файловой системы проекта, модуль так же должен быть добавлен в особую таблицу БД, которая будет содержать информацию о всех существующих модулях в системе. Добавление и изменение данных данной таблицы, обычно, производится непосредственно в контексте модулей, а то есть во время их инсталяции в системе. Однако это уже углубление в принципы посмотроения расширяемых систем, о чём мы как-то в другой раз поговорим, и посему, мы ограничимся ручным обновлением и добавлением данных о модулях.

Так, запись о модуле системы будет содержать следующую информацию: английский идентификатор названия модуля, который будет идентичен значению переменной среды GET - act (относительно него будет производится непосредственно запрос модуля), русский идентификатор модуля, который будет использоватся в списке модулей.

Кроме модулей у нас будут ещё две таблицы, а именно таблица в которой будут хранится данные относительно профилей прав доступа и таблица с информацией о пользователях непосредственно.

Таблица профилей безопасности будет состоять всего из трёх полей - идентификатор профиля (числовое значение идентификатора записи), текстый идентификатор модуля (предназначенный для пользователей), а так же особым образом сформированная текстовая метка, содержащая информацию о правах пользователя, в контексте каждого из модулей.

Что ж, давайте рассмотрим эту особую структуру. Она будет следующей: [ module_indefier: + \: + \;] *

То есть идёт список из пар: имя модуля ":" права чтения "," права записи ";". При этом данная метка обновляется в момент внесения изменений о правах доступа пользователя к системе. Если в системе появляется информация о модуле, который не вошёл в данную метку, то стоит просто произвести процедуру редактирования, и данные сохранятся автоматически.

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

Я не буду добавлять ничего лишнего в неё, но лишь то, что будет использоватся в контексте темы данной статьи. Таблица пользователей будет содержать следующие поля: идентифицатор пользователя (числовой счётчик), логин, пароль (хеш оригинального пароля), профиль безопасности пользователя (идетификатор группы пользователя, относительно прав в системе), и всё. Мне кажется этой информации нам с вами вполне хватит, для реализации поставленной задачи, а уже все остальные надстройки я предоставляю возможность сделать самим.

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

Таблица `modules`:

CREATE TABLE `modules` (`id` bigint(20) NOT NULL auto_increment, `indefier` text collate utf8_unicode_ci NOT NULL, `title` text collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Таблица `secure_groups`:

CREATE TABLE `secure_groups` (`id` bigint(20) NOT NULL auto_increment, `title` text collate utf8_unicode_ci NOT NULL, `perms` text collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;

Таблица `users`

CREATE TABLE `users` (`id` bigint(20) NOT NULL auto_increment, `login` text collate utf8_unicode_ci NOT NULL, `passwd` text collate utf8_unicode_ci NOT NULL, `groupId` int(1) NOT NULL default "0", PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;

temp=array(); $this->temp["_result"]=0; $this->temp["_uid"]=explode("::",$_COOKIE["site_hash"]); $this->temp["_uid"]=$this->temp["_uid"]; $this->temp["_gid"]=$this->getUserSecurityAccess($this->temp["_uid"]); $this->temp["_conn_id"]=mysql_connect("host","user","passwd"); mysql_select_db("database"); $this->temp["_q1"]=mysql_query("SELECT perms" ."FROM `secure_groups`" ."WHERE id=".$this->temp["_gid"]); $this->temp["_access_stamp"]=mysql_fetch_assoc($this->temp["_q1"]); $this->temp["_access_stamp"]=$this->temp["_access_stamp"]["perms"]; $this->temp["_access_stamp"]=explode(";",$this->temp["_access_stamp"]); $this->temp["_access_stamp"]=array_slice($this->temp["_access_stamp"],0,-1); foreach($this->temp["_access_stamp"] as $this->temp["v"]){ $this->temp["_mod_access"]=explode(":",$this->temp["v"]); $this->temp["_mod_indefier"]=$this->temp["_mod_access"]; if($this->temp["_mod_indefier"]==$module){ $this->temp["_perms"]=explode(",",$this->temp["_mod_access"]); switch($act){ case "r": $this->temp["_result"]=($this->temp["_perms"]==1)? 1:0; break; case "w": $this->temp["_result"]=($this->temp["_perms"]==1)? 1:0; break; } break; } } mysql_close($conn_id); return $this->temp["_result"]; } } ?>

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

Функция secure::getUserId()

Используя данную функцию, мы подразумеваем, что во время авторизации пользователя в системе в переменной среде $_COOKIE была установлена переменная `site_hash`, состоящая из идентификатора пользователя в системе и хеша для проверки аутентичности его в системе. Функция просто изымает значение идентификатора, возращая его значение на выходе.

Функция secure::getUserSecurityAccess($id)

На выходе данная функция возвращает идентификатор профиля безопасности текущего пользователя в системе.

Функция secure::checkUserPermission($module,$act))

Производится запрос к БД, относительно прав пользователя на произведение действий чтения/записи в контексте переданного в качестве параметра модуля.

Осталось лишь описать процедуру формирования переменной в среде $_COOKIE, и тему статьи можно будет считать расскрытой.

Процедура авторизации будет выглядеть ввиде внесения личных данных пользователя (логин и пароль) в специальную форму, после отправки которой произойдёт обработка данных, переданных пользователем, по-методу функции checkAuthData(), и, в случае корректности данных, будет произведено сохранение данных о пользователе ввиде куки записи на период установленный пользователем, либо в отсутствии заданного значение на период по-умолчанию.

Для проверки аутентичности данных хранимых в переменной среде $_COOKIE, мы будем использовать функцию EatCookie(), которая будет производить валидацию данных, возвращая булевый результат проверки (истина - ложь).

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

  • `ulogin` - логин пользователя
  • `upasswd` - пароль пользователя
  • `stime` - время сессии, устанавливаемое пользователем (от 1 до 5 часов)
  • `auth` - имя кнопки отправки

Вот, в целом и всё. Осталось лишь пробовать, экспериментировать, ошибатся и находить решение, что я всецело и оставляю вам.

Надеюсь, что мы скоро встретимся, а для тех кто имеет ко мне вопрос в отношении статьи, да и не только - писать на [email protected], либо на [email protected].

С уважением Карпенко Кирилл, глава IT-отдела ИНПП.

Автоматизированная система АСОМИ предусматривает возможность гибкого разграничения прав доступа пользователей к хранимой метрологической информации. Такой подход обеспечивает защиту хранящейся и обрабатываемой информации, а именно:

  • ограничение прав на чтение, изменение или уничтожение;
  • возможность хранения и передачи информации между объектами АСОМИ в виде, значительно затрудняющем ее распознавание при несанкционированном доступе или техническом обслуживании (в частности, с использованием технологий шифрования);
  • обеспечение целостности информации, а также доступности информации для органов управления и уполномоченных пользователей;
  • исключение утечки информации при обработке и передаче между объектами вычислительной техники.

Разграничение доступа для пользователей системы АСОМИ реализовано в разрезе следующих групп сущностей: отчетность и операционные данные (протоколы) справочные данные, журналы истории (логирование действий пользователя и данные по истории изменений сущностей), учетные данные (карточки СИ). Рассмотрим далее подробно каждую из групп.

Доступ к учетным данным определяется через следующие концептуальные понятия:

  • Лицо, ответственное за обработку текущего статуса средства измерения - это сотрудник предприятия, который в текущем статусе СИ должен выполнить определенные этим статусом действия и перевести СИ в последующий статус в рамках рабочего цикла одной из метрологических работ. Определяется из параметров текущего статуса СИ. Например, таким лицом является лицо, исполняющее роль диспетчера (далее по тексту Диспетчер), принявшее СИ для выполнения ремонта и обязанное его затем передать лицу, исполняющему роль исполнителя ремонта (далее по тексту Исполнитель ремонта).
  • Материально-ответственное за СИ лицо - это сотрудник предприятия, который несет материальную ответственность за средство измерения или эксплуатирует его. Определяется в учетной карточке СИ. Как правило, таким лицом является мастер, в ведении которого находится это СИ.
  • Руководители "первых двух" лиц - буквально по определению. Определяются из организационной структуры предприятия по следующему принципу: они являются руководителями лиц из первых двух категорий "Лицо, ответственное за обработку текущего статуса СИ" и "Материально-ответственное за СИ лицо"; либо они являются руководителями вышестоящего подразделения предприятия, в состав которого входит (подчиняется) структурное подразделение, где исполнителями работают лица из первых двух категорий. В рамках АСОМИ этот концептуальный принцип приводит к тому, что информация о СИ доступна как всем вышестоящим руководителям Метролога, так и всем вышестоящим руководителям исполнителей тех или иных МР (например, начальник цеха имеет доступ к информации о СИ, за которые ответственны его мастера).
  • Лицо, ответственное за метрологический надзор и контроль - это, например, сотрудник поверочного, ремонтного подразделения или метролог структурного подразделения, исполняющий обязанности по надзору и контролю. В соответствии с его обязанностями, он вправе иметь доступ на чтение учетной информации обо всех СИ, закрепленных за ним.

Таким образом, те сотрудники предприятия, которые попадают в одну из четырех (возможно, сразу в несколько) вышеперечисленных категорий, по отношению к конкретному СИ имеют возможность видеть на своем рабочем месте информацию о текущем статусе каждого СИ и, соответственно, данные учетной карточки СИ, включая данные об истории метрологических работ.

При этом сотрудник предприятия, который в данный момент времени ответственен за обработку текущего статуса СИ, имеет право изменять информацию СИ, связанную с этим статусом, и переводить СИ в последующий статус, соответствующий выполняемому рабочему циклу МР, но не имеет права влиять на историю переходов по Диаграмме статусов СИ.

Теперь рассмотрим Правила и порядок доступа к справочным данным. Такие функции как просмотр и использование справочных данных для выполнения своих обязанностей по метрологическому обеспечению доступны всем пользователям АСОМИ.

При этом доступ на пополнение и редактирование справочных данных разрешается только сотрудникам предприятия, исполняющим в системе АСОМИ роль администратора или контролера. Они полностью ответственны за актуальность и корректность информации, содержащейся в справочниках. При заполнении справочников, касающихся структуры прав доступа в АСОМИ, используются данные из справочников, входящих в справочный блок "Структура прав доступа в АСОМИ". При заполнении специфических (дополнительных) справочников используются данные из НТД (нормативно-технической документации) на СИ, данных Госреестра СИ, допущенных к применению на территории РФ, других достоверных источников.

Правила и порядок доступа к отчетности и операционным данным (протоколам) организован следующим образом. Доступ к реализованной в АСОМИ стандартной отчетности организуется по ролям в системе. При этом для каждой должности указывается тот перечень стандартных отчетов (выборка из общего перечня всех стандартных отчетов АСОМИ), которые может формировать со своего рабочего места сотрудник, занимающий данную должность.

В рамках отчетности может быть организован доступ к специальным функциям. Примером такой функции может являться поиск и получение информации о любом из учтенных в системе СИ по различным его параметрам, к примеру, мастер будет иметь возможность вывести в виде отчета список всех СИ, зарегистрированных в АСОМИ, для того, чтобы, например, подыскать варианты замены своего СИ на такое же СИ, которое находится на консервации в соседнем цехе.

Доступ к операционным данным (протоколам работы пользователей) разрешен только Администраторам АСОМИ и Главному метрологу предприятия.

Правила и порядок назначения и изменения доступа к информационным данным могут быть назначены или изменены только Администратором АСОМИ.


Если Вас заинтересовал данный продукт или возникли вопросы,
которые Вы хотели бы задать, пишите: