Обезличивание базы средствами Конвертации данных 2

14.06.20

Разработка - Защита ПО и шифрование

Быстро, просто, понятно обезличить нужные данные в любой базе.

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

Речь идёт об использовании системы "Конвертация данных 2". Суть проста - всю черновую работу по чтению, записи, модификации данных берёт на себя штатный механизм, а разработчику остаётся только указать места, где требуется обезличивание. При этом всё управляемо и без подвохов - не нарушатся ссылки, логическая целостность, не пострадает функциональность. Главное - указать объекты и поля, которые обезличить. И весь инструментарий КД к нашим услугам.

Идея проста: создаём конвертацию, берём копию базы (ну или не копию), из неё выгружаем в файл и обратно в неё же загружаем этот файл, и готово. Итак:

 

1. Выгружаем описание нужной базы, создаём конвертацию, в качестве источника и приёмника указываем одну и ту же конфигурацию.

 

2. При необходимости, параметрами определяем объекты, подлежащие обезличиванию (опять же, их удобно будет указать в пользовательском режиме средствами отбора и периода в Универсальном обмене XML). Тут, очевидно, можно по-всякому - и через собственные произвольные выборки, и стандартными запросами, смотря по конкретике задачи. Хоть принудительно "ВыгрузитьДанныеПоПравилу", хоть как. Например, определив массив:

 

3. Поскольку база одна и та же, смело используем стыковку по GUID. Если под обезличивание попадают поля, уникально идентифицирующие элемент данных, то это единственный надёжный способ, поэтому флаг продолжения поиска выключаем (казалось бы - зачем? а затем, что битые ссылки иногда вынуждают КД продолжить поиск уже по ключевым полям).

 

4. Обезличиваем нужные реквизиты нужных объектов любым нравящимся способом - например, сделать наименования равными кодам:

С тем же успехом можно:

// для ФИО сотрудника
Значение="Иванов Иван Иванович";
// для цен и сумм
Значение=666;
// или
текДата=ТекущаяДата();
Значение=Год(текДата)-Месяц(текДата)+День(текДата);

Простор для фантазии)

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

 

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

 

6. Если в базе есть регистры и прочие вторичные данные, чьи поля простых типов зависят от неких операций (обычно от проведения документов), то перепроводим:

 

7. И только со значениями перечислений трудновато, разве что, исходя из точного понимания механизма, действительно аккуратно подменить на некое обезличенное значение, например:

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

 

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

Логирование, отладка - всё уже есть штатно.

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

Если баян, смело кидайте тухлыми помидорами)

Обезличивание базы обезличивание данных конвертация КД2

См. также

Защита ПО и шифрование Программист Платформа 1С v8.3 1С:Бухгалтерия 3.0 Абонемент ($m)

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

1 стартмани

09.02.2023    2700    11    aximo    5    

2

Защита ПО и шифрование Программист Абонемент ($m)

Для установки защиты pdf документа, полученного в 1С, написано консольное приложение на c#., использующее одну зависимость pdfSharp.dll. В результате работы приложения ограничены операции над документом и записаны метаданные. С помощью аргументов командной строки можно управлять работой приложения.

2 стартмани

30.01.2023    2128    2    olevlasam    3    

3

Защита ПО и шифрование Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Универсальный синтаксический анализатор ASN.1, который может декодировать любую допустимую структуру ASN.1 DER или BER, независимо от того, закодирована ли она в кодировке Base64 (распознаются необработанные base64, защита PEM и begin-base64) или в шестнадцатеричном кодировании.

1 стартмани

