Маскировка данных с помощью Python
С каждым годом данных в мире становится всё больше, а вместе с тем, растёт и количество злоумышленников, которые хотели бы их использовать.
Каким же образом можно свободно передавать, в некоторых случаях даже хранить данные, не переживая о потенциальных утечках? Именно здесь в игру вступает анонимизация данных путём маскирования.
Проще говоря, анонимизация данных – это процесс перестановки данных таким образом, после которого будет невозможно понять, кому принадлежат данные. В зависимости от цели может так же возникнуть потребность в том, чтобы сохранить смысл и такие свойства как однородность, целостность, взаимозависимость и вариативность исходных данных. Чтобы решить возможную проблему, необходимо понять, как и какие данные необходимо маскировать, а какие нужно сохранить.
Anonympy – простая, но богатая своим функционалом библиотека, обладающая набором инструментов и функций для анонимизации и маскировки данных. На текущий момент проходит бета-тестирование функционала по анонимизации изображений и цензурированию текста в PDF-документах, но об этом в другой раз.
Anonympy использует эффективность Pandas и инкапсулирует другие существующие библиотеки, например, Faker. Идея создания библиотеки проста: сделать анонимизацию и маскировку данных интуитивно понятными.
В качестве примера буду использовать подготовленный набор данных. Импортирую библиотеки и создаю DataFrame.
На первый взгляд становится понятно, что все столбцы содержат некоторую конфиденциальную информацию. Это означает, что придётся замаскировать все столбцы и тем самым продемонстрировать часть функций библиотеки.
Предлагаю начать со стандартной установки:
Важно знать тип столбца, прежде чем применять какие-либо преобразования. Советую проверить типы данных и посмотреть, какие методы доступны.
Сначала подключаю две дополнительные библиотеки для проверки типов столбцов, далее вывожу результат:
Справка по методам:
Получив список доступных методов маскировки, можно начинать применять преобразования. К примеру, я могу добавить шум в столбец возраста, округлить значения ЗП и частично замаскировать адрес электронной почты.
Для проверки состояния маскировки можно воспользоваться простым обращением или же вызовом функции:
Чтобы увидеть изменения можно сделать так:
Как можно заметить, столбцы, содержащие возраст, зарплату и адрес электронной почты, успешно претерпели изменения.
Также для преобразования данных можно воспользоваться словарём:
В случае повторной маскировки столбца, система выдаст соответствующий комментарий:
Чтобы замаскировать оставшиеся столбцы можно воспользоваться встроенными в Faker методами:
Вот и всё. Предлагаю наглядно посмотреть на новый полностью анонимный набор данных! Для сравнения покажу два датафрейма сразу:
К сожалению, библиотека на данный момент не адаптирована под русскоговорящую аудиторию. В основном библиотека «заточена» под западных пользователей, это можно заметить по замене данных в столбцах с номерами телефонов, адресами, именами и городами.
В завершение хочу напомнить, что конфиденциальность и защита любых данных являются важным этапом их обработки, и им следует уделять должное внимание.