Встраивание Metabase-дашбордов в веб-приложение: signed embedding

Пользователи уходят из продукта за отчётами в отдельные панели — данные расползаются, а доступы теряют контроль. Мы настраиваем подписанное встраивание аналитики под ключ: отчёты открываются прямо в интерфейсе и только у тех, кому они положены. Доля отказов в доступе падает, а вопрос «где посмотреть цифры» закрывается в один клик.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Встраивание Metabase-дашбордов в веб-приложение: signed embedding
Простой
от 1 дня до 3 дней
Часто задаваемые вопросы

Почему встроенные отчёты раскрывают данные: разбор signed embedding

Публичная ссылка на отчёт — быстрый способ показать аналитику и самый короткий путь к утечке данных из дашбордов. Адрес не проверяет, кто его открыл: он оседает в истории браузера, в пересланном письме, в логах прокси и в поисковом индексе. Один раз отправленный в общий чат, он отдаёт выгрузку с маржой, клиентской базой или динамикой продаж.

Общие учётные записи дают тот же результат другим путём. Когда отдел ходит в один логин, права на дашборд перестают что-либо ограничивать: все видят все отчёты, а в журналах остаётся безликая запись. Разграничить доступ к аналитике по ролям, регионам или клиентам в такой схеме нельзя, и при разборе инцидента непонятно, кто именно открывал данные.

Подписанный доступ (signed embedding) закрывает обе дыры. Сервер приложения формирует ссылку на отчёт в момент запроса, добавляет подпись секретным ключом и параметры пользователя — идентификатор, роль, фильтры по его данным. Аналитическая платформа проверяет подпись, отдаёт только разрешённый срез и не хранит пароли ваших пользователей.

Metabase поддерживает этот режим штатно: подпись живёт минуты, фильтры подставляются на стороне приложения, поэтому пересланная ссылка не откроет чужое. Разбираем, как это устроено и что нужно настроить.

Что даёт встраивание аналитики в интерфейс продукта

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

Техническую основу даёт signed embedding: сервер продукта формирует подписанный токен, в который зашиты идентификатор пользователя, доступный ему набор фильтров и срок жизни. Подпись проверяется на стороне сервиса аналитики, поэтому подменить параметры в браузере нельзя. Разграничение по строкам данных задаётся тем же токеном — клиент видит только свои срезы, и это не требует отдельной копии дашборда под каждого.

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

Снижение ручных выгрузок измеряется просто: доля запросов «пришлите отчёт» в поддержку и доля срезов, которые до сих пор собирают в таблицы. Когда нужная выборка строится в интерфейсе за пару секунд, аналитик перестаёт быть посредником между данными и решением, а клиент получает аналитику как часть продукта, а не как отдельную услугу по запросу.

Способы встраивания аналитики: где нужен signed embedding

Выбор между способами встраивания отчётов определяется не удобством разработчика, а тем, кому мы отдаём данные и насколько динамичны фильтры. Публичный дашборд живёт по постоянной ссылке и не знает, кто его открыл. Постоянная встроенная сессия показывает всем одну и ту же картину внутри интерфейса. Подписанная ссылка на отчёт (signed embedding) формируется на стороне приложения под конкретного пользователя и несёт фильтры внутри себя.

Вариант Когда подходит Ограничения
Публичный дашборд Открытая отчётность, демонстрации, витрины без персональных данных Нет разграничения доступа, фильтры зашиты в сам дашборд
Постоянная встроенная сессия Внутренний портал, где все смотрят одни и те же агрегаты Один набор прав на всех, параметры нельзя задать на лету
Подписанная ссылка на отчёт Клиентские кабинеты, выборки по конкретному пользователю или контрагенту Подпись считает сервер, срок жизни ссылки нужно ограничивать

Что стоит за выбором

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

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

Этапы работ: от аудита источников до выкладки в продуктив

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

  1. Аудит источников данных. Сверяем, откуда берутся цифры: схема таблиц, частота обновления, часовые пояса, правила агрегации. Результат — карта метрик и перечень расхождений, которые закрываем до встраивания.

  2. Схема доступа. Разводим, что видит клиент, менеджер и администратор: сопоставление ролей продукта с группами отчётов и построчные фильтры по идентификатору аккаунта.

  3. Настройка signed embedding. В Metabase подпись собирается на сервере, секретный ключ в разметку не попадает; в неё зашиваем параметры фильтрации и срок жизни ссылки, чтобы через чужой аккаунт не открылись данные соседа.

  4. Встраивание в интерфейс. Адрес и параметры отчёта приходят из бэкенда, состояния загрузки и ошибок обрабатываются средствами продукта, права проверяются до отрисовки.

  5. Проверка на стенде. Прогоняем сценарии: гость без сессии, чужой идентификатор, истёкшая подпись, недоступный источник. Замеряем время открытия отчёта и поведение при отказах.

  6. Выкладка в продуктив и передача регламентов. Порядок обновления отчётов, ротация ключа подписи, действия при недоступности источника — фиксируем в документе, который остаётся вашей команде.

Каждый этап заканчивается проверяемым артефактом: карта метрик, схема прав, конфигурация отчётов, результаты прогона. Так путь от «дашборд открывается» до «показателям можно верить» становится предсказуемым.

Что передаём на руки: конфигурации, схемы и регламенты

