Объект 1С "Роли". Привилегированный режим 1С

Объект 1С "Роли"

Объект "Роли" предназначен для определения набора прав (совокупности разрешений) пользователей конфигурации  (ограничения прав доступа в прикладных решениях). Роль определяет, какие действия, над какими объектами метаданных может выполнять пользователь, выступающий в этой роли.

Роль в конфигурации может соответствовать:

  • должностям групп пользователей или
  • видам деятельности групп пользователей,

для работы которых предназначена данная конфигурация (например,  "Администратор" или "Продавец").

В процессе ведения списка пользователей прикладного решения каждому пользователю ставится в соответствие одна или несколько ролей (т.е. в версии 1C 8.х каждый пользователь может иметь несколько ролей).

Для каждого из объектов (справочники, документы) разработчик устанавливает свой набор прав — чтение, запись, изменение, и т.д.

Подробнее

Роли 1С настройка прав доступа

Описание ролей 1С

[свернуть]
ВАЖНО!

В 1С общая логика управления доступом - это логика разрешений (нет никаких механизмов запрета доступа, а есть только механизмы выдачи доступа).

По умолчанию доступ ко всем данным запрещен. Настройка доступа заключается в выдаче каждому пользователю нужных ему прав: если какой-то ролью пользователю дано право на просмотр, например, документов "Накладная", то никакими способами нельзя это право отнять (другими ролями или любыми другими механизмами платформы и конфигурации). Т.е. если доступ уже выдан, то забрать его другими ролями нельзя. Поэтому при ограничении ролями доступа пользователям к справочнику очень важно проверять, что пользователю не назначена никакая другая роль на тот же справочник.

Можно изначально выдать не полный доступ к справочнику, а отфильтровать с помощью RLS данные, на которые мы даем доступ.

[свернуть]

При попытке пользователя выполнить действие, на которое у него нет разрешения, действие выполнено не будет, а система выдаст окно предупреждения "Нарушение прав доступа".

Настройка объекта "Роли" 1С

Окно настройки объекта "Роли" содержит две вкладки:

  1. Права (основная)
  2. Шаблоны ограничений (для настройки прав на уровне записей - RLS, Row Level Security).
Рисунок окна настройки объекта "Роль"

Настройка ролей в 1С

[свернуть]

Настройка объекта "Роли" на вкладке "Права"

Вкладка "Права" окна настройки объекта "Роль" содержит:

  • Список "Объекты" — список метаданных, на которые могут устанавливаться права доступа.
  • Список "Права" — список доступных для настроек прав.
  • Табличную часть "Ограничение доступа к данным" — поля роли для настройки RLS (настроек прав на уровне записей).
  • Флаг "Устанавливать права для новых объектов" — если флаг установлен, на новые объекты метаданных будут автоматически установлены разрешающие права.
  • Флаг "Устанавливать права для реквизитов и табличных частей по умолчанию" — если флаг установлен, реквизиты и табличные части будут наследовать права владельца (справочника, документа и т.д.).
  • Флаг "Независимые права подчиненных объектов" — если флаг установлен, то права родительского объекта не учитываются. Если флажок снят, то при определении права подчиненного объекта анализируется соответствующее право родительского объекта: если у родительского объекта право отсутствует, у подчиненного объекта также отсутствует право, вне зависимости от состояния права у подчиненного объекта.

