В практике администрирования 1С часто возникает ситуация, когда в целях безопасности пользователям запрещается использование любых внешних отчетов и обработок. Это достигается путем отключения роли ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок (или аналогичной в типовых решениях). Однако иногда бизнес-процесс требует, чтобы пользователь имел доступ ровно к одному специфическому внешнему файлу, не получая при этом возможности запускать любой произвольный код. Проанализируем способы решения этой задачи, начиная от изменения структуры метаданных и заканчивая использованием штатных подсистем.
Это наиболее современный и «чистый» метод, который позволяет не снимать основную конфигурацию с поддержки. Рассмотрим этот процесс по шагам. Когда мы добавляем отчет в расширение, он перестает считаться «внешним» с точки зрения платформенных прав на интерактивное открытие файлов (меню «Файл» — «Открыть»).
ДоступККонкретномуОтчету.Использование для нашего нового отчета и право Просмотр для подсистемы, в которой он будет отображаться.Таким образом, пользователь сможет запустить этот конкретный отчет через интерфейс (панель отчетов), но не сможет открыть никакой другой внешний файл, так как общая роль на внешние обработки у него по-прежнему отключена.
Если ваша конфигурация основана на Библиотеке стандартных подсистем (БСП), например, Бухгалтерия предприятия 3.0, Управление торговлей 11 или ERP, то задача решается штатными средствами без программирования. Выясним важный нюанс: права на запуск зарегистрированных в базе дополнительных отчетов и права на открытие внешних файлов через проводник — это разные права.
Разберем алгоритм настройки:
Интерактивное открытие внешних отчетов и обработок.Дополнительные отчеты и обработки.Использование дополнительных отчетов и обработок. Эта роль позволяет работать только с теми объектами, которые администратор уже проверил и загрузил в базу.В этой ситуации пользователь видит только те элементы, которые ему явно назначены. Возможность «подсунуть» системе свой произвольный файл у него отсутствует, так как механизм Файл — Открыть заблокирован платформой.
Иногда требуется оставить отчет именно в виде внешнего файла. В этом случае нам придется включить пользователю роль на использование внешних отчетов, но ограничить выполнение кода внутри самого объекта. Разберем, как это реализовать с помощью встроенного языка 1С.
В модуле объекта или в форме отчета (в обработчике ПриОткрытии или ПриСозданииНаСервере) мы можем добавить проверку на наличие определенной роли или соответствие имени пользователя. Рассмотрим пример кода:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Проверим, обладает ли текущий пользователь специальной ролью
Если Не РольДоступна("РазрешенЗапускЭтогоКонкретногоОтчета") Тогда
Сообщить("У вас нет прав на запуск данного отчета. Обратитесь к администратору.");
Отказ = Истина;
Возврат;
КонецЕсли;
// Дополнительная проверка на имя пользователя, если ролей нет
ИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
Если ИмяПользователя <> "ИвановИИ" Тогда
Сообщить("Запуск разрешен только пользователю ИвановИИ");
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Этот метод считается менее надежным, так как опытный пользователь может изменить код внешнего отчета, удалив эту проверку, если у него есть доступ к файлу на диске. Поэтому данный способ рекомендуется использовать только в связке с ограничением прав доступа на уровне файловой системы (права Windows на папку с отчетом).
Проанализируем ситуацию, когда необходимо задействовать механизм RLS (Ограничение доступа на уровне записей). Если мы используем «Дополнительные отчеты и обработки», мы можем настроить профиль групп доступа таким образом, чтобы ограничить видимость элементов самого справочника ДополнительныеОтчетыИОбработки.
Рассмотрим шаги настройки:
Дополнительные отчеты и обработки, входящие в определенную категорию или имеющие определенное значение реквизита.Это позволит пользователю видеть в общем списке «Дополнительных отчетов» только одну разрешенную строку, даже если в базе зарегистрированы десятки других обработок.
При использовании любого из перечисленных методов, особенно при регистрации отчета через БСП, важно учитывать параметр Безопасный режим. Если отчет зарегистрирован в безопасном режиме, платформа ограничивает его возможности: запрещается работа с файловой системой сервера, COM-объектами и внешними соединениями. Если ваш отчет должен выполнять такие операции, вам потребуется:
СведенияОВнешнейОбработке, где указать необходимые разрешения (для БСП).Подведем итог: для реализации доступа только к одному внешнему отчету лучше всего использовать встраивание в расширение или механизм дополнительных обработок БСП. Эти подходы разделяют право на бесконтрольный запуск файлов и право на использование проверенных администратором инструментов, обеспечивая максимальный уровень безопасности информационной системы.