Обработка на Инфостарте
Какую группу доступа добавить пользователю после "Нарушения прав доступа"
Пользователь прислал окно с одной строкой, а объект и имя права уже лежат в журнале регистрации. Обработка читает эти отказы за период и для каждого называет группу доступа, после добавления в которую он пропадёт, или честно говорит, что права тут ни при чём.
Обработка продаётся на Инфостарте за 10 SM, управляемые формы, код открыт.
Штатный отчёт "Права доступа" в карточке пользователя показывает, что у человека есть. На жалобу "Нарушение прав доступа!" нужен обратный ответ: чего не хватило в эту минуту. Платформа его записывает сама. Событие "Доступ. Отказ в доступе" пишется в журнал по умолчанию, уровнем "Информация", с полным именем объекта и именем права.
Обработка проходит путь от этого события до решения: какие роли дают право, в каких профилях БСП эти роли лежат, какие группы доступа построены на этих профилях и у какой из них профиль короче всех. Группы администраторов, личные группы и служебные роли для OData в предложения не попадают.
Если право дают только административные и служебные роли, выдавать нечего: так отказывает код, который обращается к таблице или к списку пользователей без привилегированного режима. Такая строка получает вердикт "Чинить код".
Неудачное открытие внешних обработок платформа пишет другим событием, и обработка читает его вместе с отказами: нет права на открытие, защита от опасных действий, безопасный режим или профиль безопасности кластера. База не меняется, в группы никто не добавляется.
Что видно после одного нажатия
Итог одной строкой
Сколько отказов, у скольких пользователей, сколько снимается одной правкой и сколько требует решения администратора. Если журнал пишет только ошибки или событие отказа выключено, это сказано красным до таблицы.
Таблица с вердиктами
Повторы свёрнуты в строку "пользователь, объект, право": когда последний раз, сколько раз, из какого приложения. У каждой строки цветной вердикт.
Карточка выбранной строки
Что сделать и путь по меню, подходящие группы с числом ролей в профиле, роли с этим правом, текущие группы пользователя, что записано в журнале.
Замечания на следующий отказ
Для документа проверяет, даст ли предложенная группа ещё и проведение. Если группа даёт только чтение, называет группу на запись, чтобы следующий отказ не пришёл через час.
Проверка пользователя без событий
Если выбрать пользователя, обработка скажет, может ли он открывать внешние обработки и включена ли у него защита от опасных действий, даже когда в журнале пусто.
Markdown для нейросети
Разбор всех отказов одним файлом с инструкцией для модели. Имена пользователей заменены на "Пользователь 1", "Пользователь 2", полный путь к файлу внешней обработки заменён его именем.
Что значит каждый вердикт
Вердикты из обработки, условия их выбора из описания алгоритма. "Режет RLS" стоит на описании платформы: на стенде ограничение на уровне записей было выключено.
| Вердикт | Когда ставится и что делать |
|---|---|
| Добавить в группу | Есть обычная роль с этим правом и группа доступа на профиле с этой ролью. Предлагается группа с самым коротким профилем. |
| Создать группу | Профиль с нужной ролью в базе есть, а групп доступа на нём нет. Карточка называет профиль и путь: создать группу на нём и добавить пользователя. |
| Нужен профиль | Ни один профиль не содержит роли с этим правом, или роль есть только в профиле администраторов. Обработка называет самую узкую роль для нового профиля и просит не добавлять человека в администраторы. |
| Чинить код | Право дают только административные или служебные роли. Искать обработку или модуль из стека ошибки у пользователя, кнопка "Подробно". |
| Право уже есть | Сейчас право у пользователя есть. Обычно его выдали после отказа, и человек не перезашёл: роли применяются при входе. При включённом ограничении на уровне записей причина может быть в значениях доступа. |
| Режет RLS | В событии есть поле "Действие" и нет поля "Право": так отказ ограничения на уровне записей описан в документации платформы. |
| Объекта нет | Отказ записан на объект, которого в конфигурации уже нет: отказ был до обновления или в расширении, которое потом отключили. |
| Внешняя: защита, безопасный режим | Внешняя обработка не подключилась по причине, которую платформа положила в комментарий события. Добавление в группы здесь не поможет. |
Что проверено на стенде
Стенд: УТ 11.5 с доработками, БСП 3.1, платформа 8.3.27.1606, клиент-серверный вариант. Отказы вызывал код в сеансе тестового пользователя с поставляемым профилем "Работник склада", сеанс открывался внешним соединением. Журнал после каждой правки читался напрямую, мимо обработки.
| Показатель | Значение | Как надо | Вердикт | Что это значит |
|---|---|---|---|---|
| Отказов в журнале, первый круг | 6 | - | инфо | справочник, документ установки цен, запись и проведение реализации, открытие внешних обработок, список пользователей ИБ |
| Отказы по праву, снятые предложенной группой | 5 из 5 | все | норма | после добавления в группу отказ ушёл из ответа сеанса и из журнала |
| Замечание "группа даёт только чтение" | сработало | - | норма | чтение установки цен сняли, следующим пришёл отказ на изменение, и обработка назвала ту группу, что стояла в замечании |
| Отказов после правок | 3 | только нелечимые правами | норма | список пользователей ИБ и два регистра внутри кода проведения, у всех трёх вердикт "Чинить код" |
| Совпадение прогонов | 3 из 3 | 3 из 3 | норма | стенд сбрасывался перед каждым прогоном, результаты совпали до строки |
| Время поиска отказов | 0,6 с | - | инфо | на прогретом сервере; первый запуск после пересборки занимал 9 и 57 с, сервер загружал права ролей |
| Имя пользователя с опечаткой | "не найден" жёлтым | не "отказов нет" | норма | таблица пустая, пояснение подсказывает взять имя из списка |
| Имена и пути в Markdown | 0 | 0 | норма | имя тестового пользователя и пути с буквой диска в выгрузке не встречаются |
| Живой отказ RLS | не проверялся | - | внимание | ограничение на уровне записей на стенде выключено, вердикт стоит на описании платформы |
| "Файл - Открыть" в тонком клиенте | не проверялось | - | внимание | то же право проверено функцией проверки права, событие того же вида; интерактивное окно не воспроизводилось |
| Платформа 8.3.20 | событие есть | - | внимание | в рабочей базе на 8.3.20 найдены отказы с правом Администрирование; отказы по объектам там не вызывались |
Разбор результата
Главное, что показал стенд: отказы приходят слоями. Платформа останавливается на первом недостающем праве, следующее видно только после правки. Поэтому обработка смотрит на шаг вперёд: для документа проверяет проведение, для чтения называет группу на запись. Второй урок из первого пробного прогона: правило "самая узкая роль" без оговорок посоветовало пользователю служебную роль для OData. Теперь служебные роли идут вместе с административными, и такая строка получает "Чинить код".
Как пользоваться
- 01
Открыть под администратором
Файл - Открыть, встраивать в конфигурацию не нужно. Для чтения журнала и списка пользователей нужен администратор.
- 02
Задать период и пользователя
По умолчанию последние 7 дней по всем пользователям. На большом журнале период лучше держать коротким.
- 03
Найти отказы
Прочитать итог, выбрать строку, в карточке взять группу и путь по меню. Добавляет в группу администратор сам.
- 04
Попросить пользователя перезайти
Роли применяются при входе. Если отказ повторился, запустить поиск снова: скорее всего, это следующий слой.
Өзіңіз шеше алмай жатырсыз ба? Жазыңыз, бірге қараймыз
Регламенттік қызмет көрсетуді база тұрақты жұмыс істейтіндей, бэкаптар кепілді түрде қалпына келетіндей және дискілер кенет таусылмайтындай баптаймыз.
- Құны
- 450 000 ₸-денбір реттік баптау; сүйемелдеу - айына 150 000 ₸-ден; салықтарсыз
Тақырып бойынша талдаулар
Рядом по теме
Нарушение прав доступа в 1С: какого права не хватило
Разбор той же задачи руками: поля события отказа, запросы от права к группе доступа, слои отказов и случаи, где права ни при чём.
Матрица прав доступа для нейросети
Обратный вопрос: у кого в базе какие права и где роли избыточны. Роли, права и назначения одним файлом для модели.
Журнал регистрации для нейросети
Журнал за период одним файлом для чата: ошибки, входы, отказы, изменения.
Жиі қойылатын сұрақтар
Откуда обработка знает объект и право, если пользователь видит только "Нарушение прав доступа!"?
Платформа сама пишет событие "Доступ. Отказ в доступе" в журнал регистрации: объект в колонке "Метаданные", имя права в данных события. Включать ничего не надо, событие пишется по умолчанию, достаточно, чтобы журнал сохранял уровень "Информация".
Пользователь жалуется, а отказов нет. Почему?
Журнал пишет только ошибки (обработка об этом предупредит), отказ был раньше периода или журнал сократили. Либо это не отказ: ограничение на уровне записей в списках молча прячет строки и ничего в журнал не пишет.
Обработка сама добавит пользователя в группу?
Нет. Она только читает журнал, роли и справочники доступа и говорит, что сделать. Права меняет администратор.
Выдал группу, а ошибка осталась.
Роли применяются при входе, пользователь должен закрыть программу и зайти заново. Если отказ вернулся с другим правом, это следующий слой: запустите поиск ещё раз. Если право точно есть, а отказ тот же, смотрите значения доступа групп пользователя.
Работает без БСП?
Да, тогда вместо группы предлагается роль: та, что даёт чтение меньшего числа справочников и документов. Групп и профилей без БСП нет, поэтому число ролей в профиле посчитать нельзя.
На какой платформе проверялась?
Собрана и проверена на 8.3.27.1606, УТ 11.5, БСП 3.1. Событие отказа в журнале есть и на 8.3.20, но отказы по объектам там не вызывались. На англоязычной платформе 14 самых частых прав переводятся словарём, остальные идут как есть.
1С жүйеңізге тегін экспресс-аудит
1-2 күнде базаңызды қарап, өнімділік қайда жоғалып жатқанын табамыз және не істеу керегін айтамыз. Міндеттемесіз.
Тапсырманы талқылайық
Ең жылдамы WhatsApp: тапсырма туралы бірер жол жазыңыз, жұмыс күні ішінде жауап береміз.