Как ограничить права на редактирование периметра консолидации в 1С?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как ограничить права на редактирование периметра консолидации в 1С?

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38996
      Фото аватараOdineski
      Участник

        1С Свод отчетности Написать Инструкцию по ограничению прав доступа на редактирование Периметра консолидации. У объекта метаданных Состав периметров консолидации, для роли Редактирование рабочих процессов установить ограниченное право на Изменение и Редактирование

      • #38997
        bot_avaOdin — Одинэсник
        Участник

          # Инструкция по ограничению прав доступа на редактирование периметров консолидации в «1С:Свод отчетности»

          ## 1. Назначение настройки

          Настройка предназначена для ограничения возможности пользователей изменять состав периметров консолидации.

          Пользователь с ролью «Редактирование рабочих процессов» должен иметь возможность редактировать только те записи объекта метаданных «Состав периметров консолидации», которые входят в разрешенный ему перечень периметров.

          Ограничение необходимо установить для права:

          — Изменение;
          — Интерактивное изменение, если в конфигурации оно отображается отдельно как право «Редактирование».

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

          —

          # 2. Что необходимо определить до настройки

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

          На практике обычно используется один из вариантов:

          1. пользователю разрешены конкретные периметры консолидации;
          2. пользователю разрешены периметры, связанные с определенными организациями;
          3. пользователю разрешены периметры, соответствующие его группе доступа;
          4. пользователь может редактировать только периметры, владельцем или ответственным за которые он является.

          Для настройки необходимо проверить структуру объекта «Состав периметров консолидации» в конфигураторе:

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

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

          —

          # 3. Создание или изменение роли

          1. Открыть конфигурацию в режиме Конфигуратор.
          2. В дереве конфигурации открыть раздел Общие.
          3. Открыть объект Роли.
          4. Найти роль:

          РедактированиеРабочихПроцессов

          5. Открыть роль.
          6. В списке объектов найти объект метаданных:

          СоставПериметровКонсолидации

          В пользовательском режиме он может отображаться как:

          Состав периметров консолидации

          7. Проверить установленные права для объекта.

          Для роли должны быть установлены права:

          | Право | Настройка |
          |—|—|
          | Чтение | Разрешено при необходимости |
          | Изменение | Разрешено с ограничением |
          | Интерактивное изменение / Редактирование | Разрешено с тем же ограничением |
          | Добавление | Определяется требованиями к работе |
          | Удаление | Определяется требованиями к работе |

          Если пользователю требуется только изменять существующий состав периметров, рекомендуется:

          — оставить право Изменение с ограничением;
          — оставить право Интерактивное изменение с ограничением;
          — право Добавление отключить либо также ограничить;
          — право Удаление отключить либо ограничить отдельно.

          —

          # 4. Установка ограничения на право «Изменение»

          В настройках роли необходимо установить ограничение на право Изменение объекта «Состав периметров консолидации».

          Порядок действий:

          1. В строке объекта СоставПериметровКонсолидации установить право Изменение.
          2. Открыть команду настройки ограничения права.
          3. В поле ограничения выбрать вариант задания условия на языке ограничений доступа к данным.
          4. Указать условие, при котором запись доступна пользователю для изменения.
          5. Сохранить роль.

          Условие должно проверять не сам факт наличия права на объект, а принадлежность конкретной записи разрешенному пользователю периметру.

          —

          # 5. Пример ограничения по разрешенным периметрам

          Если в объекте СоставПериметровКонсолидации есть реквизит ПериметрКонсолидации, а разрешенные пользователю периметры хранятся в регистре сведений, условие может выглядеть следующим образом:

          |СоставПериметровКонсолидации.ПериметрКонсолидации В
          | (ВЫБРАТЬ
          | РазрешенныеПериметры.ПериметрКонсолидации
          | ИЗ
          | РегистрСведений.РазрешенныеПериметрыПользователей КАК РазрешенныеПериметры
          | ГДЕ
          | РазрешенныеПериметры.Пользователь = &ТекущийПользователь)

          В приведенном примере:

          — СоставПериметровКонсолидации.ПериметрКонсолидации является полем объекта, к которому применяется ограничение;
          — РегистрСведений.РазрешенныеПериметрыПользователей является регистром, где хранится настройка доступа;
          — РазрешенныеПериметры.ПериметрКонсолидации является разрешенным периметром;
          — &ТекущийПользователь является параметром текущего пользователя.

          Фактические имена регистра, полей и параметров необходимо заменить на имена, используемые в конфигурации «1С:Свод отчетности».

          —

          # 6. Пример ограничения через организации

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

          Например, если в объекте есть реквизит Организация, а доступные организации хранятся в регистре сведений, условие может иметь следующий вид:

          |СоставПериметровКонсолидации.Организация В
          | (ВЫБРАТЬ
          | ДоступныеОрганизации.Организация
          | ИЗ
          | РегистрСведений.ДоступныеОрганизацииПользователей КАК ДоступныеОрганизации
          | ГДЕ
          | ДоступныеОрганизации.Пользователь = &ТекущийПользователь)

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

          Если реквизит «Организация» находится не непосредственно в объекте СоставПериметровКонсолидации, а в связанном объекте, условие нужно строить через соединение или вложенный запрос.

          Например:

          |СоставПериметровКонсолидации.ПериметрКонсолидации В
          | (ВЫБРАТЬ
          | Периметры.ПериметрКонсолидации
          | ИЗ
          | Справочник.ПериметрыКонсолидации КАК Периметры
          | ГДЕ
          | Периметры.Организация В
          | (ВЫБРАТЬ
          | ДоступныеОрганизации.Организация
          | ИЗ
          | РегистрСведений.ДоступныеОрганизацииПользователей КАК ДоступныеОрганизации
          | ГДЕ
          | ДоступныеОрганизации.Пользователь = &ТекущийПользователь))

          —

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

          В типовых решениях на базе БСП доступ может определяться не отдельным регистром разрешенных периметров, а механизмом групп доступа.

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

          Необходимо:

          1. определить вид доступа, используемый для периметров консолидации;
          2. определить, в каком регистре или наборе ключей доступа хранятся права пользователя;
          3. использовать тот же механизм, который применяется в других объектах конфигурации;
          4. включить объект СоставПериметровКонсолидации в список объектов, к которым применяется ограничение;
          5. установить ограничение на права Изменение и Интерактивное изменение.

          При использовании производительного режима RLS необходимо дополнительно проверить:

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

          В БСП для проверки внедрения механизма ограничений рекомендуется использовать отчет «Проверка внедрения БСП» с отбором по подсистеме «Управление доступом».

          Рекомендую посмотреть здесь:
          https://infostart.ru/1c/articles/1908621/

          —

          # 8. Настройка права «Редактирование»

          В некоторых версиях конфигурации право, отображаемое пользователю как «Редактирование», технически соответствует праву «Интерактивное изменение».

          Необходимо проверить это в конфигураторе:

          1. Открыть роль РедактированиеРабочихПроцессов.
          2. Найти объект СоставПериметровКонсолидации.
          3. Проверить состав прав объекта.
          4. Если присутствуют оба права:
          — Изменение;
          — Интерактивное изменение,

          ограничение установить на оба права.

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

          Рекомендуемая настройка:

          | Право | Значение |
          |—|—|
          | Изменение | Разрешено с ограничением |
          | Интерактивное изменение | Разрешено с тем же ограничением |
          | Просмотр / Чтение | Разрешено согласно требованиям |
          | Интерактивное добавление | Запрещено, если добавление не требуется |
          | Интерактивное удаление | Запрещено, если удаление не требуется |

          —

          # 9. Ограничение добавления и удаления

          Если требуется запретить пользователю создание и удаление строк состава периметра, права необходимо настроить отдельно.

          ## Запрет добавления

          В роли снять:

          — Добавление;
          — Интерактивное добавление.

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

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

          ## Запрет удаления

          Если удаление пользователю не требуется, снять:

          — Удаление;
          — Интерактивное удаление.

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

          —

          # 10. Настройка роли пользователя

          После изменения роли необходимо проверить, какие пользователи имеют эту роль.

          1. Открыть справочник пользователей информационной базы.
          2. Найти пользователя, которому требуется ограничение.
          3. Проверить назначенные роли.
          4. Убедиться, что роль РедактированиеРабочихПроцессов назначена пользователю.
          5. Убедиться, что у пользователя нет другой роли, предоставляющей неограниченное изменение объекта СоставПериметровКонсолидации.

          Это важный момент. Если пользователю назначена другая роль с полным правом Изменение без ограничения, ограничение роли РедактированиеРабочихПроцессов фактически не обеспечит защиту данных.

          Нужно проверить все роли пользователя, в которых присутствует объект:

          СоставПериметровКонсолидации

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

          —

          # 11. Проверка настройки

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

          ## Тест 1. Просмотр разрешенного периметра

          1. Войти под тестовым пользователем.
          2. Открыть состав разрешенного периметра.
          3. Изменить значение.
          4. Записать изменения.

          Ожидаемый результат:

          — запись успешно изменяется;
          — изменения сохраняются.

          ## Тест 2. Изменение запрещенного периметра

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

          Ожидаемый результат:

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

          ## Тест 3. Проверка списка

          Открыть список Состав периметров консолидации.

          Необходимо проверить, какой вариант реализован в конфигурации:

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

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

          ## Тест 4. Проверка других способов изменения

          Необходимо проверить изменение данных через:

          — форму списка;
          — форму элемента;
          — команды подбора;
          — обработку заполнения;
          — массовое редактирование;
          — внешние обработки;
          — фоновые задания;
          — обмены данными;
          — регламентные задания.

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

          —

          # 12. Рекомендуемая итоговая настройка роли

          Для роли РедактированиеРабочихПроцессов по объекту СоставПериметровКонсолидации рекомендуется установить следующую схему:

          | Право | Рекомендуемая настройка |
          |—|—|
          | Чтение | Разрешить, с ограничением или без ограничения согласно требованиям |
          | Изменение | Разрешить с ограничением по доступным периметрам |
          | Интерактивное изменение / Редактирование | Разрешить с тем же ограничением |
          | Добавление | Запретить, если добавление не требуется |
          | Интерактивное добавление | Запретить |
          | Удаление | Запретить, если удаление не требуется |
          | Интерактивное удаление | Запретить |

          Ключевое условие должно использовать один и тот же критерий доступа для прав:

          — Изменение;
          — Интерактивное изменение;
          — при необходимости Добавление;
          — при необходимости Удаление.

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С