Список прав на всю конфигурацию 1С:

  1. Администрирование — администрирование информационной базы (требуется наличие права «Администрирование данных»).
  2. Администрирование данных — право на административные действия над конкретной областью данных. К этим действиям относятся:
    • просмотр записей журнала регистрации и получение значений отбора без ограничений;
    • установка часового пояса информационной базы (области данных) (вызов метода УстановитьЧасовойПоясИнформационнойБазы());
    • создание начального образа подчиненного узла распределенной информационной базы (вызов метода СоздатьНачальныйОбраз());
    • обновление нумерации объектов (вызов метода ОбновитьНумерациюОбъектов());
    • выполнение методов объекта СтандартноеХранилищеНастроекМенеджер в тех случаях, если выполняется работа с настройками пользователя, отличными от текущего.
  3. Обновление конфигурации базы данных — право на обновление конфигурации базы данных.
  4. Монопольный режим — особый режим работы базы 1С, при котором к базе имеет доступ только 1 сеанс. Монопольный режим целесообразно использовать когда необходимо выполнить существенные изменения данных и при этом исключить влияние других сеансов на результаты работы (например, при выполнении некоторых сервисных процедур  -удаление помеченных объектов, вызове некоторых методов встроенного языка). (подробнее)
  5. Активные пользователи — право на получение информации о том, кто из пользователей работает с информационной базой в данный момент. Список активных пользователей содержит информацию об имени пользователя, режиме, в котором пользователь использует систему, времени начала его работы и пр. Кроме этого, из списка активных пользователей можно открыть журнал регистрации системы, или просмотреть историю работы пользователя - содержимое журнала регистрации, отфильтрованное по тому пользователю, на котором установлен курсор.
  6. Журнал регистрации — доступ к журналу регистрации, в котором отображаются события, произошедшие в информационной базе с указанием времени, имени компьютера и пользователя и ссылки на изменяемые данные. При аутентификации пользователей в журнале также создаются записи с указанием способа входа в программу.
  7. Тонкий клиент — право запуска тонкого клиента.
  8. Веб клиент — право запуска веб-клиента.
  9. Толстый клиент — право запуска толстого клиента.
  10. Внешнее соединение — право запуска внешнего соединения, одного из механизмов интеграции с другими системами, с помощью которого обеспечивается быстрого программного доступа к данным 1С:Предприятия 8 из внешних приложений. Основные отличия от Automation-сервера:
    • Automation-сервер запускает полноценное приложение 1С:Предприятие 8, а в случае внешнего соединения запускается относительно небольшой внутрипроцессный COM-сервер.
    • При работе через внешнее соединение недоступны функциональные возможности так или иначе связанные с организацией пользовательского интерфейса.
    • При работе внешнего соединения не используется модуль приложения. Его роль при работе с внешним соединением играет модуль внешнего соединения.
  11. Automation — право на использование Automation-сервера.
  12. Режим "Все функции" — доступ к пункту меню «Все функции» в режиме управляемого приложения (доступ ко всем объектам метаданных).
  13. Регистрация системы взаимодействия - право на регистрацию системы взаимодействия, т.е. механизма, позволяющего пользователям одной информационной базы системы 1С:Предприятие общаться друг с другом в режиме реального времени с помощью текстовых сообщений и видеозвонков (голосовая информация и изображение). (подробнее)
  14. Сохранение данных пользователя — разрешение или запрет на сохранение данных пользователя (настроек, избранного, истории). Актуально для управляемых форм 1С .
  15. Администрирование расширений конфигурации - доступ к администрированию расширений, которые представляют собой что-то вроде параллельных конфигураций, автоматически объединяющихся с основной конфигурацией поставщика. В расширениях можно добавлять как свои объекты, так и заимствовать объекты основной конфигурации.
  16. Интерактивное открытие внешних обработок — открытие внешних обработок (возможность запуска обработок из внешних источников, внимание, вирусная опасность!). Не рекомендуется выносить во внешние обработки функционал, который может одновременно использоваться большим количеством пользователей (подробнее). Такой код следует встраивать в конфигурацию, либо, в крайнем случае, использовать механизм расширений.
  17. Интерактивное открытие внешних отчетов — открытие внешних отчетов.
  18. Вывод — вывод на печать, сохранение в файл и копирование в буфер обмена.
Список прав основных объектов конфигурации 1С:

  1. Чтение — чтение (программное).
  2. Добавление — добавление (программное).
  3. Изменение — изменение (программное).
  4. Удаление — удаление (программное).
  5. Просмотр — просмотр.
  6. Интерактивное добавление — интерактивное добавление.
  7. Редактирование — редактирование.
  8. Интерактивная пометка удаления — интерактивная пометка на удаление.
  9. Интерактивное снятие пометки удаления — снятие пометки на удаление.
  10. Интерактивное удаление помеченных— удаление помеченных объектов.
  11. Ввод по строке — использование режима ввода по строке.
  12. Интерактивное удаление — непосредственное удаление (shift +del).

[свернуть]
Права только для документов:

  1. Интерактивное проведение — проведение.
  2. Отмена проведения — отмена проведения документов.
  3. Интерактивное проведение неоперативное — проведение (стандартными командами форм) документа в неоперативном режиме.
  4. Интерактивная отмена проведения — интерактивная отмена проведения.
  5. Интерактивное изменение проведенных — право на редактирование проведенного документа. Если право у роли не установлено, то форма такого документа открывается в режиме просмотра и пользователь не может:
    • удалить проведенный документ,
    • установить пометку удаления,
    • перепровести или
    • сделать непроведенным.

[свернуть]

Права только для регистров сведений, накопления и бухгалтерии

УправлениеИтогами — управление итогами регистра бухгалтерии и регистра накопления (установка периода, по который рассчитаны итоги, и пересчет итогов).

[свернуть]

Права только для обработок и отчетов

Использование

[свернуть]

Привилегированный режим 1С

Привилегированный режим 1С позволяет:

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

Привилегированный режим следует использовать:

  • когда требуется с логической точки зрения отключить проверку прав;
  • когда допустимо отключить проверку прав, чтобы ускорить работу и при этом работа с данными от лица пользователя логически не нарушает установленные для него права доступа.

Программное включение привилегированного режима

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

  1. разместить процедуры и функции в общем модуле с установленным свойством "Привилегированный";
  2. воспользоваться методом «УстановитьПривилегированныйРежим()»;

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

Случаи использования привилегированного режима

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

(подробнее)

[свернуть]

ВАЖНО!

  • Потенциально опасны любые экспортные процедуры и функции, которые выполняют на сервере какие-либо действия с предварительной безусловной установкой привилегированного режима, так как это отключает проверку прав доступа текущего пользователя. Особого внимания требуют экспортные процедуры и функции клиентского прикладного программного интерфейса сервера 1С:Предприятия.

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

  1. установить привилегированный режим точно перед выполнением действия;
  2. выполнить действие без проверки прав;
  3. отключить привилегированный режим сразу же после выполнения действия;
  4. продолжить выполнение кода в непривилегированном режиме.
Пример

Неправильно:

Правильно:

[свернуть]

Проверка доступности роли для пользователя

Если роль не дает никаких прав на объекты метаданных, а служит только для определения того или иного дополнительного права, в коде следует использовать метод ПравоДоступа().

  • правильно:

  • неправильно:

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

При использовании в конфигурации Библиотеки стандартных подсистем (БСП) следует использовать функцию РолиДоступны() общего модуля "Пользователи":

  • без использования БСП:

  • с использованием БСП:

 

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.