THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама

1С имеет встроенную систему прав доступа (эта система называется — роли 1С). Эта система является статической – как администратор поставил права 1С, так и будет.

Дополнительно, действует динамическая система прав доступа (называется – RLS 1С). В ней права 1С динамически высчитываются в момент работы пользователя на основании заданных параметров.

Одной из самых распространенных настроек безопасности в различных программах является набор разрешений на чтение/запись для групп пользователей и далее – включение или исключение пользователя из групп. Например, подобная система используется в Windows AD (Active Directory).

Такая система безопасности в 1С называется – Роли 1С. Роли 1С – это , который находится в конфигурации в ветке Общие/Роли. Роли 1С выступают в качестве групп, для которых назначаются права 1С. Далее пользователь включается или исключается из этой группы.

Нажав два раза на название роли 1С — Вам откроется редактор прав для роли 1С. Слева – список объектов 1С. Выделите любой и справа отобразятся варианты прав доступа (как минимум: чтение, добавление, изменение, удаление).

Для верхней ветки (название текущей конфигурации) устанавливаются административные права 1С и доступ на запуск различных вариантов .

Все права 1С поделены на две группы – «просто» право и такое же право с добавлением «интерактивное». Что это значит?

Когда пользователь открывает какую-либо форму (например, обработку) и нажимает на ней кнопку – то программа на встроенном языке 1С выполняет определенные действия, например удаление документов. За разрешение этих действий (выполняемых программно) – отвечают «просто» права 1С.

Когда пользователь открывает журнал и начинает делать что-то с клавиатуры самостоятельно (например, вводить новые документы) – это «интерактивные» права 1С.

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

Разрез возможностей установки прав доступа с помощью ролей – объект 1С. То есть Вы можете или включить доступ к справочнику или отключить. Включить немножко нельзя.

Для этого существует расширение системы ролей 1С под названием 1С RLS. Это динамическая система прав доступа, которая позволяет ограничить доступ частично. Например, пользователь видит только документы по определенному складу и организации и не видит остальные.

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

Вы берете определенный справочник (например, организации) и определенное право (например, чтение). Вы разрешаете чтение для роли 1С. В панели Ограничение доступа к данным Вы устанавливаете текст запроса, который возвращает ИСТИНА или ЛОЖЬ в зависимости от настроек. Настройки обычно хранятся в регистре сведений (например регистр сведений конфигурации Бухгалтерия НастройкиПравДоступаПользователей).

Данный запрос выполняется динамически (при попытке реализовать чтение), для каждой записи справочника. Таким образом, для тех записей, для которых запрос безопасности вернул ИСТИНА – пользователь увидит, а остальные – нет.
Права 1С, на которые установлены ограничения RLS 1С – подсвечены серым.

Копирование одних и тех же настроек RLS 1С делается с помощью шаблонов. Вы делаете шаблон, называете его (например) МойШаблон, в нем указываете запрос безопасности. Далее, в настройках права доступа 1С указываете имя шаблона вот так: «#МойШаблон».

При работе пользователя в режиме 1С Предприятие, при работе RLS 1С, у него может появляться сообщение об ошибке «Недостаточно прав» (например, на чтение справочника Ххх).

Это значит, что RLS 1С заблокировала чтение нескольких записей.

Для того, чтобы такого сообщения не появлялось, необходимо в тексте запроса на встроенном языке 1С использовать слово РАЗРЕШЕННЫЕ ().

Например:

Классическая задача: открыть пользователю доступ к какому-либо объекту, но не ко всем элементам / документам, а только к некоторым.

Например, чтобы менеджер видел отчеты только по своим клиентам.

Или это может быть ограничение “все, кроме некоторых” .
Или ограничение не на справочники/документы, а на данные регистров

Например, чтобы пользователи ни одним отчетом не могли вытащить данные по выплатам партнерам.

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

Почему именно RLS?

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

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

Но это не все.

Часто бывает необходимо не просто открыть/запретить доступ к определенному объекту, а ограничить доступ к части данных в нем.

Только при помощи ролей решить такую задачу нельзя – для этого реализован механизм ограничения доступа на уровне записей (RLS).

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

Про RLS – более подробно: 8 видео и PDF

Поскольку это распространенная задача администрирования 1С – предлагаем посмотреть более детальные материалы:

Ограничение доступа к данным при помощи ролей

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

Ограничение доступа на уровне записей (RLS)

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

Реализация ограничения доступа на уровне записей для справочника Контрагенты

В этом видео рассказывается, как в демонстрационной конфигурации «Управляемое приложение» настроить доступ менеджеров только к собственным контрагентам, закрепленным за ними.

