Как добавить хеш всего содержимого события в Logstash для OpenSearch?

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

В настоящее время у нас есть несколько фильтров Grok, которые извлекают информацию из полученных строк журнала и сохраняют ее в разных полях, используя несколько шаблонов. Чтобы злоумышленнику, который изменяет эти журналы, чтобы замести следы, было сложнее, я подумываю добавить дополнительное поле, в котором вся строка хешируется и обрабатывается перед разделением.

Начальная часть моей конфигурации фильтра выглядит так. Он использовался в основном с ELK, но наш проект перейдет на OpenSearch:

      filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:mytimestamp} (\[)*%{LOGLEVEL:loglevel}(\])* %{JAVACLASS:javaclass}(.)*(\[/])* %{DATA:component} %{DATA:version} - %{GREEDYDATA:message}"}
    overwrite => [ "message" ]
    overwrite => [ "version" ]
    break_on_match => false
    keep_empty_captures => true
  }
   // do more stuff

}

В OpenSearch есть информация о маскировании полей , но это не совсем то, что мне нужно.

Если бы кто-нибудь из вас мог помочь мне указателем или идеей, как это сделать. Я не знаю, доступны ли хэш-поля, доступные в ELK, и в OpenSearch, и можно ли использовать плагин Logstash, который выполняет хеширование полей, без проблем с лицензированием. Но, возможно, есть другие, лучшие варианты, о которых я не знаю. Я искал информацию о том, как вызвать внешний скрипт, чтобы сделать это во время выполнения фильтра, но я даже не знаю, возможно ли это (по-видимому, нет, по крайней мере, я ничего не нашел).

Любые идеи? Спасибо!

0 ответов

Другие вопросы по тегам