Управление и учет

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

Журнал решений о доступе — кто, к какому ресурсу и с каким разрешением обращался, и было ли действие разрешено.

Enterprise

Назначение

Аудитный лог фиксирует решения системы прав доступа (RBAC). Каждая запись — одна проверка доступа: какой пользователь запросил какое разрешение к какому ресурсу, была ли проверка пройдена и по какой причине.

Журнал отвечает на вопросы безопасности и compliance:

  • кто обращался к настройкам кластера, провайдеров и governance;
  • какие попытки доступа были отклонены;
  • какая роль дала пользователю доступ.

В лог попадают обращения к API управления: веб-интерфейс и прямые вызовы API. Не попадают запросы к моделям (inference), вход и выход из системы. Журнал не хранит содержимое изменений: значения «до» и «после» в нём нет.

Как настроить

Запись выключена по умолчанию. Режим задаётся в config.json:

{
  "authz": {
    "access_audit_mode": "fail-only"
  }
}
РежимЧто записывается
disabledНичего. Значение по умолчанию.
allВсе решения о доступе.
fail-onlyТолько отказы.
success-onlyТолько разрешённые обращения.
cluster-level-onlyТолько решения на глобальном уровне — без ресурсов заказчиков, команд, пользователей и виртуальных ключей.

Неизвестное значение — ошибка старта: authz.access_audit_mode: unknown mode …. После изменения перезапустите ноду.

Требования:

  • Записи хранятся в таблице access_audit_logs базы config store — PostgreSQL или SQLite.
  • В кластере все ноды пишут в общую базу. Каждая запись помечена именем ноды.

Режим all быстро наполняет таблицу: одна загрузка страницы веб-интерфейса порождает десятки записей. Для production начните с fail-only или cluster-level-only. Автоматической очистки нет — удаляйте старые записи из access_audit_logs по своему регламенту.

Страница Audit Logs

Журнал открывается в Governance → Audit Logs (/workspace/audit-logs).

Страница Audit Logs

Для просмотра нужно разрешение audit_log.list на глобальном уровне. Оно есть у глобальных ролей, в том числе у admin и auditor. Привязка роли к заказчику или команде доступа к журналу не даёт.

Фильтры

ФильтрНазначение
Pick a dateПериод: готовые интервалы от 5 минут до 30 дней или произвольный диапазон.
All permissionsОдно или несколько разрешений, например cluster.config.read.
All scope typesУровень ресурса: global, customer, team, user, vk.
Search resource…Поиск по части пути ресурса.
All / Allowed / DeniedРешение.

Страница не обновляется сама — нажмите кнопку обновления справа от фильтров.

Колонки

КолонкаЗначение
TimeВремя проверки.
UserПользователь. При наведении — его идентификатор.
PermissionПроверенное разрешение.
ResourceРесурс: путь API или идентификатор сущности.
ScopeУровень ресурса. Для заказчика или команды — ещё и её имя.
Matched roleРоль, которая дала доступ.
Decisionallowed — разрешено, denied — отклонено.
ReasonПричина решения.
NodeНода кластера, которая приняла решение.

Основные причины:

ReasonЗначение
grantedДоступ дала привязка роли.
g.admin-fast-pathПользователь — глобальный администратор, проверка пропущена.
legacy-roleДоступ дала встроенная роль пользователя.
auth-disabledАутентификация выключена, доступ открыт всем.
no-bindingУ пользователя нет подходящей привязки роли.
not-effectiveРазрешение не действует на этом уровне ресурса.
no-scopeНе удалось определить уровень ресурса.

На странице по 50 записей, новые сверху. Открытие самой страницы тоже попадает в журнал — как проверка разрешения audit_log.list.

Записи также доступны через API: GET /api/auth/rbac/audit-logs с фильтрами from, to, relative, permission, scope_type, resource и allowed. Подробнее — в справочнике API.

Содержание