Предисловие
В какой-то момент логирования многие задаются вопросом как логировать события с конфиденциальными данными. Для примера возьмём банковские операции. Допустим что прошла какая-то транзакция где есть публичные поля ( id и т.п ) и конфиденциальные поля ( card number ).
Что можно сделать в таком случае? Конечно зашифровать половину данных, как это обычно бывает в истории переводов в том же мобильном приложении от интернет банкинга.
Т.е допустим номер карты 1111-2222-5555-9999 значит надо перевести его в XXXX-XXXX-XXXX-9999
SEDCMD
В splunk для это можно использовать модуль SEDCMD
.
Суть работы SEDCMD:
- forwarder отправляет логи в splunk
- splunk смотря на источник указанный в props.conf обрабатывает логи согласно правилу
SEDCMD
( pattern ) - индексирует логи ( записывает )
Источник данных ( input )
Для нашего примера создадим файл в который будем писать лог, например /tmp/test.txt.
touch /tmp/test.txt
Добавим в inputs.txt
наш файл для логирования /opt/splunkforwarder/etc/system/local/inputs.conf
vi /tmp/test.txt
[monitor:///tmp/test.txt]
disabled = false
sourcetype = mysourcetype
index = myindex
systemctl restart splunk
Тестирование
Добавляем в файл запись 1111-2222-5555-9999
vi /tmp/test.txt
1111-2222-5555-9999
Делаем поиск в splunk
index=myindex sourcetype=mysourcetype
Добавление SEDCMD
Для этого редактируем файл props.conf
на node splunk
vi $SPLUNK_HOME/etc/system/local/props.conf
[mysourcetype]
SEDCMD-Mysourcetype= s/(\d{4}-){3}(\d{4})/xxxx-xxxx-xxxx-\2/g
Разбор конфига:
- s/ - добавляется всегда в начале
- (\d{4}-){3}(\d{4}) - это pattern для нашей строки, где данные бьются на 4 части
- / - добавляется в конце pattern
- xxxx-xxxx-xxxx-\2 - собственно pattern на что менять текст, где \2 последняя часть с (\d{4}-){3}(\d{4})
- /g - добавляется в конце
Тестирование
Добавляем в файл запись 1111-2222-5555-9999
vi /tmp/test.txt
1111-2222-5555-9999
Делаем поиск в splunk
index=myindex sourcetype=mysourcetype
Комментарии