Во-первых, в случае тестирования уже разработанного приложения написанный код необходимо «положить» на ту же самую
базу данных из промышленной среды – с теми же связями, ключами и форматами данных. То есть в поле, в котором хранится
номер кредитной карты, нельзя записать «****», так как код написанного приложения будет валидировать это значение по
алгоритму Лу́на (специальный алгоритм вычисления контрольной суммы для проверки номера пластиковой карты в
соответствии со стандартом ISO/IEC 7812, принятый во всем мире), чтобы защитить пользователя от неправильного ввода в
будущем. А это значит, что и при тестировании этого приложения значение в ячейке должно быть о структуре точно
такое
же, как и в промышленном сегменте – попадать под алгоритм Луна!
Во-вторых, обезличенные данные в ряде случаев должны быть консистентными, то есть иметь единое представление в разных
таблицах. Так, если в исходной БД имеется значение «Иванов Иван Иванович», то во всех связанных БД он должен
замаскироваться одинаково, чтобы не искажалась связь между объектами. В противном случае эту обезличенную БД нельзя
использовать при тестировании.
В-третьих, если данные передаются в Data Lake или подрядную компанию для маркетингового исследования, то ненужную
информацию можно попробовать заменить на звездочки, но как именно найти то, что требуется заменить? Из этого вытекает
две проблемы:
-
Структура хранения данных может быть нелогичной. Иногда недостаточно посмотреть только на название столбца –
данные могут храниться в столбце с названием PDN1 (персональные данные), а сами значения будут соответствовать
банковским картам. Вручную перебрать все значения практически невозможно ввиду большого объема информации, если,
например, передается база в несколько терабайт. В таких случаях необходим автоматизированный инструмент, который
сможет категоризировать контент в столбце;
-
В компании может быть абсолютно разный парк СУБД (PostgreSQL, MySQL, MSSQL, Oracle, ClickHouse, MongoDB,
MariaDB и т.д.), что потребует разных подходов к методам определения и обезличивания данных.
Для решения задачи обезличивания многие компании прибегают к написанию скриптов. Скрипт – это команда, запускаемая из
консоли системы управления базами данных (СУБД), позволяющая заменить текущие значения в столбце/строке на иные
значения. Этот подход может быть оправдан на начальных этапах работы с данными, когда объем обрабатываемой информации
невелик. Однако по мере роста количества данных сложность и стоимость поддержки скриптов возрастает.
Разработка таких скриптов часто не требует больших материальных вложений. При этом они могут использовать стандартные
механизмы для выявления персональных данных: регулярные выражения и справочники. Ключевые преимущества метода:
-
низкая стоимость разработки и внедрения, особенно на начальном этапе,
-
возможность тонкой настройки скрипта под конкретные потребности организации.
Но при обезличивании скриптами возникает ряд проблем:
-
Скрипты используют мощности самих СУБД для проведения процедуры обезличивания. Это приводит к уменьшению
производительности (а в некоторых случаях влияют и на работоспособность) системы, ведь в них нет встроенных
алгоритмов ограничения потребления ресурсов. При этом если есть требования к скорости маскирования (когда базу
данных необходимо замаскировать за один час), скрипты, как правило, не могут управлять этим процессом;
-
Если база данных динамически меняется и обезличивать ее требуется регулярно, то необходим отдельный сотрудник
(оператор), который будет заниматься ручной категоризацией данных и правкой скриптов по обезличиванию данных в БД,
что не исключает ошибок. Например, некорректное определение данных повлечет за собой некорректное обезличивание
или его невыполнение. Допустим, оператор не определил номер банковских карт, и не запустил скрипт на
обезличивание. Как итог – данные не замаскированы и переданы третьему лицу;
-
Как правило, при использовании скриптов нет возможности предварительно посмотреть, как будут замаскированы
данные. Значит, если скрипт не отработал на части данных, это будет ясно только после завершения процесса, и цикл
придется повторить после исправления скрипта, что значительно растягивает процесс по времени. К тому же, нет
возможности оценить, как именно сработают алгоритмы, и, следовательно, подходит ли выбранный алгоритм к данным,
которые находятся в конкретной колонке;
-
Все скрипты работают неодинаково на разных СУБД (PostgreSQL, MSSQL, Oracle и т.д.). Редко встречаются
компании, где используется одна версия СУБД. Как правило, это все же парк решений, что усложняет первоначальное
написание и дальнейшую поддержку скриптов. Одной версии СУБД – один пул скриптов. Это занимает много времени у
оператора, и не исключает человеческий фактор.
Проблема человеческого фактора, а также необходимость постоянной актуализации подобных скриптов отчасти решается
использованием специальных систем обезличивания данных. Такие системы автоматизируют процессы сканирования схемы БД и
выявления критичных данных, и даже могут автоматически предлагать подходящие алгоритмы обезличивания, а также
определять изменения, произошедшие в базе данных с момента прошлой категоризации. И, самое главное, они могут
проводить автоматизированный процесс обезличивания данных на основе заранее подготовленных правил.
Специализированные продукты создаются для решения задач маскирования. Как правило, они отличаются высокой скоростью
поиска и обезличивания данных. Методы маскирования позволяют устанавливать разные параметры для обеспечения
целостности данных, замены значений уникальными или игнорирования пустых значений. Кроме того, есть возможность
создавать собственные алгоритмы маскирования непосредственно в интерфейсе решения для нестандартных ситуаций.
Таким образом, в отличии от скрипта, специализированное ПО позволяет:
-
в автоматическом режиме выявлять чувствительную информацию (ФИО, номера телефонов и другие данные, указанные выше
),
-
настраивать алгоритмы маскирования данных один раз, а затем просто использовать уже настроенную систему,
-
производить полную репликацию исходной БД с сохранением взаимосвязей (таблицы и связанные с ними ключи),
-
добавлять свои скрипты с учетом уже выстроенной логики самой системы,
-
автоматизировать процесс категоризации данных и обезличивания (встраивание в pipeline CI/CD).
Ниже разберем подробнее все этапы обезличивания баз данных специализированными средствами.
Поделиться: