Маскировка персональных данных

06.04.26

Администрирование - Информационная безопасность

Маскирует персональные данные в тексте перед отправкой в облачные ИИ-сервисы. Использует локальную модель qwen2.5:1.5b (быструю, компактную и с отличным русским) для извлечения ФИО, телефонов и других ПД, заменяя их на безопасные токены-маски. После обработки в облаке расширение восстанавливает исходные данные. Это позволяет законно использовать внешние LLM, не раскрывая чувствительную информацию. Всё работает локально через Ollama, настраивается за пару минут и не требует сложной инфраструктуры.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Маскировка персональных данных
.cfe 34,96Kb ver:1.0.0.0
0 5 400 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Привет, коллеги! Хочу поделиться опытом создания одного интересного расширения для 1С, которое помогает решить больную тему - передачу персональных данных во внешние сервисы, в том числе в облачные модели ИИ. Наверняка вы сталкивались с ситуацией, когда хочется использовать мощь больших языковых моделей (например, для анализа обращений клиентов, генерации ответов или классификации текстов), но юридические риски не позволяют отправлять исходные данные с ФИО, телефонами и адресами наружу. Федеральный закон №152-ФЗ, политики информационной безопасности... В общем, сплошные ограничения. Но я, как разработчик, люблю находить обходные пути, которые не нарушают закон, а наоборот - делают работу безопаснее.

Не буду мучить вас длинными предисловиями. Расскажу про расширение «Маскировка персональных данных» (МПД), которое я сделал для платформы 8.3.27. Оно работает как дополнение (AddOn) и позволяет на лету заменять чувствительные фрагменты текста на маски-токены, а потом так же легко восстанавливать оригиналы. Идея не нова - что-то похожее реализовано в проекте CloakLLM. Но я переложил её на родной язык 1С, чтобы всё крутилось внутри инфраструктуры предприятия без лишних телодвижений.

Суть проста. У вас есть исходный текст, например: «Евгений Трофимов, телефон +79835286215, паспорт 520332 5955». Расширение отправляет этот текст (строго внутри вашей сети) в локальную модель ИИ - я использую Ollama с моделью qwen2.5:1.5b. Модель возвращает список найденных персональных данных: ["Евгений Трофимов", "+79835286215", "520332 5955"]. Дальше специальный модуль ищет эти строки в регистре сведений: если встречает впервые - генерирует уникальную маску вроде {{Data_1}}, {{Data_2}}, {{Data_3}} и сохраняет связь «оригинал ↔ маска». Затем в исходном тексте всё это заменяется. На выходе получаем: «Data_1, телефон Data_2, паспорт Data_1». Такой обезличенный текст можно смело отправлять в любой облачный ИИ - хоть в ChatGPT, хоть в YandexGPT - закон не нарушен, потому что персональные данные уже заменены на неинформативные токены.

А когда из облака приходит ответ (например, сгенерированное письмо, где тоже могут встретиться эти маски), расширение запускает обратную процедуру - расшифровку. Оно сканирует текст по регулярному выражению, находит все токены {{...}}, подставляет из регистра исходные значения и показывает пользователю уже полноценный текст с восстановленными ФИО, телефонами и так далее.

Почему для извлечения ПД я выбрал именно qwen2.5:1.5b? Это модель от Alibaba, она отлично знает русский язык (в отличие от многих западных собратьев), при этом имеет размер всего 1.5 миллиарда параметров. Что это даёт? Во-первых, скорость. На обычном ноутбуке или сервере без видеокарты она выдаёт ответ за пару секунд. Во-вторых, её можно запустить на том же хосте, где крутится 1С:Сервер, без существенной нагрузки. В-третьих, она достаточно умна, чтобы выделить из текста ФИО, телефоны, email, адреса, должности, места работы и многое другое. Промпт я зашил прямо в расширение - он просит модель вернуть JSON-массив с найденными фрагментами точно в том виде, как они написаны в тексте. Это удобно для последующей замены.

 

 

