Skip to main content

Настройка источника Clickhouse и сбор событий аудита БД

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Для настройки базового аудита Clickhouse понадобится:

1. Для логирования обычных запросов (в том числе grant, create) включить логирование в основном файле

/etc/clickhouse-server/config.xml

 в секции logger как минимум необходимо задать формат information

#########################################
<clickhouse>
    <logger>
        <level>information</level>
#########################################

2. Для логирования подключений, таких как:

  • вход пользователя
  • выход пользователя
  • неуспешный вход

потребуется создать отдельный файл 

/etc/clickhouse-server/config.d/session_log.xml

 с содержимым:

<clickhouse>
    <session_log>
        <database>system</database>
        <table>session_log</table>
        <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    </session_log>
</clickhouse>

3. Перезапустить службу командой systemctl restart clickhouse-server

В базе system появится новая таблица со следующими колонками:

image.png

Создаём пользователя для подключения к БД для KUMA и выдаём ему необходимые права следующим командами:

###Создание пользователя для коллектора KUMA
CREATE USER kuma HOST IP '10.10.10.1/32' IDENTIFIED WITH sha256_password BY 'supersecretpassword';

GRANT####Создание VIEW для вывода нескольких запросов
CREATE VIEW combined_logs AS
SELECT ONevent_time,
       user,
       query_kind,
       exception,
       client_hostname,
       client_name,
       http_user_agent,
       type,
       replace(toString(initial_address), '::ffff:', '') AS ipv4_address,
       query
FROM system.query_log ql
WHERE match(toString(initial_address), '^::ffff:') 
  AND query_kind IN ('Grant', 'Create', 'Drop')

UNION ALL

SELECT event_time,
       user,
       NULL AS query_kind,  -- Добавляем NULL для отсутствующего столбца `query_kind`
       NULL AS exception,   -- Добавляем NULL для отсутствующего столбца `exception`
       NULL AS client_hostname,  -- Добавляем NULL для отсутствующего столбца `client_hostname`
       NULL AS client_name,      -- Добавляем NULL для отсутствующего столбца `client_name`
       NULL AS http_user_agent,  -- Добавляем NULL для отсутствующего столбца `http_user_agent`
       type,
       replace(toString(client_address), '::ffff:', '') AS ipv4_address,
       NULL AS query  -- Добавляем NULL для отсутствующего столбца `query`
FROM system.session_log
TOWHERE kuma`type` = '0';

####Назначение прав на VIEW
GRANT SELECT ON system.query_logcombined_logs TO kuma

 

Настройка инстанса завершена, можно приступать к подключению логов в KUMA.

 

В KUMA необходимо создать коллектор с транспортом sql (плейсхолдер для Clickhouse - ?) и параметрами как на скриншоте:

image.png

Создаём нормализатор, мапим колонки БД в нужные нам поля KUMA и получаем лог.