Время прочтения: 2 мин.

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

Одним из явных ответов на вопрос об анонимизации персональных данных, находящихся в отдельных выделенных полях записей БД, является исключение из итогового запроса этих полей или подмена имеющегося в них текста посредством функций (в т.ч. значениями хэш, произвольными наборами букв, слов или словосочетаний и т.п.).

Как быть, в случае когда анализу подвергается, например, неструктурированный текст обращения клиента, в котором могут присутствовать персональные данные как самого обратившегося, так и иных физических лиц? С такого рода задачей мы столкнулись, когда проводили анализ обращений клиентов, индексируя текст обращения, содержащий персональные данные, в elasticsearch.

Самим ELK стеком предлагается штатное использование фильтров: мы решили скрыть критические данные путем подмены всех цифровых символов в тексте и адресов электронной почты (все символы до @) на знак #;

В данном случае в logstash используется фильтр подмены значений посредством регулярных выражений:

filter {
    mutate{
        gsub => [
                 «[Текст обращения]»,       # искомый текст 
                 «(\W|^)[\w.+-]{0,100}@|\d»,# регулярное выражение
                 «#»                        # заменяемый текст
                ]
    }
}

Если при анализе все же требуется ориентироваться на значения, например номер банковской карты, используется дополнительная настройка регулярного выражения, после которого текст номера банковской карты имеет вид  427612######1209:

filter {
    mutate {
         gsub =>[
                 "Текст обращения",       # искомый текст 
                 "(\d{6})(\d{6})(\d{4})", # регулярное выражение 
                 "\6######\4"]            # заменяемый текст
   }
}

Таким, довольно простым методом подмены данных при индексации в elasticsearch, можно значительно снизить риск утечки персональных данных клиентов.

А какие методы анонимизации персональной информации в произвольном тексте при работе с ELK стеком знаете Вы? Ждем Ваших комментариев.