04.12.2022    3563    16    keyn5565`    0    

14

Защита ПО и шифрование Программист Платформа 1С v8.3 Абонемент ($m)

Демонстрация возможностей шифрования строки на основе мастер-пароля в 1С Предприятие 8.3.19. AES без zip файла, RSA, PKDF2. (c использованием библиотеки С# через com).

2 стартмани

31.08.2022    4445    9    vit59    2    

6

Защита ПО и шифрование Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Обработка, позволяющая запутывать и шифровать байт-код, поставлять модули без исходных текстов и т.д. Работает только в файловом варианте с версии платформы 8.3.22.1368 из-за конструктора ГенераторСлучайныхЧисел, поскольку алгоритм был изменён.

10 стартмани

16.06.2022    12649    105    ZhokhovM    12    

45

Защита ПО и шифрование Программист Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

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

2 стартмани

09.03.2022    6115    3    ge_ni    9    

2

Защита ПО и шифрование Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

27.12.2021    5076    2    idm80    12    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mikit 71 14.06.20 21:01 Сейчас в теме
Немного не по теме, может подскажете куда копать

Бьюсь который день, есть правила типовые БП 2.0 КОРП -> УТ 11, добавила в них выгрузку Поступление товаров и услуг и Реализацию. Документы переносятся, но к сожалению реквизит в табл части товары "АналитикаУчетаНоменклатуры" не заполняется. Пробовала убирать строку (//Объект.ОбменДанными.Загрузка = Истина; ) в глобальном обработчике "После загрузки данных" не помогает

Для Каждого СтрокаТаблицы Из ЗагруженныеОбъекты Цикл

Если СтрокаТаблицы.Объект.ЭтоНовый() Тогда
Продолжить;
КонецЕсли;

Объект = СтрокаТаблицы.Объект.Ссылка.ПолучитьОбъект();
ПараметрыОбъекта = СтрокаТаблицы.Параметры;
ИмяПКО = СтрокаТаблицы.ИмяПКО;

ОбъектМодифицирован = Истина;

Если Метаданные.Справочники.Содержит(Объект.МетаДанные()) Тогда
Выполнить(Алгоритмы.ОбработкаСправочниковОтложенная);
КонецЕсли;

Если Метаданные.Документы.Содержит(Объект.МетаДанные()) Тогда
Выполнить(Алгоритмы.ЗаполнениеДокументовОтложенное);
КонецЕсли;

Если ОбъектМодифицирован Тогда
Объект.ОбменДанными.Отправитель = Параметры.УзелОбменаЗагрузкаДанныхСсылка;
//Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
КонецЕсли;

КонецЦикла;
Показать
Прикрепленные файлы:
ПравилаОбменаДанными11062020.xml
10. Константин С. 672 15.06.20 09:12 Сейчас в теме
(1)
Документы переносятся, но к сожалению реквизит в табл части товары "АналитикаУчетаНоменклатуры

оставьте это на заполнение самой конфы. При проведении само будет подставляться.
16. mikit 71 15.06.20 20:17 Сейчас в теме
(10) Cпасибо, вы совершенно правы. Дописала проведение в ПКО после загрузки Объект.Записать(РежимЗаписиДокумента.Проведение) - аналитика заполняется
17. Yashazz 4791 15.06.20 20:19 Сейчас в теме
(16) Люди добрыя, я всё понимаю, но на ИС ведь есть специально механизм вопросов и ответов, чтоб в темах не оффтопить. Давайте туды, ась?
2. RustIG 1747 14.06.20 22:30 Сейчас в теме
(0) идею увидел, а где программная реализация?
где обработка, которая сама соберет нужные правила ПКО по всем справочникам и документам? или вы предлагаете все правила для всех метаданных руками править?
Если вы описали как работать с КД - то это не стоило.
Если вы описали идею, то мне хватило первого предложения, чтобы понять суть идеи.
Стал читать, чтобы увидеть реализацию, но не увидел...
Вот такая работа по обезличиванию сколько стоит, по вашему? в рублях и в человеко-часах, и для кого эта задача ?
RealEgor; +1 Ответить
6. Yashazz 4791 15.06.20 00:11 Сейчас в теме
(2) Если вы спрашиваете про обработку, значит, вы не поняли суть идеи. Не нужна никакая обработка, кроме классического универсального обмена XML. Зачем надо "собирать нужные правила"? Есть удобный интерфейс КД, этого более чем достаточно. Есть мой отчёт, недавно выложенный.
Опять же, программная реализация зависит от конкретики, внимательно читайте.
3. RustIG 1747 14.06.20 22:48 Сейчас в теме
(0) Для типовых быстрее создать свои обработки (алгоритмы) обезличивания вместо использования КД, например, вот так для ЗУП: https://infostart.ru/public/995930/. Особенно, когда знаешь свою сопровождаемую типовую конфигурацию.

Для каких задач использовать КД подобным образом ? пока не представляю
RealEgor; +1 Ответить
5. Yashazz 4791 15.06.20 00:08 Сейчас в теме
(3) Неа, не быстрее. Возьмите и посчитайте - выборку свою сделать, условия свои задать, механику записи, интерфейс какой-никакой. А тут готовенькое, только нужным полям значения закинуть.

А для каких задач - я написал. По сути КД это удобный механизм произвольных манипуляций с содержимым БД, очень неплохой и документированный инструментарий.

Просто многие настолько привыкли, что "для изменения данных в базе нужна обработка", что шире не мыслят) А инструмент оказался удобный и на практике проверенный (идее-то этой лет 5, это написать мне позволили сегодня, а вообще на этой концепции серьёзные решения делались, оперативно и просто, и отлично работали).
7. RustIG 1747 15.06.20 08:48 Сейчас в теме
(5) ничего определенного по задаче вы не написали. Что за задача? Делать ее с помощью КД гораздо дольше, чем обработку написать.

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

Зачем накладывать на выборку отбор? Обезличиваем всю выборку. Тут ничего сложного : Выборка = Справочники.Контрагенты.Выбрать();
Пока Выборка.Следующий() Цикл.....
Brawler; RealEgor; +2 Ответить
8. Yashazz 4791 15.06.20 08:59 Сейчас в теме
(7) Ну если формулировка "обезличивание" не раскрывает задачу, то почитайте матчасть. И повторюсь, делать через КД - быстрее, проверено.

Правила надо поддерживать, если обезличивание надо поддерживать и делать постоянно. А если разово - нет. И потом, обработку разве не надо актуализировать, не? Что-то у вас с логикой)

Ага, ага. Вот уже строки кода, который КД за нас делает, лишний труд. Короче, придирки на ровном месте)
9. RustIG 1747 15.06.20 09:09 Сейчас в теме
(8)
А если разово - нет.

Вот это к примеру и есть одно из требований задачи. Получается , что требуется разово что-то там обезличить. Что за конфа? Какие справочники надо обезличить? ВЫ написали про перечисление и регистры сведений. До какой степени и детализации надо обезличить? Зачем?

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

Что-то я еще сделал, но это было быстрее, чем выгружать метаданные из конфигурации, загружать их в КД, сопоставлять объекты, находить правила ПКО и менять их.

Я спросил у вас обработку, которая открывается в самой КД, чтобы правила ПКО переписать автоматом на свои нужные, чтобы руками не прописывать Наименование = Иванов;

вы не поняли, поэтому тот же ответ и вам : читайте внимательно :)

задачи обезличивания отличаются друг от друга постановкой и реализацией. Использовать КД для всех случаев пока не понятно зачем - громоздко выглядит. Пример реальной задачи опишите...
11. Yashazz 4791 15.06.20 11:00 Сейчас в теме
(9)
До какой степени и детализации надо обезличить? Зачем?
Вы издеваетесь или не понимаете? Это от конкретики задачи зависит, сами же пишете про цели и постановки.
Что-то я еще сделал, но это было быстрее, чем выгружать метаданные из конфигурации, загружать их в КД, сопоставлять объекты, находить правила ПКО и менять их.
Не спорю. Если совсем "по месту", или тяп-ляп без интерфейса, то да. И то, я такое тоже быстрее наваяю, а новички полдня будут пыхтеть. Ну и выгружать-загружать это быстрые операции, даже на нынешних конфах, пара минут. Сопоставляет КД сама.
Я спросил у вас обработку, которая открывается в самой КД, чтобы правила ПКО переписать автоматом на свои нужные, чтобы руками не прописывать Наименование = Иванов;
Опишите, пожалуйста, как должна выглядеть эта обработка. Конкретизируйте задачу. И напомню, есть универсальные групповые обработки данных, которыми и в КД можно пользоваться, я вот тексты алгоритмов ими ставлю и очень удобно.

Я-то как раз всё понял.

А если вам непонятно - зачем, так это не повод утверждать, что громоздко и долго. Возможно, "вы просто не умеете их готовить"?))
4. RustIG 1747 14.06.20 23:26 Сейчас в теме
я в свое время делал обезличивание базы, использовал с Инфостарта обработку... но точно не думал про КД....
PS. Психологи про озарение https://postnauka.ru/video/154831
12. Yashazz 4791 15.06.20 11:02 Сейчас в теме
Вообще забавно. Всякий шлак, который разжёван был в 2013-м году на Мисте, например, радостно плюсят. А оригинальную работоспособную идею для удобного решения - не понимают. Мдя, характеризует нынешних, ой характеризует...
13. Yashazz 4791 15.06.20 11:13 Сейчас в теме
И ещё, если неочевидно: обработки каждый кропает в своём стиле, в своей манере, разобраться в них потом, изменить, адаптировать, доработать - затратно. Тогда как КД это стандарт, это внятная прозрачная механика.
14. ixijixi 1913 15.06.20 19:04 Сейчас в теме
Недостаток предложенного метода вижу в его неуниверсальности. Под каждую конфу, более того, иногда под каждый ее релиз надо писать правила. Обработка может быть универсальной, не зависящей от конфы, релиза, состава реквизитов и табличных частей.

Но как новый взгляд на старую проблему - интересно. Чисто теоретически.
Дмитрий74Чел; RustIG; +2 Ответить
15. Yashazz 4791 15.06.20 20:14 Сейчас в теме
(14) Соглашусь, верно. Но... можно ведь оперировать "расхожими" справочниками.- контрагенты-партнёр, номенклатура... Их состав и логика в рамках большинства систем схожи.

Спасибо, довод принят.
18. mixsture 18.06.20 14:37 Сейчас в теме
Я как-то тоже не понимаю, зачем тут КД? Запускаем конфу в режиме обычных форм, открываем инструменты разработчика, идем в подбор и обработка объектов - и также все меняем.
Будет:
1) сопоставимо или даже чуть меньше затрачено времени прогера (вобщем-то, и там, и там надо что-то делать на каждый вид объекта)
2) отработает быстрее
3) точно не упадет по памяти (как любит делать КД на больших объемах данных. это ж все-таки XML)
20. Yashazz 4791 18.06.20 17:55 Сейчас в теме
(18) У меня, да и у многих, есть групповые обработчики. У меня своя самоделка, у кого-то ИР. Да, так можно, но имхо удобство инструментария всё же проигрывает КДшному.

И кстати, не припоминаю, чтобы КД2 падала. Там последовательные запись и чтение хмл, всё толково сделано, я за 10 лет терабайтную выгрузку таскал, скушало и не подавилось.
19. aspirator23 339 18.06.20 15:23 Сейчас в теме
Интересная идея, хотя в исходном виде трудоемкая - все нужно вручную описать.
21. Yashazz 4791 13.08.21 19:06 Сейчас в теме
(19) Всё-таки или я чего-то не понимаю, или некоторые читатели. Что вручную описать? Логику обфускации? Да вы её в любом случае и гораздо более затратно описывали бы руками, в своей-то обработке...
Оставьте свое сообщение