Как ограничить доступ пользователей к данным: настраиваем RLS в 1С

RLS в 1С — это инструмент для тонкой настройки доступа к данным. Он позволяет, например, скрыть из общего списка документы определённых подразделений или ограничить видимость информации о контрагентах для разных менеджеров. 

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

Что такое RLS и зачем нужна технология

Record Level Security (или RLS) — механизм разграничения доступа к данным на уровне записей в информационных системах на базе 1С:Предприятие. Он позволяет скрывать определённые строки в таблицах, документах или справочниках для конкретных пользователей. Например, сотрудники из филиалов в разных городах, открывая один и тот же отчёт «Продажи», увидят только данные по своему региону.

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

  • Документы: менеджер по продажам видит только те заказы, которые создали специалисты его отдела.
  • Справочники: в «Контрагентах» отображаются клиенты, закреплённые за текущим пользователем.
  • Отчёты: директор филиала получает доступ к данным по своему региону, например, в отчёте «Выручка по регионам» скрыты все строки, кроме округа, в котором находится пользователь.
  • Финансовая информация: бухгалтер из отдела кредитов не может просмотреть платёжные документы по расчётным счетам компании.

Как RLS реализован в 1С

Из каких элементов состоит система распределения прав доступа в 1С:

  • Роли. Права доступа настраивают с помощью ролей, в каждой из которых описывается конкретный набор объектов метаданных, к которым у специалиста есть доступ. Внутри роли можно отдельно настроить права на чтение, изменение, добавление, проведение и удаление определенного объекта метаданных.
  • Профили групп доступа. Набор ролей с одинаковыми правами объединяются в Профили групп доступа. Как правило, профили соответствуют должностям в компании и ограничивают доступ к целым подсистемам и функциональным блокам конфигурации 1С. Например, профиль может включать набор ролей менеджеров по продажам, кассиров, кладовщиков, бухгалтеров или других специалистов.
  • Виды доступа. Параметры, по которым разделяются группы доступа разных пользователей. Каждая система на базе 1С:Предприятие может иметь свой уникальный набор видов доступа, которые зависят от структуры организации и специфики бизнеса.
  • Группа доступа. Это отдельный экземпляр профиля группы доступа, то есть набор прав конкретного «менеджера по продажам», «кладовщика», «бухгалтера» со своими специфичными ограничениями. Ограничения при этом задаются через виды доступа, например, «Организация=”Московская”» или по другим параметрам.

RLS настраивают через раздел «Роли» в конфигураторе одним из двух способов в зависимости от нужной детализации ролей:

  • Прикладные роли. Роли проектируют так, чтобы предоставляющие доступ ко всему множеству объектов метаданных, которые требуются для работы определенной категории пользователей системы. Например, роль «Бухгалтер» автоматически открывает доступ ко всем документам, отчётам и справочникам, связанным с бухгалтерией.
  • Роли-функции. В этом случае предоставляется единый доступ к подмножеству объектов метаданных, с которым различные пользователи могут работать как с одной функцией системы. Например, роль «ДобавлениеИзменениеОтпусков» разрешает редактировать документ «Отпуск», а роль «ЧтениеДоговоров» — открывает для чтения справочник «Договоры» без возможности менять в нём информацию.
  • Такие роли не выдают пользователям по одному, а объединяются в профили групп доступа, которые затем назначают группе сотрудников. В этом случае профили групп доступа заменяют прикладные роли.

Как настроить RLS в 1С

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

Принцип работы RLS:
  1. Для каждой роли формируются шаблоны ограничений, которые преобразуются в условия SQL.
  2. При обращении к объекту — справочнику, документу, регистру — к исходному запросу добавляются условия из шаблона, соответствующие типу операции: чтение, добавление, изменение или удаление данных.
  3. Условия могут зависеть от параметров сеанса, например, срабатывать на определённый идентификатор пользователя, организации, подразделения.
Как настроить RLS в 1С:
  1. Чтобы задать шаблон ограничений на работу с данными, нужно открыть раздел «Роли» в конфигураторе, а далее выбрать нужную роль или создать новую. Затем на вкладке «Шаблоны ограничений» необходимо добавить новый шаблон.

  1. Далее необходимо записать имя шаблона — «Проджект-менеджер», «Администратор», «Кадровик» и так далее.
  2. После этого задаётся сам текст запроса: это должно быть логичное выражение на встроенном языке 1С с использованием Отбора, которым служат параметры сеанса, например, &РазрешенныйПользователь).

Пример исполняемого запроса

  1. Убедитесь, что используемые в шаблоне параметры инициализируются при старте сеанса. Это можно сделать в модуле сеанса или обработчике входа.
  2. Назначьте ограничения для роли: откройте вкладку «Права» и в разделе «Ограничения доступа» укажите:
  • Перечень полей объекта, к которым применяется ограничение.
  • Созданный ранее шаблон ограничений.

Шаблон ограничений можно скопировать из другой роли: выберите нужный шаблон и укажите куда его скопировать.

Если пользователь имеет несколько ролей, система применяет роль с бóльшими правами. То есть если одна роль не имеет ограничений на чтение, а другая — имеет, ограничения не будут действовать.

Возможны два режима работы RLS:

  1. Обычный режим: условия на работу с данными формируются динамически при каждом обращении к базе. 

Недостаток: возможно снижение производительности из-за усложнения запросов.

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

Преимущество: Ускорение работы, так как используются готовые ключи.

Недостаток: Необходимость регулярного пересчёта ключей при изменении данных.

Распространённые проблемы при настройке

Какие ошибки чаще всего возникают при настройке RLS:

  1. Ошибка «Объект не найден»

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

Как исправить: Проверьте соответствие имён полей и параметров, а также как они инициализируются.

  1. Проблемы с производительностью системы

Каждое условие RLS — это дополнительный кусочек кода, который 1С добавляет ко всем запросам к базе данных. Если условия слишком сложные, могут появиться проблемы с производительностью системы, и пользователям придётся долго ждать от неё ответ. Также подобная ситуация может возникнуть, если использовать Обычный режим работы RLS для работы с большими объёмами данных и большим количеством используемых видов доступа.

Как исправить:

  • Переключитесь на Производительный режим.
  • Оптимизируйте условия в шаблонах, например, минимизируйте вложенность запросов.
  1. Невозможность ограничения доступа. Подобное случается, если пользователю выдали роль без каких-либо ограничений RLS.

Как исправить: Исключите роли с полными правами из списка назначенных.

Рекомендации

Что поможет специалистам настроить RLS:

  • Используйте подсистему 1С:Библиотека стандартных подсистем для стандартизации управления правами. Это инструмент разработчика 1С, который ускоряет создание решений на базе 1С и облегчает администрирование систем.
  • Тестируйте шаблоны на реалистичных объёмах данных — используйте копию реальной базы, чтобы быстрее выявить возможные проблемы с производительностью.
  • Применяйте Производительный режим работы RLS для больших объёмов данных и сложных систем распределения ролей.
Сергей Паринов
Сергей Паринов