Подписанное встраивание (signed embedding) заканчивается не запуском панели, а пакетом артефактов: по ним ваша команда сможет менять отчёты, роли и фильтры без обращения к нам. Всё лежит в репозитории рядом с кодом приложения и проходит проверку вместе с ним.

  • Конфигурации подключения — среда, источник данных, перечень встроенных панелей, ключ подписи и порядок его ротации.
  • Схема интеграции — как приложение собирает подписанный запрос, где проверяются права пользователя и что происходит при отказе.
  • Политики доступа — соответствие ролей приложения фильтрам в отчётах: кто и какие строки данных видит.
  • Документация по аналитике — модели, источники, расписания обновления и владелец каждой витрины.
  • Инструкция для поддержки — типовые сбои: просроченная подпись, пустой фильтр, недоступный источник — и порядок действий по каждому.
  • Регламент изменений — как добавить панель или параметр, не ломая уже встроенные представления.

Отдельно фиксируем матрицу «роль — панель — фильтр»: она снимает большинство вопросов на приёмке. Передачу ведём на демонстрационном контуре — ваша команда сама добавляет отчёт и меняет права, мы сверяем результат и дополняем документацию по факту.

Кейс: сократили долю отказов доступа к дашбордам

Клиент — платформа с личным кабинетом: у каждого заказчика своя аналитика, и дашборды должны открываться прямо в интерфейсе, без второго входа. Изначально отчётность жила в отдельном контуре Metabase: менеджер вручную создавал учётную запись, настраивал права и отправлял клиенту логин отдельным письмом. Выдача доступа занимала от нескольких часов до двух суток, а в поддержку шли однотипные обращения — «дашборд не открывается», «снова просит пароль», «вижу показатели другого клиента».

Мы перевели встраивание на signed embedding: сервер приложения формирует подписанный токен, в котором зашиты идентификатор клиента, его роль, набор фильтров и короткий срок жизни, чтобы ссылку нельзя было переслать и переиспользовать. Дашборд отдаётся внутри кабинета без логина и пароля, а параметры не подделать через адресную строку — подпись проверяется на стороне сервиса аналитики, и любая правка делает токен недействительным.

Метрики до и после

Показатель До После
Выдача доступа новому клиенту от нескольких часов до двух суток автоматически при входе в кабинет
Доля обращений в поддержку по доступам около двух третей всех обращений единичные, связанные с настройкой ролей
Отказы доступа: истёкший пароль, чужой профиль воспроизводились постоянно не возникают по построению
Подключение нового клиента ручная работа менеджера в админке одна запись в конфигурации

Что это дало

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

Чем подписанная ссылка отличается от публичной?

Публичная ссылка не содержит подписи: адрес — это и есть доступ. Сервер отдаёт данные любому, кто её открыл, а срок жизни определяется только тем, когда кто-то вспомнит её выключить. Привязки к пользователю нет: параметры если и есть, то прямо в адресе, и их легко подменить.

Подписанная ссылка (Metabase signed embedding) — это токен на конкретного пользователя и конкретную карточку. Внутри — идентификатор дашборда, набор параметров доступа и время истечения; подпись закрытым ключом не даёт подменить их в адресной строке. Срок жизни задаём явно: от минуты на разовую отгрузку до нескольких часов на рабочий экран.

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

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

Технические сомнения и ограничения подхода

Сомнения вокруг подписанного встраивания (signed embedding) обычно одни и те же: не откроется ли доступ к данным через чужой интерфейс, увидит ли каждый клиент только свои строки и что будет с аналитикой, когда дашборд, собранный в Metabase, начнёт жить отдельно от приложения.

Устроено это так: подпись формируется на сервере приложения, а не в браузере, поэтому секрет не покидает бэкенд. А что именно попадает в подпись — идентификатор дашборда, фильтры по клиенту, срок жизни, — определяет безопасность встраивания.

Клиент подправит параметры в адресной строке и увидит чужие данные?

Подпись считается по всему набору параметров: изменение дашборда, фильтра или срока делает её недействительной, и сервер аналитики отклоняет запрос. Фильтрация данных задаётся на нашей стороне в момент выдачи ссылки, а редактируемым остаётся только то, что мы явно разрешили.

Ссылку перешлют третьему лицу?

Подписанная ссылка живёт минуты и привязана к конкретным параметрам — после истечения срока сервер вернёт отказ, а не данные. При необходимости мы привязываем выдачу к сессии пользователя в приложении, и ссылка не работает в отрыве от авторизации.

Кто отвечает за дашборды после запуска и что подход не закрывает?

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

Обсудим вашу задачу встраивания аналитики

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

  • Перечень дашбордов и вопросов, которые они закрывают: какие показатели смотрит руководитель, какие — клиент в личном кабинете.
  • Модель доступа: список ролей, правила видимости, есть ли разделение по клиентам и по какому полю режется выборка.
  • Источники данных: откуда приходят витрины, как часто обновляются, допустимая задержка между событием и графиком.
  • Авторизация в приложении: где выдаётся сессия и в какой момент удобно формировать подписанный токен (signed embedding) с учётом прав пользователя.
  • Места встраивания: отдельный раздел аналитики, карточка клиента, вкладка в админке — с учётом вёрстки и адаптива.
  • Окружения и эксплуатация: сколько контуров, кто владелец, как обновляем дашборды и что делаем при смене ключа.

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

Опишите задачу — какой продукт, какие пользователи, к какой дате нужен результат. Вернёмся с оценкой и планом.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1141
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060