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

Помощь 13.08.2019
Помощь

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

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

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

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

Все модули представлены ввиде подключаемых к главному документу (индекс-файлу) вставок. Запрос модуля происходит из строки запроса 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-отдела ИНПП.

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

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

Обычно выделяют следующие методы разграничения доступа:

    разграничение доступа по спискам;

    использование матрицы установления полномочий;

    парольное разграничение доступа.

При разграничении доступа по спискам задаются соответствия:

    каждому пользователю – список ресурсов и прав доступа к ним или

    каждому ресурсу – список пользователей и их прав доступа к данному ресурсу.

Списки позволяют установить права с точностью до пользователя. Здесь нетрудно добавить права или явным образом запретить доступ. Списки используются в большинстве ОС и СУБД.

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

Таблица 2.7

Фрагмент матрицы установления полномочий

c – создание, d – удаление, r – чтение, w – запись, e – выполнение.

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

Разграничения доступа по уровням секретности и категориям состоят в том, что ресурсы АС разделяются в соответствии с уровнями секретности или категорий.

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

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

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

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

В завершении подраздела заметим, что руководящие документы могут регламентировать два вида (принципа) разграничения доступа:

    дискретное управление доступом;

    мандатное управление доступом.

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

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

Лабораторная работа

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

Цель: освоение приемов обмена файлами между пользователями локальной компьютерной сети .

Теоретические сведения к лабораторной работе

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

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

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

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

Абоненты сети – объекты, генерирующие или потребляющие информацию.

Абонентами сети могут быть отдельные ЭВМ, промышленные роботы, станки с ЧПУ (станки с числовым программным управлением) и т.д. Любой абонент сети подключён к станции.

Станция аппаратура, которая выполняет функции, связанные с передачей и приёмом информации.

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

Физическая передающая среда – линии связи или пространство, в котором распространяются электрические сигналы, и аппаратура передачи данных.

Одной из основных характеристик линий или каналов связи является скорость передачи данных (пропускная способность).

Скорость передачи данных – количество бит информации, передаваемой за единицу времени.

Обычно скорость передачи данных измеряется в битах в секунду (бит/с) и кратных единицах Кбит/с и Мбит/с.

Соотношения между единицами измерения: 1 Кбит/с =1024 бит/с; 1 Мбит/с =1024 Кбит/с; 1 Гбит/с =1024 Мбит/с.

На базе физической передающей среды строится коммуникационная сеть. Таким образом, компьютерная сеть – это совокупность абонентских систем и коммуникационной сети.

Виды сетей. По типу используемых ЭВМ выделяют однородные и неоднородные сети . В неоднородных сетях содержатся программно несовместимые компьютеры.

По территориальному признаку сети делят на локальные и глобальные.

Локальные сети (LAN, Local Area Network) объединяют абонентов, расположенных в пределах небольшой территории, обычно не более 2–2.5 км.

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

Глобальные сети (WAN, Wide Area Network) объединяют абонентов, расположенных друг от друга на значительных расстояниях: в разных районах города, в разных городах, странах, на разных континентах (например, сеть Интернет).

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


Основные компоненты коммуникационной сети:

    передатчик;

    приёмник;

    сообщения (цифровые данные определённого формата: файл базы данных, таблица, ответ на запрос, текст или изображение);

    средства передачи (физическая передающая среда и специальная аппаратура, обеспечивающая передачу информации).

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

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

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

Достоинства:

    простота добавления новых узлов в сеть (это возможно даже во время работы сети);

    сеть продолжает функционировать, даже если отдельные компьютеры вышли из строя;

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

Недостатки:

    сложность сетевого оборудования;

    сложность диагностики неисправности сетевого оборудования из-за того, что все адаптеры включены параллельно;

    обрыв кабеля влечет за собой выход из строя всей сети;

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

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

Достоинства:

    выход из строя периферийного компьютера никак не отражается на функционировании оставшейся части сети;

    простота используемого сетевого оборудования;

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

    не происходит затухания сигналов.

Недостатки:

    выход из строя центрального компьютера делает сеть полностью неработоспособной;

    жесткое ограничение количества периферийных компьютеров;

    значительный расход кабеля.

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

Достоинства:

    легко подключить новые узлы, хотя для этого нужно приостановить работу сети;

    большое количество узлов, которое можно подключить к сети (более 1000);

    высокая устойчивость к перегрузкам.

Недостатки:

    выход из строя хотя бы одного компьютера нарушает работу сети;

    обрыв кабеля хотя бы в одном месте нарушает работу сети.

В отдельных случаях при конструировании сети используют комбинированную топологию. Например, дерево (tree)– комбинация нескольких звезд.

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

При конструировании сетей используют следующие виды кабелей:

неэкранированная витая пара. Максимальное расстояние, на котором могут быть расположены компьютеры, соединенные этим кабелем, достигает 90 м. Скорость передачи информации - от 10 до 155 Мбит/с; экранированная витая пара. Скорость передачи информации - 16 Мбит/с на расстояние до 300 м.

коаксиальный кабель. Отличается более высокой механической прочностью, помехозащищённостью и позволяет передавать информацию на расстояние до 2000 м со скоростью 2-44 Мбит/с;

Идеальная передающая среда, он не подвержен действию электромагнитных полей, позволяет передавать информацию на расстояние до 10 000 м со скоростью до 10 Гбит/с.

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

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

Шлюзы (gateway)– это устройства (компьютеры), служащие для объединения сетей с совершенно различными протоколами обмена.

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

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

Главный компьютер сети, который предоставляет доступ к общей базе данных, обеспечивает совместное использование устройств ввода-вывода и взаимодействия пользователей называется сервером .

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

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

Программное обеспечение можно разделить на два класса:

    программы-серверы, которые размещаются на узле сети, обслуживающем компьютер пользователя;

    программы-клиенты, размещенные на компьютере пользователя и пользующиеся услугами сервера.

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

Содержание работы:

Задание №1.

    Создайте на «Обменник 403» папку под именем Почта_1 (цифра в имени соответствует номеру вашего компьютера).

    С помощью текстового редактора Word или WordPad создайте письмо к одногруппникам.

    Сохраните данный текст в папке Почта_1 своего компьютера в файле письмо1. doc , где 1 – номер компьютера.

    Откройте папку другого компьютера, например, Почта_2 и скопируйте в него файл письмо1 из своей папки Почта_1.

    В своей папке Почта_1 прочитайте письма от других пользователей, например письмо2. Допишите в них свой ответ.

    Переименуйте файл письмо2 . doc в файл письмо2_ответ1. doc

    Переместите файл письмо2_ответ1. doc в папку Почта _2 и удалите его из своей папки

    Прочитайте сообщения от других пользователей в своей папке и повторите для них действия п.5-8.

Задание №2. Ответить на вопросы:

    Укажите основное назначение компьютерной сети.

    Укажите объект, который является абонентом сети.

    Укажите основную характеристику каналов связи.

    Что такое локальная сеть, глобальная сеть?

    Что понимается под топологией локальной сети?

    Какие существуют виды топологии локальной сети?

    Охарактеризуйте кратко топологию «шина», «звезда», «кольцо».

    Что такое протокол обмена?

    Решите задачу. Максимальная скорость передачи данных в локальной сети 100 Мбит/с. Сколько страниц текста можно передать за 1 сек, если 1 страница текста содержит 50 строк и на каждой строке - 70 символов

Задание №3. Сделать вывод о проделанной лабораторной работе:


Введение.

Постановка задачи.
Реализация задачи.




КонецПроцедуры


КонецЕсли;



Функция ПровДостПрава(Право)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ

| ЗначенияДопПрав.Значение

Выборка.Следующий();

Возврат Выборка.Значение;

Возврат Ложь;

КонецЕсли;

КонецФункции


Процедура ПриОткрытии()

КонецПроцедуры




Заключение.
Список литературы.
Приложение.




Введение.

На сегодняшний день, на российском рынке автоматизации учета лидируют прикладные решения разработанные на базе платформы разработанной Российской фирмой «1С». По данным социологических исследований опубликованных в сети Интернет, в России и странах СНГ в 90% организаций для автоматизации учета используются данные системы. Также данные системы не имеют аналогов для полноценной автоматизации бухгалтерского учета по РСБУ. Так как бухгалтерская и налоговая отчетность, обрабатываемая и хранимая в подобных системах составляет из себя конфиденциальную информацию любой организации, то эту информацию необходимо защищать на должном уровне. Кроме бухгалтерского учета, посредством данных систем было автоматизировано много участков учета (например кадровый учет и расчет заработной платы, оперативный и управленческий учет, учет взаимоотношений с клиентами и т.п.).


Постановка задачи.

В данной работе, я хочу описать методы и способы защиты информации в базах данных построенных на основе систем «1С Предприятие».

В настоящий момент активно используются 3 версии «1С», а именно версии 7.7, 8.1 и 8.2. Версия 7.7 уже морально себя изжила и устарела, и я не вижу практического смысла рассматривать данную систему в качестве примера. Так как версия 8.2 поступила в официальную продажу совсем недавно, то я остановился на версии «1С Предприятие 8.1». В качестве примера, была взята разработанная ранее учебная система для автоматизации задач оперативного и бухгалтерского учета и расчета заработной платы.

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

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

Необходимо установить следующие права на доступ к объектам:

Создать права администратора, для полного доступа ко всем данным.

Для руководителя организации предоставить права к отчетам и права на просмотр всех документов.

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

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

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

Для всех сотрудников кроме руководства запретить печать не проведенных документов.

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