Принцип работы ограничений доступа на уровне записей на низком уровне

В этом видео рассказывается, как платформа трансформирует запросы, передаваемые для выполнения на сервер СУБД, при наличии ограничений доступа на уровне записей.

Совместное применение нескольких ограничений доступа на уровне записей

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

Наложение ограничений методом ВСЕ

В этом видео описывается первый способ наложения ограничений на уровне записей – метод ВСЕ. При этом, если в выборку попадают записи, к которым доступ ограничен, будет выведено сообщение об ошибке.

Наложение ограничений методом РАЗРЕШЕННЫЕ

В этом видео описывается первый способ наложения ограничений на уровне записей – метод РАЗРЕШЕННЫЕ. При этом в выборку попадут только те записи, к которым у пользователя есть права доступа.

Вот несколько тем из курса:

  • Установка и обновление платформы «1С:Предприятие 8» – ручная и автоматическая, под Windows и Linux
  • Автоматический запуск для выполнения регламентных операций
  • Обновление конфигураций из пользовательского режима
  • Обновление нетиповых конфигураций. Как избежать проблем при обновлении измененных типовых конфигураций
  • Создание собственных cfu-файлов поставки
  • Инструменты БСП : внешние формы, обработки заполнения документов и т.п.
  • Использование бесплатной СУБД PostgreSQL
  • Установка и запуск кластера серверов 1С:Предприятие 8
  • Утилита администрирования для настройки кластера и рабочих серверов
  • Настройка RLS на примере УПП 1.3 и ERP 2
  • Что делать, если данные в ИБ повреждены
  • Настройка обменов данными между конфигурациями
  • Организация групповой разработки
  • Настройка и использование аппаратных ключей защиты
  • Программные лицензии 1С : установка и привязка к внешнему оборудованию

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

И лучше это сразу делать правильно.

Чтобы потом не было “…! Ну что за …! Твою же …!” – и прочих выражений сожаления:)

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

В таком случае идеальным помощником в обеспечении необходимых прав доступа является технология Record Level Security (RLS), позволяющая предоставлять доступ к информации на уровне записи.

Рассмотрим пример конкретной ситуации. В состав нашей компании входят две организации. Первая занимается продажей программного обеспечения, в вторая – обучением работе с ним. Для учета этих обеих организаций мы используем программный продукт 1С: Комплексная автоматизация 8 .

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

Первое, что приходит на ум при постановке данной задачи ― настройка отборов на организации. Однако это решение имеет два существенных недостатка:

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

Самый верный способ - это разграничить доступ пользователей на уровне записей. Как же это реализовать?

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

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

Аналогичный механизм реализован и в других прикладных решениях 1С:

  • (редакция 10.3)
  • и 1С: Зарплата и управление персоналом 8 (редакция 2.5).

В этих программах разграничение прав доступа осуществляется с помощью справочника «Группы пользователей», который доступен из меню «Сервис», раздела «Настройка доступа пользователей».

  • Таким образом, в этих программах нам необходимо всех наших пользователей, работающих в составе компании, поделить на группы по организациям.
  • Затем нажать кнопку «Настройка доступа».
  • В появившемся окне нажимаем кнопку «Добавить» и вводим объект доступа (в нашей ситуации это организация).
  • Если нам необходимо разрешить сотрудникам организации вносить данные в информационную базу данных, то необходимо поставить флажок в столбце «Запись».

Эти действия необходимо выполнить для каждой организации. После этого, каждый сотрудник после входа в программу будет видеть только те документы, которые определены его правами доступа по должности и относятся к его организации.

В программе 1С имеется встроенная система прав доступа, которая находится в Конфигуратор — Общие — Роли.

Чем характеризуется данная система и в чем ее основное предназначение? Она позволяет описывать наборы прав, которые соответствуют должностям пользователей либо видам их деятельности. Данная система прав доступа имеет статический характер, что означает, как выставил администратор права доступа к 1С, так и есть. В дополнение к статической действует вторая система прав доступа — динамическая (RLS). В этой системе права доступа высчитываются динамических способом, в зависимости от заданных параметров,в процессе работы.

Роли в 1С

К наиболее распространенным настройкам безопасности в разных программах является так называемый набор разрешений на чтение/запись для различных групп пользователей и в дальнейшем: включение либо исключение конкретного пользователя из групп. Такая система, например, используется в операционной системе Windows AD (Active Directory). Система безопасности, применяемая в программном обеспечении 1С, получила название - роли. Что это такое? Роли в 1С представляет собой объект, который расположен в конфигурации в ветви: Общие — Роли. Эти роли 1С представляют собой группы, для которых и назначаются права. В дальнейшем каждый пользователь может включаться и исключаться из данной группы.

Щелкнув дважды мышью на названии роли, Вы откроете редактор прав для роли. Слева расположен список объектов, отметьте любой из них и справа Вам откроются варианты возможных прав доступа:

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

Отметим, что все права доступа можно разделить на две основные группы — это «просто» право и такое точно право с добавлением характеристики «интерактивное». Что здесь имеется в виду? А дело в следующем.

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

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

RLS в 1С

Вы можете, включить доступ к справочнику (или документу) либо отключить его. Нельзя при этом «включить немножко». Для этой цели и существует определенное расширение системы ролей 1С, которое получило название - RLS. Это динамическая система по правам доступа, которая вносит частичные ограничения в доступ. К примеру, вниманию пользователя становятся доступны только документы определенной организации и склада, остальные он не видит.

Следует иметь в виду тот факт, что систему RLS нужно применять очень аккуратно, так как в ее запутанной схеме довольно непросто разобраться, у разных пользователей при этом могут возникать вопросы, когда они, например, сверяют один и тот же отчет, который сформирован из под различных пользователей. Рассмотрим такой пример. Вы выбираете определенный справочник (организации, например) и конкретное право (чтение, например), то есть Вы разрешаете чтение для роли 1С. При этом в дистанционной панели Ограничения доступа к данным Вами устанавливается текст запроса, согласно которому устанавливается Ложь или Истина, в зависимости от настроек. Обычно настройки сохраняются в специальном регистре сведений.

Этот запрос будет выполняться динамически (при осуществлении попытки организовать чтение), для всех записей справочника. Это работает так: те записи, для которых запрос безопасности присвоил — Истина, пользователь увидит, а другие - нет. Права 1С с установленными ограничениями, подсвечены серым цветом.

Операция копирования одинаковых настроек RLS производится с помощью шаблонов. Для начала Вы создаете шаблон, назвав его, к примеру, МойШаблон, в нем Вы отражаете запрос безопасности. Затем в настройках прав доступа указываете имя этого шаблона таким образом: «#МойШаблон».

Когда пользователь работает в режиме 1С Предприятие, при подключении к работе RLS, может появится сообщение об ошибке вида: «Недостаточно прав» (на чтение справочника ХХХ, например). Это говорит о том, что системой RLS заблокировано чтение некоторых записей. Чтобы это сообщение больше не появлялось, нужно в текст запроса ввести слово РАЗРЕШЕННЫЕ.

В совете приведена пошаговая инструкция для настройки Record Level Sceurity (RLS) в Аксапте 3.0.

Где об этом написано в Документации

Русская версия: Users Guide for Admin (Russian)_3.0.pdf (стр.126)
Английская версия: User"s Guide for Administration (стр. 40, 101)

Введение


Ограничение прав на уровне записей (Record Level Security - RLS) позволет ограничить доступ к записям разным группам пользователей. Например, одна группа менеджеров может видеть российских клиентов, а другая - зарубежных. Причем менеджеры, работающие с российскими клиентами не должны видеть зарубежных клиентов. Мало того, менеджеры даже видеть их не должны.

RLS в Аксапте работает совместно с системой настройки обычных прав. Это значит, что для того, чтобы ограничить доступ к тому или иному полю таблицы, необходимо настроить обычные права на эти таблицу. Задача RLS - незаметно для пользователя отфильтровать записи.

Настройка ограничения прав на уровне записей сводится к определению фильтров на те или иные таблицы для разных групп пользователей. Если пользователь входит в несколько групп, то фильтры объединяются по условию ИЛИ.

Искусство настройки прав доступа состоит в том, чтобы правильно определить фильтры на правильные таблицы. Причем сделать это оптимальным образом, чтобы не снизить производительность системы.

Настройка

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

Подготовительная работа завершена. Сейчас пользователь Тест не имеет никаких прав. Можно зайти в Аксапту под пользователем тест и убедится, что у него не получается открыть даже главное меню.

