Оглавление
3.1Разграничение доступа посредством ролей. 5
3.2 Разграничение прав на уровне записей. 7
3.3Разграничение доступа программными методами. 8
3.4 Назначение ролей и средств идентификации пользователей. 10
На сегодняшний день, на российском рынке автоматизации учета лидируют прикладные решения разработанные на базе платформы разработанной Российской фирмой «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 с.: ил.
Пример несанкционированной попытки входа в системы.
Пример разграничения доступа путем ограничения через роли, на иллюстрации продемонстрирована попытка открыть справочник, на чтение которого у пользователя нет прав.
Пример разграничения прав на уровне записей.
Пример программной реализации недоступности кнопки «Печать» в документе «Расходная накладная».
14
3.1Разграничение доступа посредством ролей. 5
3.2 Разграничение прав на уровне записей. 8
3.3Разграничение доступа программными методами. 8
3.4 Назначение ролей и средств идентификации пользователей. 10
На сегодняшний день, на российском рынке автоматизации учета лидируют прикладные решения разработанные на базе платформы разработанной Российской фирмой «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 с.: ил.
Пример несанкционированной попытки входа в системы.
Пример разграничения доступа путем ограничения через роли, на иллюстрации продемонстрирована попытка открыть справочник, на чтение которого у пользователя нет прав.
Пример разграничения прав на уровне записей.
Пример программной реализации недоступности кнопки «Печать» в документе «Расходная накладная».
15