Маска средних 6 цифр номера кредитной карты в logstash - PullRequest
0 голосов
/ 30 января 2019

Требуется указать начальные 6 и последние 4 цифры и замаскировать оставшиеся номера кредитной карты в logstash.Я применил фильтр gsub / mutate, но строка замены не разрешает регулярное выражение.Другим способом это можно сделать в logstash?

if [message] =~ '\d{16}' {
    mutate {
        gsub => ["message", "\d{6}\d{4}\d{4}", "\d{6}######\d{4}"]
        add_tag => "Masked CardNo"
    }
}

Этот код маскирует кредитную карту 3456902345871092 на \ d {6} ###### \ d {4}, но его следует маскировать как 345690###### 1092.

В качестве альтернативы, если возможно, было бы полезно даже отображать только первые 6 цифр или последние 4 цифры карты.

1 Ответ

0 голосов
/ 30 января 2019

Вы можете использовать группы захвата в регулярном выражении и использовать эти группы в замещающей части: это регулярное выражение (\d{6})(\d{6})(\d{4}), при сопоставлении создает три группы ( см. Здесь ).Эти группы можно использовать в строке замены: \1######\3 эта строка будет использовать первую и третью группы замены.

Так что в вашем случае ваша конфигурация должна выглядеть следующим образом:

mutate {
    gsub => ["message", "(\d{6})(\d{6})(\d{4})", "\1######\3"]
    add_tag => "Masked CardNo"
}

Кроме того, ваше регулярное выражение \d{6}\d{4}\d{4} не соответствует 16-значному номеру кредитной карты, второй \d должен получить 6 символов.

...