Перейти к содержанию

Регистрируемые события безопасности

В данном разделе перечислены события, которые фиксируются в журнале аудита Picodata. События проиллюстрированы псевдоструктурами в формате JSON.

Структура журнала

Журнал представляет собой массив строк с разметкой json, где каждой строке соответствует одно событие. Пример сообщения из журнала (переформатированный для лучшей читаемости):

{
     "title": "create_table",
     "message": "created table `WAREHOUSE`",
     "severity": "medium",
     "name": "WAREHOUSE",
     "initiator": "admin",
     "time": "2023-12-01T14:31:50.117+0300",
     "id": "1.0.14"
}

Каждая запись журнала включает следующие обязательные элементы:

  • title – наименование
  • message – описание
  • severity – важность (low / medium / high)
  • initiator — субъект доступа инициировавший событие
  • time – дата и время
  • id – идентификатор, состоящий из трех чисел:
    • raft_id – идентификатор инстанса в Raft
    • gen – счетчик перезапусков инстанса
    • count – внутренний счетчик событий

Помимо этого, запись может содержать дополнительные поля, относящиеся к конкретному событию, например, имена пользователей, таблиц и т.д.

Перечень регистрируемых событий

access_denied

Неавторизованный запрос к БД.

{
     "title": "access_denied",
     "message": "<privilege> access
          to <object_type> `<object>`
          is denied for user `<user>`",
     "severity": "medium",
     "privilege": ...,
     "object_type": ...,
     "object": ...,
     ...
}

auth_fail

Неуспешная попытка аутентификации.

{
     "title": "auth_fail",
     "message": "failed to authenticate user `<user>`",
     "severity": "high",
     "user": ...,
     "verdict": ...,
     ...,
}

auth_ok

Успешная попытка аутентификации.

{
     "title": "auth_ok",
     "message": "successfully authenticated user `<user>`",
     "severity": "high",
     "user": ...,
     "verdict": ...,
     ...
}

change_current_state

Изменение текущего стейта инстанса.

{
     "title": "change_current_state",
     "message": "current state
          of instance `<instance_name>`
          changed to <new_state>",
     "severity": "medium",
     "instance_name": ...,
     // TODO: "old_state": ...,
     "new_state": ...,
     "raft_id": ...,
     ...
}

change_password

Изменение атрибутов учетных записей пользователей СУБД:

  • метода аутентификации
  • пароля
{
     "title": "change_password",
     "message": "password of user `<user>` was changed",
     "severity": "high",
     "user": ...,
     "auth_type": ...,
     ...
}

change_target_state

Изменение целевого стейта инстанса.

{
     "title": "change_target_state",
     "message": "target state
          of instance `<instance_name>`
          changed to <new_state>",
     "severity": "low",
     "instance_name": ...,
     // TODO: "old_state": ...,
     "new_state": ...,
     "raft_id": ...,
     ...
}

connect_local_db

Подключение базы данных. Событие фиксируется после инициализации локального хранилища, см. Жизненный цикл инстанса.

{
     "title": "connect_local_db",
     "message": "local database connected on `<instance_name>`",
     "severity": "low",
     "raft_id": ...,
     "instance_name": ...,
     ...
}

create_local_db

Создание базы данных. Событие фиксируется после добавления инстанса в кластер, см. join_instance. Событие фиксируется на всех узлах кластера, включая добавляемый.

{
     "title": "create_local_db",
     "message": "local database created on `<instance_name>`",
     "severity": "low",
     "raft_id": ...,
     "instance_name": ...,
     ...
}

create_procedure

Создание хранимой процедуры.

{
     "title": "create_procedure",
     "message": "created procedure `<name>`",
     "severity": "medium",
     "name": ...,
     ...
}

create_role

Создание роли СУБД.

{
     "title": "create_role",
     "message": "created role `<role>`",
     "severity": "high",
     "role": ...,
     ...
}

create_table

Создание таблицы БД.

{
     "title": "create_table",
     "message": "created table `<name>`",
     "severity": "medium",
     "name": ...,
     ...
}

create_user

Создание учетной записи пользователя СУБД.

{
     "title": "create_user",
     "message": "created user `<user>`",
     "severity": "high",
     "user": ...,
     "auth_type": ...,
     ...
}

drop_local_db

Удаление базы данных. Событие фиксируется после удаления инстанса из кластера, см. expel_instance. Событие фиксируется на всех узлах кластера.

{
     "title": "drop_local_db",
     "message": "local database dropped on `<instance_name>`",
     "severity": "low",
     "raft_id": ...,
     "instance_name": ...,
     ...
}

drop_procedure

Удаление хранимой процедуры.

{
     "title": "drop_procedure",
     "message": "dropped procedure `<name>`",
     "severity": "medium",
     "name": ...,
     ...
}

drop_role