Можно приступать к настройке RLS:

  1. Настроим обычные права для группы тстГруппа1.

  • Теперь настроим RLS
  • Для созданной настройки отредактируйте запрос.
    • Нажмите на кнопку Запрос;
  • Собственно говоря, все! RLS настроен. Сейчас пользователь Тест получил права на чтение данных из модуля Расчеты с клиентами и право на создание и удаление заказов. Кроме того, на таблицу клиентов наложен фильтр. Начиная с этого момента, пользователи, принадлежащие группе тстГруппа1, смогут увидеть только прочих клиентов (клиентов, для которых установлена группа Прочие).

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


    Зайдите в Аксапту под пользователем Тест. Откройте список клиентов (Главное меню \ Расчеты с клиентами \ Клиенты). Убедитесь, что список клиентов отображает только тех клиентов, для которых установлена группа с кодом Прч.

    Обратите внимание, что в главном меню открылась не только закладка Расчеты с клиентами. Открылась также закладки Главная книга, Денежные средства, CRM, Управление запасами, Основное. Дело в том, что дав права на модуль клиентов, мы затронули множество таблиц из других модулей. Да, конечно, ненужные закладки почти пустые. Но все равно, в реальной жизни права надо давать намного аккуратнее.

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

    Попробуйте наложить фильтр "*" на группу (Установите мышку на колонку Группа клиентов, нажмите правую кнопку, выберите пункт Найти..., введите фильтр "*").

    Попробуйте также наложить фильтр "!Прч". Попробуйте наложить фильтры на другие поля. Убедитесь, что фильтр по клиентами действительно работает правильно во всех случаях.

    Проверьте как работает RLS в отчетах. Откройте отчет со списком клиентов (Главное меню \ Расчеты с клиентами \ Отчеты \ Базовые данные \ Клиент). Попробуйте построить этот же отчет с фильтрами. Убедитесь, что фильтр по клиентам работает правильно и в отчетах.

    Обратите внимание, что программисту не нужно ничего изменять или переделывать, чтобы в его отчете заработал RLS, если он в формах или для построения отчетов использовал ядро и не переопределял механизм получения данных. Если же программист вручную кодировл запросы, то ему необходимо добавить вызов метода recordLevelSecurity(true) для тех таблиц, где необходимо включить ограничение доступа на записи. См. подробнее руководство разработчика по ключевому слову Record Level Security.

    Откройте заказы. Оп! А заказы показываются по всем клиентам. Почему? А потому, что в заказах содержатся коды клиентов, а не сами клиенты. Попробуйте перейти к основной таблице с клиентами - вы не сможете увидеть параметры скрытых клиентов.


    Вообще говоря, в реальной жизни для настройки ограничения на уровне прав доступа недостаточно настроить одну таблицу. Как правило взаимосвязанные ограничения необходимо накладывать на несколько связанных таблиц.

    Права доступа на уровне записей действуют не только в формах и отчетах, но и в выпадающих списках. Откройте заказ и нажмите на кнопку выпадающего списка у клиента. Да, все правильно. Пользователь Тест видит только прочих клиентов.

    RLS для нескольких групп

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

    Предположим, что одна группа менеджеров имеет доступ к Прочим клиентам (группа клиентов = Прч), а другая группа менеджеров имеет доступ к Обычным клиентам (группа клиентов = ТиУ). Первую группу мы уже настроили. Остается настроить вторую группу.

    Повторите шаги 8-10. Только установите группе тстГруппа2 полные права на модуль Расчеты с клиентами и и в качестве критерия укажите "ТиУ" в настройке RLS для групы тстГруппа2.

    Для проверки зайдите в Аксапту под пользователем Тест и убедитесь, что формы и отчеты работают корректно, убедитесь, что вы получили полные права на клиентов и можете редактировать параметры клиентов.

    Что произойдет, если у клиента изменить группу? В форме клиент будет виден до тех пор, пока он не уйдет за пределы экранной формы. Как только Аксапта считает заново данные с сервера, сработает RLS и менеджер больше не увидит "чужого" клиента.

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

    Для того, чтобы некоторым пользователям разрешить доступ ко всему списку клиентов, необходимо третьей группе дать права на таблицу клиентов, но не настраивать RLS. Axapta смотрит на обычные права доступа. И, если право доступа есть, то смотрит в настройки RLS. Если для данной группы и данной таблицы настроек RLS нет, то Аксапта показывает все записи из таблицы.

    Обратите внимание, что группа тстГруппа3 не влияла на поведение RLS до тех пор пока она не имела прав на таблицу клиентов. Как только в этой группе появилось право на клиентов, так сразу эта группа стала участвовать в RLS. Чтобы проверить этот тезис, уберите права на модуль Расчеты с клиентами в группе тстГруппа2 и проверьте RLS для клиента Тест. Вы увидите только прочих клиентов.

    THE BELL

    Есть те, кто прочитали эту новость раньше вас.
    Подпишитесь, чтобы получать статьи свежими.
    Email
    Имя
    Фамилия
    Как вы хотите читать The Bell
    Без спама