Для разработчиков

Журнал аудита событий

Доступно только на тарифе Корпорация. Токену нужен скоуп audit_events:read, который доступен только владельцу пространства.

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

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

Что попадает в журнал

  • События записываются только для пространств на тарифе Корпорация. Пока тариф не подключён, журнал не наполняется, и после подключения прошлые действия в нём не появятся.
  • У каждого события есть актор — сотрудник или бот, выполнивший действие. Действия без актора в журнал не попадают.
  • Данные собираются с 12 мая 2025 года.
  • Чтение самого журнала тоже событие: каждый запрос к методу пишет audit_events_accessed.
  • Так же логируется инвентаризация пространства: GETСписок чатов пространства пишет company_chats_accessed, GETСписок ботов пространстваcompany_bots_accessed. В обоих случаях актором и объектом события выступает владелец токена.

Структура записи

ПолеТипЧто внутри
idstringИдентификатор записи (UUID)
created_atstringДата и время события (ISO-8601, UTC+0)
event_keystringТип события. Полный список — ниже
actor_idstringИдентификатор сотрудника или бота, выполнившего действие
actor_typestringТип актора, всегда User
entity_idstringИдентификатор объекта, которого касается событие
entity_typestringТип этого объекта, например User, Chat, Message, Reaction, GroupTag, TopicThread, VideoRoom или AccessToken
detailsobjectПодробности события, состав зависит от event_key. Для событий без подробностей — пустой объект
ip_addressstring, nullIP-адрес запроса, в котором произошло действие
user_agentstring, nullUser agent клиента, обрезается до 255 символов
Запись о переименовании чата
{  "id": "a1b2c3d4-5e6f-7a8b-9c10-d11e12f13a14",  "created_at": "2026-07-30T09:12:44.000Z",  "event_key": "chat_renamed",  "actor_id": "133321",  "actor_type": "User",  "entity_id": "45678",  "entity_type": "Chat",  "details": { "old_name": "Проект", "new_name": "Проект Альфа" },  "ip_address": "192.168.1.100",  "user_agent": "Pachca/3.60.0 (co.staply.pachca; build:15; iOS 18.5.0)"}
Идентификаторы верхнего уровня (actor_id, entity_id) приходят строками, а внутри details — числами. Это разные представления одного и того же идентификатора, приводите их к одному типу перед сравнением.

Поля ip_address и user_agent заполняются из HTTP-запроса, в котором произошло действие. У событий, которые пишет сервер сам, без запроса пользователя — например, завершение видеозвонка по таймауту — оба поля приходят как null.

Типы событий

string
Тип аудит-события
Возможные значения

Что приходит в деталях

Состав details зависит от типа события. События, которых нет в таблице, приходят с пустым объектом: вся информация о них уже есть в actor_id и entity_id.

Тип событияПоля details
user_updatedchanged_attrs — список изменённых полей. context — присутствует со значением sso_login, если профиль обновился автоматически при входе через SSO
user_role_changednew_company_role, previous_company_role, initiator_id
user_chat_joininviter_id
user_chat_leave, user_added_to_tag, user_removed_from_taginitiator_id
chat_renamedold_name, new_name
chat_permission_changedpublic_access
tag_created, tag_deletedname
tag_added_to_chatchat_id, tag_name
tag_removed_from_chatchat_id
access_token_created, access_token_updated, access_token_destroyscopes
bot_deleted, bot_token_recreatedbot_id, actor_id
bot_scopes_updatedadded_scopes, removed_scopes
bot_webhook_settings_updatedchanges — объект, где ключ это имя настройки, а значение содержит previous и new
bot_oauth_client_updatedclient_id, changes — объект, где ключ это имя параметра клиента, а значение содержит previous и new
oauth_authorization_grantedclient_id, scopes
oauth_authorization_revokedclient_id, revoked_tokens_count
kms_encrypt, kms_decryptchat_id, message_id, reason
dlp_violation_detecteddlp_rule_id, dlp_rule_name, message_id, chat_id, user_id, action_message, conditions_matched
search_users_api, search_chats_api, search_messages_apisearch_type, query_present, cursor_present, limit, filters
video_call_startedchat_id, started_message_id
video_call_finishedchat_id, started_message_id, duration, max_members_count
video_call_recording_readychat_id, started_message_id, recording_id, file_id, duration, size

Полные схемы с типами и описанием каждого поля — в разделе «Ответ» на странице метода GETЖурнал аудита событий, в поле details.

Фильтры

Все параметры фильтрации необязательны и комбинируются между собой.

ПараметрЧто отбирает
start_time, end_timeПериод по времени события, границы включительно
event_keyОдин тип события за запрос. Чтобы собрать несколько типов, сделайте несколько запросов
actor_id, actor_typeКто выполнил действие
entity_id, entity_typeНад каким объектом

Пагинация и слежение за новыми событиями

Метод отдаёт записи от новых к старым и использует курсорную пагинацию: limit до 50 записей за запрос, cursor из meta.paginate.next_page для следующей страницы.

Для регулярной выгрузки в SIEM удобнее курсор meta.paginate.prev_page: он указывает на начало списка, и запрос с ним возвращает только те события, которые появились после предыдущей выгрузки. Сохраняйте prev_page между запусками, вместо того чтобы каждый раз перебирать журнал с начала.

Примеры использования

Получение всех событий входа в систему за определенный период
# Добавьте --all для автоматической пагинацииpachca security list \  --start-time=2025-05-01T00:00:00Z \  --end-time=2025-05-02T00:00:00Z \  --event-key=user_login \  --limit=50 \  --json \  --token YOUR_ACCESS_TOKEN
Получение всех событий, связанных с конкретным пользователем
# Добавьте --all для автоматической пагинацииpachca security list \  --start-time=2025-05-01T00:00:00Z \  --end-time=2025-05-02T00:00:00Z \  --actor-id=133321 \  --actor-type=User \  --json \  --token YOUR_ACCESS_TOKEN
Получение всех изменений прав доступа к чатам
# Добавьте --all для автоматической пагинацииpachca security list \  --start-time=2025-05-01T00:00:00Z \  --end-time=2025-05-08T00:00:00Z \  --event-key=chat_permission_changed \  --json \  --token YOUR_ACCESS_TOKEN

Хранение данных

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

Типичные сценарии использования

  • Расследовать подозрительные попытки входа в систему
  • Отслеживать изменения прав доступа
  • Отслеживать действия по удалению сообщений
  • Расследовать изменения ролей пользователей
  • Отслеживать изменения в составе участников чатов
  • Отслеживать срабатывания правил DLP-системы (event_key: "dlp_violation_detected")
  • Составлять отчеты о соответствии требованиям и во время аудита