1С:Предприятие 8.2 /
Разработчикам /
Настройка прав доступа к данным
Использование привилегированного режима
1.1. Привилегированный режим позволяет
- выполнить операции с данными от лица пользователей, которым данные недоступны;
- ускорить работу, так как в привилегированном режиме не накладываются ограничения на доступ к данным.
1.2. Привилегированный режим следует использовать
- когда требуется с логической точки зрения отключить проверку прав;
- когда допустимо отключить проверку прав, чтобы ускорить работу и при этом работа с данными от лица пользователя логически не нарушает установленные для него права доступа.
2. Далее приведем некоторые типовые сценарии использования привилегированного режима.
2.1. Если подчиненные регистры (движения документов) требуются пользователю для получения отчетов, то такие регистры следует оставлять доступными только для чтения, а запись в такие регистры следует выполнять переходом в привилегированный режим. При таком подходе, проверка прав на запись выполняется только для регистратора.
Например, в конфигурации имеются объекты метаданных:
- Документ.ОприходованиеТоваров
- РегистрНакопления.ОстаткиНаСкладах
- Отчет.ОстаткиНаСкладах.
Документ ОприходованиеТоваров делает движения по регистру накопленияОстаткиНаСкладах при проведении в привилегированном режиме. Пользователю не требуется напрямую изменять регистр, но требуется формировать отчет ОстаткиНаСкладах, который читает данные регистра. Поэтому пользователю достаточно дать только право чтения регистра.
2.2. Если регистры не требуются пользователю ни для получения отчетов, ни в командном интерфейсе, то следует не давать пользователю права на их чтение. Чтение или запись данных в такие регистры выполняется переходом в привилегированный режим.
Например, в конфигурации имеется регистр сведенийВерсииПодсистем, данные которого не выводятся в отчетах, а доступ к нему осуществляется только через специальные функции общего модуля. В этом случае следует не давать пользователям какие-либо права доступа к регистру.
2.3. Если для выполнения разрешенной пользователю операции требуются заранее недоступные данные, тогда следует их получать переходом в привилегированный режим, но с гарантией предотвращения передачи этих данных на клиентскую сторону и с гарантией их использования на сервере только для выполнения запланированной операции.
Например, в случае если в конфигурации есть объекты метаданных
- Документ.РеализацияТоваровИУслуг
- РегистрНакопления.Продажи
- РегистрНакопления.Взаиморасчеты
и необходимо, чтобы
- проведение документа от лица кладовщика изменяло регистр продаж, но кладовщику регистр продаж оставался недоступным.
- при проведении документа от лица кладовщика проверялось состояние взаиморасчетов, но кладовщику регистр взаиморасчетов оставался недоступным.
2.4. Привилегированный режим также следует использовать с целью повышения производительности в тех случаях, когда это не приводит к выполнению действий или получению данных, не разрешенных пользователю.
Пример 1. Выполняется запрос, у которого значения параметров отбора уже прошли проверку ограничения прав на уровне записей. Тогда сам запрос допустимо выполнить в привилегированном режиме для повышения его производительности. Переход в привилегированный режим, например, при получении данных для отчета, следует тщательно рассчитывать, чтобы предотвратить получение данных, не разрешенных пользователю.
Пример 2. Параметр сеанса "Текущий пользователь" не доступен ни в одной роли. Для получения значения используется функция:
Функция ТекущийПользователь() Экспорт УстановитьПривилегированныйРежим(Истина); Возврат ПараметрыСеанса.ТекущийПользователь; КонецФункции
3. В то же время, неоправданное использование привилегированного режима может привести к проблемам безопасности пользовательских данных.
3.1. Потенциально опасны любые экспортные процедуры и функции, которые выполняют на сервере какие-либо действия с предварительной безусловной установкой привилегированного режима, так как это отключает проверку прав доступа текущего пользователя. Особого внимания требуют экспортные процедуры и функции клиентского прикладного программного интерфейса сервера 1С:Предприятия .
Например, неправильно:
Процедура ИзменитьИлиУдалитьДанные(...) Экспорт УстановитьПривилегированныйРежим(Истина); // Отключаем проверку прав доступа // Изменяем данные в привилегированном режиме ... КонецПроцедуры
Правильно:
Процедура ИзменитьИлиУдалитьДанные(...) Экспорт // Изменяем данные // (при этом если у пользователя недостаточно прав для выполнения операции над данными, то будет вызвано исключение) ... КонецПроцедуры
Исключение составляют случаи, когда действие, выполняемое процедурой, должно быть разрешено (или возвращаемое значение функции должно быть доступно) абсолютно всем категориям пользователей.
3.2. В случаях, когда к экспортной процедуре или функции выполняется обращение в сеансе с недостаточным уровнем прав доступа, должно вызываться исключение стандартного вида (см. метод платформы ВыполнитьПроверкуПравДоступа).
Как правило, для этого не требуется предусматривать в коде каких-либо проверок, так как при наличии в конфигурации ролей и ограничений доступа к данным на уровне записей (RLS) при попытке обращения к недоступным данным возникнет исключение:
- при выполнении запроса без ключевого слова РАЗРЕШЕННЫЕ;
- при вызове метода ПолучитьОбъект «от» недоступной ссылки на объект;
- при вызове недоступного метода глобального контекста;
- и в других аналогичных случаях.
При необходимости выполнить проверку прав доступа вручную, следует использовать метод ВыполнитьПроверкуПравДоступа.
Пример предварительной проверки перед выполнением действий в привилегированном режиме:
Процедура ИзменитьИлиУдалитьДанные(...) Экспорт ВыполнитьПроверкуПравДоступа(...); // Если у пользователя недостаточно прав, то будет вызвано исключение УстановитьПривилегированныйРежим(Истина); // Отключаем проверку прав доступа // Изменяем данные в привилегированном режиме ... КонецПроцедуры
См. также: Перехват исключений в коде
4. Для перехода в привилегированный режим следует использовать следующие возможности платформы 1С:Предприятие:
- При реализации логики проведения и отмены проведения документов в обработчиках модуля документа ОбработкаПроведения и ОбработкаУдаленияПроведения:
- с помощью установки свойств документа "Привилегированный режим при проведении" и "Привилегированный режим при отмене проведения" (эти свойства переводят выполнение обработчиков в привилегированный режим);
- если логика проведения работает с некоторой выборкой данных, состав которой должен ограничиваться для пользователя, то следует снимать эти свойства и использовать процедуру глобального контекста УстановитьПривилегированныйРежим;
- Устанавливать свойство бизнес-процесса "Привилегированный режим" для создания задач в привилегированном режиме.
- Устанавливать свойство бизнес-процесса "Привилегированный режим при получении" для функциональных опций.
- В произвольном месте любого модуля с помощью процедуры глобального контекста УстановитьПривилегированныйРежим:
УстановитьПривилегированныйРежим(Истина) // фрагмент кода в привилегированном режиме // … УстановитьПривилегированныйРежим(Ложь)
- С помощью размещения процедур и функций в общем модуле с установленным свойством Привилегированный.
Другие материалы по теме:
привилегированный режим, текущий пользователь, права доступа, проведение документа, экспорт, регистры, истина, иначе, конецпроцедуры, функции, свойства, буфер обмена, копировать, выполнить, обмен, значения, конфигурирование, данные, документов, регистр, склад, операции, отчет, конфигурации, документа, документ
Материалы из раздела: 1С:Предприятие 8.2 / Разработчикам / Настройка прав доступа к данным
Другие материалы по теме:
Учет безналичных денежных средств. Поступление денежных средств
Требования по локализации конфигурации
Нас находят: установитьпривилегированныйрежим, 1с привилегированный режим, привилегированный режим 1с, Привилегированный режим можно использовать, УстановитьПривилегированныйРежим(Истина);, привилегированный режим 1с 8 2, привилегированный режим rls, привилегированный режим, Какие операции разрешены только в привилегированном режиме, 1с привилегированный режим при проведении
Мы на Facebook