Обработка на Инфостарте
Права спросившего для запроса нейросети
Коннектор нейросети ходит в базу 1С под одной учёткой, и модель отвечает сотруднику по данным, которые ему закрыты. Расширение отправляет запрос модели в сеанс самого сотрудника, где платформа применяет его роли и ограничения на уровне записей, и показывает разницу строк между двумя вариантами.
Расширение на Инфостарте бесплатно, код открыт. Файл .cfe для платформы 8.3.27 и выше, проверено на Управлении торговлей 11.5.22. Базу не меняет, кроме своего демо-справочника.
Типовая настройка MCP-коннектора или чат-бота: адрес публикации базы и служебный пользователь с полными правами. Роли и RLS платформа применяет к этому пользователю, поэтому бухгалтер, кладовщик и директор получают через чат одно и то же. Инструкция модели "не показывай лишнего" ничего не ограничивает.
Внутри 1С сменить пользователя у открытого сеанса нельзя. Расширение идёт коротким путём: запрос с данными уходит HTTP-вызовом в свою же публикацию с логином спросившего, веб-сервер открывает сеанс под ним, и права проверяет сама платформа. Служебные вызовы коннектора (метаданные, справка) остаются под его учёткой.
На демо-базе УТ 11.5 один и тот же запрос вернул 6 строк под служебной учёткой и 4 строки в сеансе бухгалтера. Две лишние строки - начисления директора и главного бухгалтера.
Что внутри расширения
HTTP-сервис запроса
POST с текстом запроса в теле. В ответе JSON: число строк, сами строки, имя пользователя сеанса и признак привилегированного режима, чтобы по журналу было видно, где прошёл запрос.
РАЗРЕШЕННЫЕ на стороне базы
Параметр razreshennye=1 дописывает слово после первого ВЫБРАТЬ. Без него запрос, задевший закрытую строку, падает ошибкой прав, с ним закрытые строки отбрасываются.
Вызов от имени спросившего
Функция ВыполнитьОтИмениСпросившего для своего коннектора: адрес публикации, логин и пароль, https по желанию. Возвращает ту же структуру, что и сервис.
Сравнение двух каналов
Функция Сравнить выполняет запрос под служебной учёткой и в сеансе спросившего и возвращает строки, которые пользователь получил бы только через служебную.
Проверки пяти приёмов, которые не работают
Выключение привилегированного режима, РАЗРЕШЕННЫЕ под служебной учёткой, ПравоДоступа за пользователя, фоновое задание, учётка пользователя в коннекторе. Каждый можно прогнать у себя.
Демо одной строкой
Справочник на 6 строк с флажком "Конфиденциально", роль бухгалтера с условием на уровне записей, роль служебной учётки. ДемоПрогон заводит тестового пользователя с одноразовым паролем и удаляет его за собой.
Что показал прогон
Стенд: демо-база Управления торговлей 11.5.22, платформа 8.3.27, клиент-серверный вариант. Вызовы по http внутри локальной сети. RLS БСП в базе выключен, демо шло на справочнике расширения с условием в роли.
| Показатель | Значение | Как надо | Вердикт | Что это значит |
|---|---|---|---|---|
| Служебная учётка, запрос как есть | 6 строк, 830 000 | столько, сколько положено спросившему | чинить | модель ответила бы бухгалтеру про зарплаты директора и главного бухгалтера; 1-5 мс в серии из пяти вызовов |
| Сеанс спросившего, с РАЗРЕШЕННЫЕ | 4 строки, 400 000 | 4 строки | норма | пользователь сеанса - бухгалтер; 33-64 мс в серии из пяти, первый вызов самый медленный |
| Сеанс спросившего, без РАЗРЕШЕННЫЕ | ошибка прав | - | инфо | "У пользователя недостаточно прав на исполнение операции над базой данных", 32 мс |
| УстановитьПривилегированныйРежим(Ложь), затем РАЗРЕШЕННЫЕ | 6 строк | 4 строки | внимание | одиночный вызов падает с ошибкой; пара Истина/Ложь проходит, но пользователь сеанса остаётся служебным |
| ПравоДоступа за бухгалтера | Истина / Истина | видны 4 строки из 6 | внимание | чтение справочника и просмотр реквизита Сумма разрешены; про строки под RLS функция не знает |
| Фоновое задание из сеанса коннектора | служебная учётка | бухгалтер | внимание | параметра "от имени" у запуска фонового задания нет |
| Группы доступа БСП, вход по токену и через ОС | не проверялось | - | инфо | условия БСП тоже живут в ролях и применяются к сеансу, прогона на них нет |
Как поставить и встроить
- 01
Поставить расширение
Через "Конфигурация - Расширения конфигурации" или из кода методом РасширенияКонфигурации.Создать(). Заимствованных объектов нет, префикс объектов пс_.
- 02
Проверить публикацию
Веб-сервер должен публиковать HTTP-сервисы расширений (publishExtensionsByDefault в default.vrd). Если коннектор переиспользует сеансы, новая версия расширения видна только в новом сеансе.
- 03
Прогнать демо
Одна строка из консоли кода или через MCP: пс_ПраваСпросившего.ДемоПрогон с адресом своей публикации. В ответе обе выборки и строки, которые видны только служебной учётке.
- 04
Разделить каналы в своём коннекторе
Метаданные и справку оставить под учёткой коннектора, запросы модели отправлять через ВыполнитьОтИмениСпросившего. Старый инструмент выполнения запросов под служебной учёткой убрать.
- 05
Выдать пользователям одно право
Маленькая роль с правом "Использование" на метод POST сервиса запроса, добавить её в профили групп доступа. К другим HTTP-сервисам базы она доступа не даёт.
Өзіңіз шеше алмай жатырсыз ба? Жазыңыз, бірге қараймыз
Для каждого нового вопроса руководителя приходится собирать отдельную выгрузку и объяснять цифры вручную. Вопросы о продажах и запасах на понятном языке с проверяемыми расчётами. Сначала разбираемся в показателях и качестве исходных данных.
- Құны
- 450 000 - 600 000 ₸анализ задачи и погружение; на выходе отчёт и оценка дальнейших работ, внедрение отдельно
Тақырып бойынша талдаулар
Рядом по теме
Как дать нейросети доступ к 1С с правами пользователя
Разбор целиком: самопроверка за пять минут, пять приёмов, которые прав не возвращают, код обоих каналов, замер и требования к шлюзу.
Матрица прав доступа для нейросети
До того как пускать модель в базу: выгрузить роли и права в файл и спросить у чата, у кого полные права и какие роли дублируют друг друга.
Выгрузка метаданных 1С для нейросети
Структура конфигурации файлом, чтобы модель писала запросы по настоящим именам реквизитов.
Безопасный доступ ИИ к боевой базе 1С
Транзакция с безусловным откатом: агент исполняет код в проде и не может ничего записать. Закрывает запись, сеанс спросившего закрывает чтение.
Чек-ап СУБД под 1С
Проверить сервер СУБД под базой, в которую собираетесь пустить нейросеть: каждый её вызов открывает новый сеанс.
Жиі қойылатын сұрақтар
Почему нельзя просто написать нейросети в инструкции, что кому показывать?
Инструкция - это просьба к модели, платформа о ней не знает. Пока запрос выполняется в сеансе служебной учётки, база отдаёт всё, что разрешено этой учётке, и модель может пересказать это любому, кто спросил. Ограничение работает только там, где проверку делает сама платформа, то есть в сеансе нужного пользователя.
Откуда коннектор берёт пароль пользователя и не опасно ли это?
Логин и пароль спросившего подставляет шлюз, то есть бот или MCP-сервер, мимо модели: в параметрах инструмента они попали бы в контекст, историю чата и логи провайдера. Нужен https или вызов внутри одного сервера, по http Basic идёт почти открытым текстом. Лучше отдельная учётка на чтение с ролью сервиса и без интерактивного входа, чем личный пароль сотрудника. Токен вместо пароля не проверялся.
Что получит модель, если в запросе нет РАЗРЕШЕННЫЕ?
Если запрос задевает хоть одну закрытую строку, ошибку "недостаточно прав". С параметром razreshennye=1 сервис сам дописывает слово, и закрытые строки отбрасываются молча, поэтому ответ модели стоит сопровождать оговоркой "по доступным вам данным". Функция дописывания простая: в пакетном запросе ставит слово только в первый запрос.
Сколько это добавляет ко времени ответа?
Один HTTP-вызов и новый сеанс на сервере: в серии из пяти вызовов по http внутри локальной сети от 33 до 64 мс, первый самый медленный. Через прокси и https будет дольше. Как новые сеансы лягут на лицензии и лимиты сеансов, мы не мерили, это стоит проверить у себя.
Работает ли с группами доступа БСП?
Не проверялось: в базе прогона ограничение на уровне записей БСП выключено константой, демо шло на своём справочнике с условием в роли расширения. Условия БСП тоже живут в ролях и применяются платформой к сеансу, поэтому ожидаем то же поведение, но прогона нет.
Защищает ли расширение от всего, что делает коннектор?
Только от запроса модели. Учётка коннектора с полными правами по-прежнему может завести пользователя или сменить пароль. Методы коннектора, которые сами собирают данные под служебной учёткой, RLS не проходят, их надо переводить в сеанс спросившего по одному. Если модель исполняет код, его стоит запускать только после УстановитьБезопасныйРежим(Истина): вариант с кодом на стенде не гонялся.
1С жүйеңізге тегін экспресс-аудит
1-2 күнде базаңызды қарап, өнімділік қайда жоғалып жатқанын табамыз және не істеу керегін айтамыз. Міндеттемесіз.
Тапсырманы талқылайық
Ең жылдамы WhatsApp: тапсырма туралы бірер жол жазыңыз, жұмыс күні ішінде жауап береміз.