Признаюсь честно, не всё идеально. Модель иногда промахивается с паспортными данными: может не распознать серию и номер, если они написаны нестандартно, или пропустить сложный составной адрес. Но я не полагаюсь только на ИИ. В расширении есть дополнительный механизм - поиск по регулярным выражениям (ICU). Вы можете включить его в настройках, и тогда найденные телефоны, СНИЛС, email и даже рискованные паттерны (даты, номера водительских удостоверений) будут подхвачены автоматически. Получается этакий гибрид: нейросеть ловит сложные сущности, а регулярки - типовые шаблоны с гарантией. Если что-то пропустила одна система, подстрахует другая.

Но главное - это всё работает локально, в вашем контуре. Никакие облака не видят исходные данные. Ollama (сервер для запуска моделей) ставится за пару минут, скачивает модель одной командой ollama pull qwen2.5:1.5b, и вы готовы. Адрес сервера прописывается в настройках расширения. Важно только, чтобы с сервера 1С был доступ к этому адресу (обычно http://localhost:11434 или IP другого хоста). Таймаут, температуру модели, срок хранения масок (по умолчанию 90 дней) - всё можно менять через удобную форму.

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

 

 

Как это использовать в коде? Элементарно. В своём серверном модуле пишете:

ОбезличенныйТекст = МПД_ОбезличиваниеПерсональныхДанных.Маскировка(ИсходныйТекст);

Отправляете ОбезличенныйТекст куда нужно (HTTP-запрос, запись в файл, передача в облачное API). Получили ответ - вызываете:

РасшифрованныйТекст = МПД_ОбезличиваниеПерсональныхДанных.Расшифровка(ТекстСМасками);

И выводите пользователю. Вся кухня с регистром сведений МПД_ПерсональныеДанные спрятана внутри.

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

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

Несмотря на мелкие недостатки, я испытываю настоящий энтузиазм от этого расширения. Оно реально открывает дорогу к использованию облачных LLM в тех задачах, где раньше приходилось отказываться из-за страха утечки ПД. Теперь вы можете анализировать обращения клиентов, автоматически классифицировать заявки, генерировать персонализированные ответы - и всё это в обезличенном виде. А когда нужно показать результат человеку - маски легко превращаются обратно в понятные данные.

Я не стал реализовывать внутри расширения HTTP-клиенты к конкретным облачным сервисам (типа OpenAI или YandexGPT), потому что у каждой компании свои предпочтения и инфраструктура. Но сделать такой вызов самостоятельно из 1С - дело пяти минут. А вот грамотно спрятать персональные данные перед отправкой - вот это уже нетривиальная задача. И моё расширение решает её элегантно, с использованием локального ИИ и проверенных подходов.

 

 

Попробуйте, вам понравится. Поставили Ollama, скачали qwen2.5:1.5b, подключили расширение - и понеслась. Скорость работы приятно удивляет, качество распознавания вполне достойное для 1.5-миллиардной модели, а главное - вы спите спокойно, зная, что закон не нарушен, а персональные данные остались в вашей информационной базе. Дерзайте, коллеги!

Для тех, кто не любит лирику и хочет глубже окунуться в детали - ниже пойдёт текст более технический и подробный.


Правовое предупреждение и использование облачных моделей ИИ

Нельзя направлять в облачные (внешние) сервисы искусственного интеллекта исходный текст, содержащий или предположительно содержащий персональные данные субъектов, в том числе для их извлечения, классификации или анализа. Такая передача может квалифицироваться как обработка персональных данных третьими лицами вне правовых оснований, предусмотренных законодательством о персональных данных (в РФ — в том числе Федеральный закон № 152-ФЗ «О персональных данных»), и несёт репутационные и юридические риски.

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

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

 

Назначение

Расширение предоставляет средства обезличивания (маскировки) произвольного текста: фрагменты, отнесённые к персональным данным, заменяются на устойчивые маски-токены, при этом в регистре сведений сохраняется связь «исходная строка ↔ маска» для последующего восстановления (расшифровки) текста при отображении пользователю.

Типовые сценарии:

  • подготовка текста к передаче во внешние сервисы без раскрытия ПД в открытом виде;

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

Идеология близка к подходам вроде CloakLLM (локальное извлечение сущностей с последующей заменой).

Кратко по потокам:

  • Блок «Реализовано»: извлечение и замена ПД выполняются в ИБ; к локальному Ollama уходит текст с ПД только внутри вашей сети (см. правовой блок выше). Связь «маска ↔ исходная строка» хранится в регистре.

  • Блок «Не в проекте»: после маскировки текст можно отправить в облако или к партнёрскому API; реализация канала (HTTP, очередь, ручная выгрузка) — на стороне прикладного решения или процесса. Расширение не содержит модулей для прямого обращения к облачным LLM.

  • Расшифровка снова выполняется в 1С: по маскам из ответа подставляются исходные строки из регистра — до показа результат пользователю.


Состав расширения (основные объекты)

Объект

Назначение

Общий модуль МПД_ОбезличиваниеПерсональныхДанных

Экспортные процедуры/функции маскировки, расшифровки, регламентная очистка регистра

Общий модуль МПД_Настройки

Чтение/запись параметров в хранилище общих настроек

Общий модуль МПД_Интеграция

HTTP-вызовы к внешнему API (Ollama)

Общий модуль МПД_ИнтеграцияКлиентСервер

JSON и вспомогательные функции

Регистр сведений МПД_ПерсональныеДанные

Хранение масок, хэшей и исходных строк; менеджер — поиск/создание масок

Общий макет МПД_СлужебныйПромптОбезличиванияПД

Текст системного промпта по умолчанию

Общая форма МПД_Настройки, команда МПД_Настройки

UI настроек

Общая форма МПД_ТестированиеОбезличивания, команда МПД_ТестированиеОбезличивания

Проверка маскировки/расшифровки

Регламентное задание МПД_ОчисткаМасокПерсональныхДанных

Удаление устаревших записей регистра по настройке срока хранения

Подсистема МПД_МаскировкаПерсональныхДанных

Группировка объектов в конфигураторе

Роль МПД_ОсновнаяРоль

Права по умолчанию для расширения


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

Маскировка (МПД_ОбезличиваниеПерсональныхДанных.Маскировка)

  1. Если включена настройка «Использовать ИИ (Ollama) для извлечения персональных данных», на сервере 1С формируется HTTP POST к API Ollama /api/chat (формат чата с массивом messages). В запрос передаются:

    • системное сообщение: служебный промпт (из настроек или, если пусто, из макета МПД_СлужебныйПромптОбезличиванияПД);

    • пользовательское сообщение: исходный текст. Параметры модели: model, stream: false, в optionsтемпература из настроек.

  2. Из JSON-ответа извлекается message.content; содержимое нормализуется в массив строк — кандидатов в ПД.

  3. Если включено «Дополнять маскировку поиском по регулярным выражениям», массив дополняется совпадениями по шаблонам ICU (телефон, e-mail, СНИЛС и т.д.). Флаг «Рискованные паттерны…» включает шаблоны с большим числом ложных срабатываний (даты, IMEI, ВУ и др.).

  4. По уникальным непустым строкам вызывается менеджер регистра НайтиИлиСоздатьМаскиПоИсходнымЗначениям: для новых значений создаются записи с масками; возвращается соответствие «исходная подстрока → маска».

  5. В исходном тексте выполняется замена всех ключей соответствия на значения-маски. Результат возвращается вызывающему коду.

Если после шагов 1–3 массив ПД пуст, текст возвращается без изменений.

Расшифровка (МПД_ОбезличиваниеПерсональныхДанных.Расшифровка)

  1. По тексту ищутся токены масок (шаблон регулярного выражения задаётся в менеджере регистра).

  2. По найденным маскам из регистра читаются исходные строки.

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

 

Регламентная очистка (МПД_ОбезличиваниеПерсональныхДанных.МПД_ОчисткаМасокПерсональныхДанных)

Удаляются записи регистра, у которых дата создания старше, чем «сегодня минус N суток», где N — настройка количества дней хранения. Если N ≤ 0, очистка не выполняется (маски не удаляются по этому регламенту).


Настройки

Настройки хранятся в хранилище общих настроек (ключи подсистемы МаскировкаПерсональныхДанных, пользователь настроек Администратор). Изменение выполняется с привилегированным режимом на сервере.

Форма в интерфейсе: команда «Настройки (МПД)» (группа навигации «См. также»).

Параметр (смысл)

Значение по умолчанию

Примечание

Использовать ИИ (Ollama) для извлечения ПД

Истина

При Ложь поля Ollama и служебного промпта в форме недоступны; маскировка может опираться только на регвыражения, если они включены

Адрес сервера Ollama

http://localhost:11434

Полный URL; важно указать порт (:11434), если он не стандартный для схемы (см. раздел про сеть)

Имя модели ИИ

qwen2.5:1.5b

Имя модели в Ollama (ollama list / ollama pull)

Таймаут ожидания Ollama, сек

900

HTTP-таймаут запроса к API

Температура модели Ollama

0

Передаётся в options.temperature

Служебный промпт

текст макета МПД_СлужебныйПромптОбезличиванияПД

Задаёт ожидаемый формат ответа модели (JSON-массив строк с фрагментами ПД как в тексте)

Дополнять маскировку регулярными выражениями

Истина

Телефон, e-mail, СНИЛС и др.

Рискованные паттерны регулярных выражений

Истина

Даты, IMEI, ВУ, иностранный паспорт и др. — возможны ложные срабатывания

Количество дней хранения масок ПД

90

0 — не удалять записи регистра этим регламентом

Программный интерфейс настроек — экспортные функции/процедуры общего модуля МПД_Настройки (суффиксы _Получить / _Установить).


Установка и настройка Ollama для вызова из 1С

1. Установка Ollama

  • Скачайте дистрибутив Ollama для вашей ОС с официального сайта: https://ollama.com.

  • Установите и убедитесь, что служба/процесс слушает API (по умолчанию порт 11434).

2. Загрузка модели

В командной строке на машине с Ollama (пример для модели по умолчанию в расширении):

ollama pull qwen2.5:1.5b

Проверка списка моделей:

ollama list

Имя модели в настройках 1С должно совпадать с именем в Ollama.

3. Доступность API для сервера 1С

Критично: запросы к Ollama выполняются с сервера приложений 1С (общий модуль с контекстом выполнения на сервере). Адрес в настройках должен быть доступен именно с этого сервера, а не с клиентского ПК.

  • Если Ollama на той же машине, что и сервер 1С, часто достаточно http://127.0.0.1:11434 или http://localhost:11434.

  • Если Ollama на другом хосте, укажите, например, http://192.168.1.50:11434 и:

    • откройте порт в файрволе;

    • при необходимости задайте прослушивание на всех интерфейсах (в документации Ollama — переменная окружения вроде OLLAMA_HOST=0.0.0.0 для приёма подключений не только с localhost).

Убедитесь, что в URL явно указан порт 11434 для стандартной установки Ollama (иначе разбор адреса может подставить порт 80 для http без порта).

4. Проверка из 1С

Используйте форму «Тестирование обезличивания» (команда расширения) или вызовите МПД_ОбезличиваниеПерсональныхДанных.Маскировка / .Расшифровка из своего кода на сервере.

5. HTTPS

Если Ollama вынесен за обратный прокси с TLS, в настройках можно указать https://...; модуль разбора URL включает защищённое соединение и порт 443 по умолчанию для схемы https.


Интеграция в прикладной код

  • Маскировка: МПД_ОбезличиваниеПерсональныхДанных.Маскировка(ИсходныйТекст) — выполнять в серверном контексте.

  • Расшифровка: МПД_ОбезличиваниеПерсональныхДанных.Расшифровка(ТекстСМасками) — также сервер.

Регламентное задание «МПД очистка масок персональных данных» нужно включить и настроить расписание в консоли кластера / администрировании ИБ, если требуется автоматическое удаление старых записей регистра.


Ограничения и риски

  • Качество извлечения ПД зависит от модели и промпта; возможны пропуски и лишние срабатывания.

  • Рискованные регулярные выражения повышают полноту, но увеличивают число ложных замен.

  • Маски и исходные строки — чувствительные данные; доступ к регистру и резервным копиям ИБ должен быть ограничен политиками безопасности.

  • После удаления записи регистра (в т.ч. регламентом) восстановить исходный текст по старой маске невозможно.


Краткая ссылка на объекты в коде

  • Настройки: CommonModules/МПД_Настройки/Ext/Module.bsl

  • Маскировка и Ollama: CommonModules/МПД_ОбезличиваниеПерсональныхДанных/Ext/Module.bsl

  • Регистр: InformationRegisters/МПД_ПерсональныеДанные/Ext/ManagerModule.bsl

  • Форма настроек: CommonForms/МПД_Настройки/

 

Требования к 1С

Расширение не привязано к какой-то конкретной конфигурации 1С. Можно использовать для любой конфигурации, имеющей БСП.

Протестировано на платформе: 1С:Предприятие 8.3 (8.3.27.1719)

Конфигурация: Управление торговлей, редакция 11 (11.5.25.103)

Вступайте в нашу телеграмм-группу Инфостарт

ПД обезличивание маскировка ФЗ152 персональные данные LLM ИИ безопасность закон

См. также

Информационная безопасность Поиск данных ServiceDesk, HelpDesk Журналы и реестры данных 1С 8.3 Россия Бухгалтерский учет Бюджетный учет Налоговый учет Управленческий учет Платные (руб)

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

180000 руб.

05.09.2025    4433    1    1    

3

Информационная безопасность Пароли 1С:Предприятие 8 Бесплатно (free)

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    14155    kamisov    19    

64

Информационная безопасность Программист 1С:Предприятие 8 Бесплатно (free)

Рассмотрим в статье более подробную и последовательную настройку аутентификации в 1С с использованием распространенной технологии JWT, которая пришла в программу в платформе версии 8.3.21.1302.

27.02.2024    21838    AlexeyPROSTO_1C    10    

44

Информационная безопасность Программист 1С:Предприятие 8 Абонемент ($m)

Интеграционные решения стали неотъемлемой частью нашей жизни. Правилом хорошего тона в современных приложениях является не давать интегратору доступ к чувствительным данным. Device flow позволяет аутентифицировать пользователя, не показывая приложению чувствительные данные (например: логин и пароль)<br> Рассмотрим Device flow аутентификацию, в приложении, на примере OpenID провайдера Yandex.

1 стартмани

27.10.2023    4847    platonov.e    1    

23

Информационная безопасность Системный администратор 1С:Предприятие 8 1C:Бухгалтерия Россия Абонемент ($m)

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

5 стартмани

24.04.2023    9010    30    soulner    8    

34

Информационная безопасность Системный администратор Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

1С, начиная с версии платформы 8.3.21, добавили в систему возможность двойной аутентификации. Как это работает: в пользователе информационной базы появилось свойство «Аутентификация токеном доступа» (АутентификацияТокеномДоступа во встроенном языке), если установить этот признак и осуществить ряд манипуляций на встроенном языке, то появляется возможность при аутентификации отправлять HTTP запросы, которые и реализуют этот самый второй фактор. Данное расширение позволяет организовать двухфакторную аутентификацию с помощью электронной почты или мессенджера Telegram.

2 стартмани

08.12.2022    11121    76    Silenser    17    

25
Для отправки сообщения требуется регистрация/авторизация