1с и безопасность

Перед нами задача: максимально ограничить права пользователей 1С. Как пользователи могут вынести информацию, которую им запрещено выносить:
1. Через формирование отчета, встроенного в БД и сохранения его во внешний файл.
2. Через открытие специального отчета, полученного из вне, который покажет пользователю закрытую информацию.
3. Через копирование самой базы данных на внешний носитель, с целью открыть ее на другом ПК.
4. Прочие хитрости.


Начнем с первого пункта - формирование отчетов, встроенных в БД с последующим сохранением во внешний файл.

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

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

В 1С как в версии 77 так и более поздних у печатно формы таблицы есть интересный метод - Защита().
Справка из 1С 77:
Защита(<?>)
Синтаксис: Защита(<Флаг>)
Назначение:
Защитить таблицу от изменений (редактирования и копирования, в том числе через буфер обмена). Возвращает: текущее числовое значение флага защиты таблицы (на момент до исполнения метода).
Параметры:
<Флаг> - флаг защиты таблицы от изменений: 1 - установить защиту, 0 - снять.

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

В 1С 8 делаем аналогично (естественно с поправкой на синтаксис).

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

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

В 1С 77 :
“Использование любых внешних отчетов и обработок” - запрещает открытие и запуск любых внешних отчетов.
“Использование общих внешних отчетов и обработок” -запрещает открытие и запуск отчетов из папки ExtForms.
“Использование функций в табло и формульном калькуляторе” - запрещает выполнение кода в табло.
“использование в качестве OLE Automation сервера” - запрещает подключение через OLE.

в 1С 81:
“Интерактивное открытие внешних отчетов” - запрещает открывать внешние отчеты.
“Интерактивное открытие внешних обработок” - запрещает открывать внешние обработки.
“Внешнее соединение” - запрещает внешние соединение.
“Automation” - запрещает подключение через OLE.

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

3. Копирование базы. Тут все еще проще, особенно, если у Вас стоит SQL версия 1с 8.1. - в таком случае БД храниться (имеет возможность по крайней мере) на выделенном сервере БД, а доступ к ней осуществляется через клиентскую часть 1С 8.1.

Сложнее дело обстоит если база данных файловая. Как тут можно поступить:
- радикальный способ: файловая БД хранится на терминальном сервере, который не имеет возможности подключать сетевые ресурсы. В таком случае, банально, базу некуда будет слить. Но есть маленькая проблема - некоторым пользователям, скорее всего, вам придется предоставить возможность сохранять сформированные отчеты во внешние файлы для дальнейшей перекачки. (яркий пример - бухгалтерия с налоговой отчетностью; руководство, которое любит формировать и потом работать через Excel в отчетах по прибылям; маркетологи, руководители отдела продаж и многие другие…)
- положить все базы в одну папку на диске (например d:\1CBase) и запретить доступ в эту папку, оставляя доступ на дочерние папки. В таком случае пользователь не сможет добраться до самой базы данных. Даже попытавшись скопировать базу через окно открытия файлов самой 1С, он сможет скопировать только текстовые файлы, файлы обработок и отчетов.

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

4. Прочие хитрости. Эти хитрости мало касаются самой 1с и больше относятся к общим советам:
- Правильная настройка домена предприятия и разграничение доступа к серверу, где хранится БД.
- Запрет на запуск всех программ под терминалом 1С или ПК, где открывается БД, кроме определенных разрешенных.
- Максимально избегать предоставления возможности доступа к БД удаленно. (например из дома).
- Контроль наличия паролей на БД 1С у всех пользователей, зарегистрированных в БД. Так же следует контролировать, чтобы пользователи не передавали друг другу свои пароли.
- Продуманная защита от удаленных атак (через интернет).
- Максимально ограничить возможность использовать внешние накопители данных, такие как оптические диски, флешки.
- Ограничить административно круг людей, имеющих расширенные права в БД и закрепить за ними ответственность.
- Каждую просьбу на расширение прав в БД согласовывать с руководством - для уточнения необходимости для данного пользователя.

Главное иметь в виду - предотвратить “взлом” изнутри крайне сложно. Все вышеперечисленные методы осложнят несанкционированный доступ к БД, но не гарантируют 100% защиты.

4 Комментариев

орехоколкаИюнь 7, 2010 в 08:01

Похоже на паранойю:
Ctrl + PrntScr никто не отменял
Печать на бумажный носитель тоже
Путь к каталогу БД показывается 1 при запуске или нажатии кнопки ИЗМЕНИТЬ
От копирования самой базы защищает только серверный вариант.

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

0pexИюнь 8, 2010 в 08:12

Стоит ли считать надежно безопасным компьютер закрытый в забетонированный сейф и закопанный глубоко под землю? Это про паранойю.

Ctrl + PrntScr - это проблема не только 1с, а любой программы. (решается очень просто http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=%D0%BE%D1%82%D0%BA%D1%8E%D1%87%D0%B8%D1%82%D1%8C+print+screen).

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

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

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

StormBringerСентябрь 20, 2010 в 08:38

“предотвратить “взлом” изнутри крайне сложно” Вот-вот. А блокировка Ctrl + PrntScr не поможет если у юзера есть фотоаппарат.

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

kirillЯнварь 12, 2011 в 00:31

беспонтовая статья ,от сисадминов базу не спрячешь ,а от юзеров они сами прикроют ,и без этой лажи