Аудитные логи

Информация обо всех изменениях схемы (успешных и неуспешных), а также об изменениях ACL записывается в аудитные логи.

Подключение аудитных логов

Аудитный логи поставляются в рамках логгирования компонентов YDB.

Чтобы подключить аудитные логи, нужно изменить уровни логирования:

  1. Перейти по ссылке вида

    http://<endpoint>:8765/cms
    

    Откроется страница Cluster Management System.

  2. На вкладке Configs кликнуть на строку LogConfigItems.

  3. В разделе Component log settings найти компонент FLAT_TX_SCHEMESHARD. Выставить у этого компонента уровень логирования не ниже, чем NOTICE.

  4. Сохранить изменения нажатием кнопки Submit

Аудитные логи пишутся вместе с другими логами YDB.

Формат аудитных логов

Событие лога состоит из полей ключ: значение, разделенных запятыми:

2022-08-03T22:41:43.860439Z node 1 :FLAT_TX_SCHEMESHARD NOTICE: AUDIT: txId: 281474976710670, database: /Root, subject: no subject, status: StatusSuccess, operation: MODIFY ACL, path: Root, add access: +(CT):user0@builtin, protobuf request: WorkingDir: "" OperationType: ESchemeOpModifyACL ModifyACL { Name: "Root" DiffACL: "\n\031\010\000\022\025\010\001\020@\032\ruser0@builtin \003" }

2022-08-03T22:41:43.931561Z node 1 :FLAT_TX_SCHEMESHARD NOTICE: AUDIT: txId: 281474976710672, database: /Root, subject: user0@builtin, status: StatusAccepted, operation: DROP TABLE, path: /Root/Test1234/KeyValue, protobuf request: WorkingDir: "/Root/Test1234" OperationType: ESchemeOpDropTable Drop { Name: "KeyValue" }

2022-08-03T22:41:43.895591Z node 1 :FLAT_TX_SCHEMESHARD NOTICE: AUDIT: txId: 281474976710671, database: /Root, subject: user0@builtin, status: StatusAccepted, operation: CREATE DIRECTORY, path: /Root/Test1234, protobuf request: WorkingDir: "/Root" OperationType: ESchemeOpMkDir MkDir { Name: "Test1234" } FailOnExist: true, operation: CREATE TABLE, path: /Root/Test1234/KeyValue, protobuf request: WorkingDir: "/Root/Test1234" OperationType: ESchemeOpCreateTable CreateTable { Name: "KeyValue" Columns { Name: "Key" Type: "Uint32" NotNull: false } Columns { Name: "Value" Type: "String" NotNull: false } KeyColumnNames: "Key" PartitionConfig { ColumnFamilies { Id: 0 StorageConfig { SysLog { PreferredPoolKind: "test" } Log { PreferredPoolKind: "test" } Data { PreferredPoolKind: "test" } } } } } FailOnExist: false

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

Поля транзакции

  • txId — (обязательно) уникальный идентификатор транзакции.
  • database — (опционально) путь к базе данных.
  • subject — (обязательно) SID источника события (формат <login>@<subsystem>). Если не определен, значение no subject.
  • status — (обязательно) статус завершения транзакции.
  • reason — (опционально) сообщение об ошибке.

Поля операции

  • operation — (обязательно) название операции.
  • path — (опционально) путь к объекту изменения. Это поле может меняться в рамках транзакции.
  • src path — (опционально) путь к исходному объекту (для операций копирования и перемещения).
  • dst path — (опционально) путь к конечному объекту (для операций копирования и перемещения).
  • no path — (опционально) если объект изменения отсутствует, содержит значение no path.
  • set owner — (опционально) новый владелец при изменении ACL.
  • add access — (опционально) добавление доступа при изменении ACL. Поле может повторятся.
  • remove access — (опционально) удаление доступа при изменении ACL. Поле может повторяться.
  • protobuf request — (опционально) Описание изменения схемы или ACL в формате protobuf.