← Назад ко всем вопросам

Как формируется набор разрешённых записей при использовании RLS

1️⃣ Как кратко ответить

RLS (Row-Level Security) в 1С формирует набор разрешённых записей путём применения фильтров безопасности, которые определяются в конфигурации. Эти фильтры ограничивают доступ к данным на уровне строк в зависимости от ролей и прав пользователя, что позволяет контролировать, какие записи доступны конкретному пользователю.

2️⃣ Подробное объяснение темы

RLS (Row-Level Security) — это механизм в 1С, который позволяет ограничивать доступ к данным на уровне отдельных строк таблицы. Это особенно важно в системах, где пользователи должны иметь доступ только к определённым данным, например, к записям, относящимся к их отделу или проекту.

Зачем это нужно

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

  • Защитить конфиденциальные данные от несанкционированного доступа.
  • Упростить управление доступом, делая его более гибким и точным.
  • Снизить риск ошибок и утечек данных.

Как это работает

В 1С RLS реализуется через механизм фильтров безопасности, которые задаются в конфигурации. Эти фильтры определяют, какие записи доступны пользователю в зависимости от его роли и прав доступа.

Пример настройки RLS

Рассмотрим пример, где необходимо ограничить доступ к документам "Заказ покупателя" для пользователей, чтобы они видели только свои заказы.

  1. Создание роли: В конфигураторе создаётся роль, например, "Менеджер по продажам".

  2. Настройка фильтра безопасности: Для объекта "Документ.ЗаказПокупателя" задаётся фильтр безопасности. Это можно сделать через свойства объекта в конфигураторе.

  3. Определение условия фильтра: Условие фильтра может быть задано с использованием выражений на встроенном языке 1С. Например, условие может выглядеть так:

    Пользователь = &ТекущийПользователь
    

    Здесь Пользователь — это реквизит документа "Заказ покупателя", а &ТекущийПользователь — системная переменная, представляющая текущего пользователя.

  4. Применение роли к пользователям: Роль "Менеджер по продажам" назначается соответствующим пользователям через интерфейс администрирования.

Пример кода

Процедура УстановитьФильтрБезопасности(Пользователь)
    // Устанавливаем фильтр безопасности для текущего пользователя
    Фильтр = Новый Структура;
    Фильтр.Вставить("Пользователь", Пользователь);
​
    // Применяем фильтр к выборке данных
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   ЗаказПокупателя.Ссылка
    |ИЗ
    |   Документ.ЗаказПокупателя КАК ЗаказПокупателя
    |ГДЕ
    |   ЗаказПокупателя.Пользователь = &Пользователь";
​
    Запрос.УстановитьПараметр("Пользователь", Пользователь);
    Результат = Запрос.Выполнить();
​
    // Обработка результата запроса
    Пока Результат.НайтиСледующий() Цикл
        // Доступные пользователю заказы
        Сообщить(Результат.Ссылка);
    КонецЦикла;
КонецПроцедуры
  • Процедура УстановитьФильтрБезопасности: Определяет фильтр безопасности для текущего пользователя.
  • Фильтр = Новый Структура: Создаёт структуру для хранения параметров фильтра.
  • Запрос = Новый Запрос: Создаёт новый объект запроса для выборки данных.
  • Запрос.Текст: Определяет текст запроса, который выбирает заказы, принадлежащие текущему пользователю.
  • Запрос.УстановитьПараметр: Устанавливает значение параметра "Пользователь" для запроса.
  • Результат = Запрос.Выполнить(): Выполняет запрос и возвращает результат.
  • Пока Результат.НайтиСледующий() Цикл: Перебирает все записи, доступные пользователю, и выводит их.

Таким образом, RLS в 1С позволяет гибко управлять доступом к данным, обеспечивая безопасность и конфиденциальность информации.

Тема: RLS и безопасность
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки