# Журнал аудита

> Кто, когда, откуда и что сделал в организации — включая отказы. Просмотр, фильтры, выгрузка и проверка целостности.

Журнал аудита — это неизменяемая запись всего, что происходило в организации: кто вошёл и откуда, кто изменил права участника, кто отправил задачу в работу или одобрил публикацию, что сделал пайплайн, что сделал оператор платформы с вашей организацией. Записываются и **отказы** — неверный пароль, попытка действия без права — потому что именно их ищет служба безопасности.

Не путайте с [аудитом проекта](/docs/audits): тот разбирает вашу кодовую базу, а журнал аудита фиксирует действия людей и системы в сервисе.

_Иллюстрация: Журнал аудита: фильтры по периоду, исполнителю, результату и категориям; таблица «кто — что — откуда — результат»._

## Где найти

[Настройки](/docs/settings) → выбрать организацию → раздел **«Журнал аудита»**. Раздел есть у каждой организации отдельно: то, что вы видите, относится только к выбранной.

## Кто видит

- **Владелец организации** — всегда.
- **Участник с правом «Просматривать и выгружать журнал аудита»** — это отдельное [право](/docs/teams/permissions), которое **не входит ни в одну роль по умолчанию**, даже в Maintainer: журнал содержит адреса и браузеры всех участников, поэтому доступ к нему выдаётся явно. Обычно его получает офицер безопасности или комплаенс-специалист — читать журнал он сможет, не становясь владельцем и не получая прав на задачи.

Остальные участники раздел открыть не могут: сервер отвечает отказом, и этот отказ тоже попадает в журнал, если участник пытался сделать выгрузку.

## Что в записи

| Поле | Что означает |
| --- | --- |
| **Время** | Момент события с точностью до микросекунды, в UTC; интерфейс показывает его в вашем часовом поясе. |
| **Кто** | Исполнитель: логин участника, идентификатор коннектора, «оператор» (сотрудник платформы) или «система» (пайплайн). |
| **Сессия** | Идентификатор сессии, в которой действовал участник — по нему видно, что несколько действий сделаны в одном входе. |
| **Откуда** | IP-адрес и браузер (User-Agent) подключения, как их увидел наш периметр. Не со слов браузера: адрес подставляет наш сервер по входящему соединению, подделать его клиент не может. |
| **Событие** | Код вида `категория.действие` (например, `member.grant_set`) и понятное описание («Изменены права участника alice»). Полный список — в [каталоге событий](/docs/audit-log/events). |
| **Объект** | На что направлено действие: задача `#35`, участник `alice`, репозиторий `shop-web`, коннектор. |
| **Проект** | Проект разработки, если действие относится к проекту. |
| **Операция** | Класс действия: создание, изменение, удаление, доступ, аутентификация, передача, выполнение. |
| **Важность** | инфо → заметное → предупреждение → критичное. Отказ во входе — предупреждение; смена владельца или отзыв коннектора — критичное. |
| **Результат** | Успех или отказ; для отказа — причина в той формулировке, которую увидел человек. |
| **Детали** | Структурированные параметры действия: какие права выданы, какое решение принято, сколько строк выгружено. |
| **Хэш** | Хэш записи и хэш предыдущей — звенья [цепочки целостности](/docs/audit-log/export#целостность). |

**Секреты в журнал не попадают.** Сохранение токена репозитория записывается как факт («сохранены учётные данные репозитория shop-web»), но ни значение токена, ни его отпечаток в журнале нет. Учётные данные в адресах репозиториев вырезаются до записи.

## Как читать

Раскройте строку — откроется полная запись: все поля из таблицы выше, детали в JSON и оба хэша.

Фильтры применяются на сервере, поэтому работают по всему журналу, а не по загруженной странице:

- **Период** — «Сегодня», «7 дней», «30 дней», «Всё время» или две даты в формате дд.мм.гггг (границы включительно).
- **Исполнитель** — список всех, кто когда-либо действовал в организации.
- **Результат** — все, только успехи, только отказы. «Отказы» за неделю — самый быстрый способ увидеть, кто пытался сделать то, что ему не положено.
- **Категории** — сессии и вход, участники и права, задачи, ревью, коннекторы и так далее; можно выбрать несколько.
- **Поиск** — по описанию, объекту, исполнителю, коду события, адресу, причине отказа и деталям.

Журнал показывается страницами по сто записей; кнопка «Показать ещё» продолжает список до конца. Новые события появляются без перезагрузки.

## Что записывается, а что нет

Записывается каждое **действие** — всё, что меняет состояние организации или касается входа, — и каждый отказ в таком действии. Полный перечень по категориям: [Каталог событий](/docs/audit-log/events).

Не записывается **чтение**: открытие задачи, просмотр диффа, список участников. Исключения из этого правила — действия над самим журналом: выгрузка и проверка целостности фиксируются всегда (как и попытка выгрузки без права). Не записываются и рутинные фоновые операции, если они прошли успешно: продление сессии, периодический отчёт коннектора; их **отказы** записываются, потому что отказ в продлении сессии — признак отозванного или украденного токена.

Действия пайплайна (задача закрыта, конфликт слияния, ревью готово, машина арендована) записываются как события системы. Действия оператора платформы над вашей организацией — пополнение и корректировка баланса, отключение коннектора — как события оператора: вы видите, что сделали с вами мы.

## Хранение

Записи журнала **не редактируются и не удаляются** — ни пользователем, ни оператором. Журнал хранится всё время существования организации, без ограничения глубины: ни окна в 90 или 180 дней, ни лимита на количество записей. Каждая запись связана с предыдущей хэшем, поэтому вставить, изменить или убрать запись задним числом нельзя незаметно — см. [Целостность](/docs/audit-log/export#целостность).

## Что дальше

- [Каталог событий](/docs/audit-log/events) — все коды с описанием, операцией и важностью.
- [Выгрузка и целостность](/docs/audit-log/export) — CSV и JSON Lines, формат, проверка цепочки своими средствами.
- [Справочник прав](/docs/teams/permissions) — как выдать право на журнал офицеру безопасности.