Реализация задачи.

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


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

Рисунок 1. Основные объекты конфигурации.

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

На рисунке 2 предоставлен пример установления полных прав для администратора системы.


Рисунок 2. Установка всех прав для роли.


Для остальных пользователей необходимо установить нужные права, это проиллюстрировано на рисунке 3.


Рисунок 3. Пример установления прав для конкретного пользователя.


Разграничение прав на уровне записей.


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


Рисунок 4. Пример ограничения доступа на уровне записей.


Пользователь идентифицируется при помощи параметра сеанса «Текущий исполнитель» информация о пользователях хранится в справочнике «Сотрудники». Параметр сеанса «Текущий исполнитель» устанавливается при запуске программы при помощи следующего программного текста:

Процедура ПриНачалеРаботыСистемы()

ПараметрыСеанса.ТекущийИсполнитель= Справочники.Сотрудники.НайтиПоКоду(ИмяПользователя());

КонецПроцедуры


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


Кроме механизма ролей, в программе можно настроить доступ к данным посредством написания процедур и функций на встроенном в «1С Предприятие» языке. В качестве примера можно привести возможность системы открыть форму (визуальный элемент с которым работает пользователь) только для просмотра при выполнении определенных условий, например:

Если ПараметрыСеанса.ТекущийПользователь =

Справочники.Сотрудники.НайтиПоНаименованию(«Иванов») Тогда

ЭтаФорма.ТолькоПросмотр = Истина;

КонецЕсли;


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


Функция ПровДостПрава(Право)

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ

| ЗначенияДопПрав.Значение

| РегистрСведений.ЗначенияДопПрав КАК ЗначенияДопПрав

| ЗначенияДопПрав.Сотрудник = &Сотрудник

| И ЗначенияДопПрав.Право = &Право";

Запрос.УстановитьПараметр("Сотрудник",

ПараметрыСеанса.ТекущийИсполнитель);

Запрос.УстановитьПараметр("Право", Право);

Результат = Запрос.Выполнить();

Если Не Результат.Пустой() Тогда

Выборка = Результат.Выбрать();

Выборка.Следующий();

Возврат Выборка.Значение;

Возврат Ложь;

КонецЕсли;

КонецФункции


На форме документа Расходная накладная есть кнопка «Печать» отвечающая за формирование печатной формы данного документа. При открытии данного документа посредством следующего программного текста установим доступность данной кнопки для пользователя:

Процедура ПриОткрытии()

ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Печать.

Доступность = ПровДостПрава(Перечисления.

ДопПрава.ПечатьНепроведенныхДокументов);

КонецПроцедуры


Назначение ролей и средств идентификации пользователей.


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


Рисунок 5. Список пользователей, роли и средства идентификации.


Заключение.

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

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


Список литературы.

Габец А.П., Гончаров Д.И. 1С:Предприятие 8.1. Простые примеры разработки. – М.: ООО «1С-Паблишинг»; СПБ: Питер, 2008. – 383 с.: ил. + CD-ROM.

1С:Предприятие 8.2. Руководство разработчика. Часть 1. – М.: ЗАО «1С», 2009 – 638 с.: ил.

Радченко М.Г. 1С:Предприятие 8.1. Практическое пособие разработчика. Примеры и типовые приемы. М.: ООО «1С-Паблишинг», 2008. 874 с.: ил.

Белоусов П.С. Методические материалы курса обучения «Конфигурирование платформы «1С:Предприятие 8.1». – М.: ЗАО «1С», 2007 – 272 с.: ил.


Приложение.

Пример несанкционированной попытки входа в системы.



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

Пример разграничения прав на уровне записей.



Пример программной реализации недоступности кнопки «Печать» в документе «Расходная накладная».



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

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

Обычно выделяют следующие методы разграничения доступа:

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

Использование матрицы установления полномочий;

Парольное разграничение доступа.

При разграничении доступа по спискам задаются соответствия:

Каждому пользователю – список ресурсов и прав доступа к ним или

Каждому ресурсу – список пользователей и их прав доступа к данному ресурсу.

Списки позволяют установить права с точностью до пользователя. Здесь нетрудно добавить права или явным образом запретить доступ. Списки используются в большинстве ОС и СУБД.

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

Таблица 2.7

Фрагмент матрицы установления полномочий

Программа

Пользователь 1

Пользователь 2

w c 9:00 до 17:00

c – создание, d – удаление, r – чтение, w – запись, e – выполнение.

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

Разграничения доступа по уровням секретности и категориям состоят в том, что ресурсы АС разделяются в соответствии с уровнями секретности или категорий.

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

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

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

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

В завершении подраздела заметим, что руководящие документы могут регламентировать два вида (принципа) разграничения доступа:

Дискретное управление доступом;

Мандатное управление доступом.

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

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



Рекомендуем почитать

Наверх