Описание проекта
Ядро задачи — защита от подмены и целостность. События должны писаться в хранилище только на добавление, где любое последующее изменение или удаление становится обнаружимым, например через связывание записей хеш-цепочкой, чтобы разрыв цепочки был сразу виден. Приём событий делаем через чистый API, который вызывают наши сервисы, плюс лёгкая клиентская библиотека, чтобы разработчики отправляли события без лишних усилий. Поверх хранилища нужен быстрый поиск и фильтрация по субъекту, типу действия, объекту, диапазону дат и свободному тексту, потому что во время инцидента ответы нужны за секунды, а не за часы. Также нужны настраиваемые политики хранения по категориям событий, поддержка юридической блокировки, приостанавливающей удаление, и ролевой доступ, чтобы само чтение аудит-лога было под контролем и, желательно, тоже фиксировалось.
И наконец, комплаенс реален только тогда, когда есть что передать проверяющему. Нужна надёжная выгрузка в распространённых форматах с проверяемым манифестом целостности, чтобы внешний аудитор мог убедиться, что выгруженный срез не изменялся. Опишите, пожалуйста, ваш опыт с высокоцелостными хранилищами событий, ожидаемую пропускную способность записи и то, как вы удержите производительность запросов при росте лога до сотен миллионов записей.
— Схема события: субъект, действие, объект, время, источник, структурированные изменения
— Хранилище только на добавление, защищённое от подмены (хеш-цепочка или аналог)
— API приёма событий и небольшая клиентская библиотека для наших сервисов
— Поиск и фильтрация по субъекту, действию, объекту, датам и полному тексту
— Настраиваемые политики хранения и юридическая блокировка удаления
— Ролевой доступ на чтение, с фиксацией самого доступа к логу
— Проверяемая выгрузка для аудиторов с манифестом целостности