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