Вбудовування 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
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1374
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060