Удаление роли СУБД.

{
     "title": "drop_role",
     "message": "dropped role `<role>`",
     "severity": "medium",
     "role": ...,
     ...
}

drop_table

Удаление таблицы БД.

{
     "title": "drop_table",
     "message": "dropped table `<name>`",
     "severity": "medium",
     "name": ...,
     ...
}

drop_user

Удаление учетной записи пользователя СУБД.

{
     "title": "drop_user",
     "message": "dropped user `<user>`",
     "severity": "medium",
     "user": ...,
     ...
}

expel_instance

Изменение конфигурации СУБД связанное с удалением инстанса из кластера.

{
     "title": "expel_instance",
     "message": "instance `<instance_name>` was expelled from the cluster",
     "severity": "low",
     "instance_name": ...,
     "raft_id": ...,
     ...
}

grant_privilege

Выдача привилегии пользователю СУБД.

{
     "title": "grant_privilege",
     "message": "granted privilege <privilege>
          on <object_type> `<object>`
          to <grantee_type> `<grantee>`",
     "severity": "high",
     "privilege": ...,
     "object_type": ...,
     "object": ...,
     "grantee_type": ...,
     "grantee": ...,
     ...
}

grant_role

Назначение роли пользователю СУБД или другой роли.

{
     "title": "grant_role",
     "message": "granted role `<role>` to <grantee_type> `<grantee>`",
     "severity": "high",
     "role": ...,
     "grantee_type": ...,
     "grantee": ...,
     ...
}

init_audit

Инициализация журнала аудита. Событие предшествует запуску инстанса, см. local_startup.

{
     "title": "init_audit",
     "message": "audit log is ready",
     "severity": "low",
     ...
}

integrity_violation

Нарушение целостности объектов контроля, см. Контроль целостности.

{
     "title": "integrity_violation",
     "message": "integrity violation detected",
     "severity": "high",
     ...
}

join_instance

Изменение конфигурации СУБД связанное с добавлением инстанса в кластер.

{
     "title": "join_instance",
     "message": "a new instance `<instance_name>` joined the cluster",
     "severity": "low",
     "instance_name": ...,
     "raft_id": ...,
     ...
}

local_shutdown

Остановка инстанса.

{
     "title": "local_shutdown",
     "message": "instance is shutting down",
     "severity": "high",
     ...
}

local_startup

Запуск инстанса. Событие фиксируется после инициализации журнала аудита, см. init_audit.

{
     "title": "local_startup",
     "message": "instance is starting",
     "severity": "low",
     ...
}

recover_local_db

Восстановление базы данных. Событие фиксируется после инициализации локального хранилища в случае если имело место восстановление из снапшота, см. Жизненный цикл инстанса.

{
     "title": "recover_local_db",
     "message": "local database recovered on `<instance_name>`",
     "severity": "low",
     "raft_id": ...,
     "instance_name": ...,
     ...
}

rename_procedure

Переименование хранимой процедуры.

{
     "title": "rename_procedure",
     "message": "renamed procedure `<old_name>` to `<new_name>`",
     "severity": "medium",
     "old_name": ...,
     "new_name": ...,
     ...
}

rename_user

Переименование учетной записи пользователя СУБД.

{
     "title": "rename_user",
     "message": "name of user `<old_name>` was changed to `<new_name>`",
     "severity": "high",
     "old_name": ...,
     "new_name": ...,
     ...
}

revoke_privilege

Отзыв привилегии у пользователя СУБД.

{
     "title": "revoke_privilege",
     "message": "revoked privilege <privilege>
          on <object_type> `<object>`
          from <grantee_type> `<grantee>`",
     "severity": "high",
     "privilege": ...,
     "object_type": ...,
     "object": ...,
     "grantee_type": ...,
     "grantee": ...,
     ...
}

revoke_role

Отзыв роли у пользователя СУБД или у другой роли.

{
     "title": "revoke_role",
     "message": "revoked role `<role>` from <grantee_type> `<grantee>`",
     "severity": "high",
     "role": ...,
     "grantee_type": ...,
     "grantee": ...,
     ...
}

shredding_failed

Ошибка безопасного удалении рабочих файлов инстанса.

{
     "title": "shredding_failed",
     "message": "shredding failed for <filename>",
     "severity": "low",
     "filename": ...,
     "error": ...,
     ...
}

shredding_finished

Успешное удаление рабочих файлов инстанса.

{
     "title": "shredding_finished",
     "message": "shredding finished for <filename>",
     "severity": "low",
     "filename": ...,
     ...
}

shredding_started

Начало безопасного удаления рабочих файлов инстанса путем многократной перезаписи специальными битовыми последовательностями.

{
     "title": "shredding_started",
     "message": "shredding started for <filename>",
     "severity": "low",
     "filename": ...,
     ...
}