Перейти к содержимому

Сохранённые представления консоли

Модуль consoleviews добавляет в консоль сохранённые представления: именованные снимки состояния представления — тех же фильтров, временных диапазонов и областей, которые консоль кодирует в URL. Они хранятся на сервере отдельно для каждого тенанта, поэтому расследование вроде «неудачные допуски за последние 24 часа» сохраняется после закрытия браузера, доступно оператору с другого компьютера и, если им поделились, открывается всей командой одним щелчком.

Сохранённое представление содержит только параметры: ограниченный по размеру объект JSON (не более 4 КБ) с состоянием URL представления, а также имя, необязательное описание, принципала-владельца и флаг shared. Модуль никогда не хранит результаты запросов, строки журнала или какие-либо данные, которые выбрали бы эти параметры. Загрузка сохранённого представления заново выполняет исходный запрос с собственными разрешениями вызывающего. Консоль рассматривает сохранённые параметры строго как данные.

Владение, общий доступ и разрешённые действия

Заголовок раздела «Владение, общий доступ и разрешённые действия»
  • Создание/обновление — любой участник с consoleviews:view:write (уровень editor). Представление принадлежит создавшему его принципалу; редактировать его может только владелец.
  • Видимость — владелец всегда видит собственные представления. Представление с флагом shared видят все участники тенанта с consoleviews:view:read (уровень viewer). Недоступное вам представление отвечает 404, а не 403, чтобы его существование не раскрывалось.
  • Удаление — владелец либо роль admin/owner тенанта для любого представления (это позволяет очищать представления, оставшиеся после ухода пользователей).
  • Лимиты — 200 представлений на владельца и 2000 на тенанта. При достижении лимита операция отклоняется с понятным сообщением. (feature, owner, name) — естественный ключ: повторное имя для той же функции получает ответ 409.

Каждое создание, обновление и удаление записывается в журнал аудита тенанта с указанием реального принципала. Записанные метаданные идентифицируют представление (функцию, имя и флаг общего доступа), но никогда не содержат его параметров.

МетодМаршрутРазрешение
GET/v1/m/consoleviews/views?feature_id=consoleviews:view:read
GET/v1/m/consoleviews/views/{id}consoleviews:view:read
POST/v1/m/consoleviews/viewsconsoleviews:view:write
PUT/v1/m/consoleviews/views/{id}consoleviews:view:write
DELETE/v1/m/consoleviews/views/{id}consoleviews:view:write

Маршруты модулей входят в поверхность beta — см. справочник маршрутов модулей.

  • Сервер проверяет, что feature_id представления является slug, но не фиксирует список функций консоли. Источником истины служит реестр консоли, который меняется с каждым выпуском; консоль игнорирует сохранённые представления для больше не существующих функций.
  • Общее представление передаёт параметры, а не результаты. Два оператора, открывшие одно представление, могут увидеть разные данные, если их разрешения различаются. Это предусмотрено: общий доступ никогда не расширяет доступ к данным.
  • Сохранённые представления — удобство консоли, а не доказательства. Сами они находятся вне цепочки журнала; доказательствами становятся только события их жизненного цикла.
  • Оператор, ограниченный рабочей областью, может читать сохранённые представления, но не может создавать, редактировать или удалять их. Движок грантов с областями deny-closed запрещает ограниченным принципалам записи на уровне коллекции, а общетенантное переопределение удаления для admin явно исключает ограниченных администраторов.
  • При конкурентной записи в Postgres лимиты на владельца и тенанта мягкие (небольшое превышение ограничено); повторяющиеся имена всегда жёстко отклоняются.