多租戶自助式分析
嵌入整個 Metabase 應用程式(包括查詢產生器),讓人們安全地取得個人化的資料存取權。
所以,您正在考慮將 Metabase 嵌入您的應用程式中,以便為您的客戶提供分析功能。這會如何運作呢?
在本文中,我們將
- 從您將為客戶交付的目標體驗開始。
- 簡要介紹為多個租戶提供自助式報告的挑戰。
- 討論 Metabase 提供的相關功能,以及它們如何協同運作來解決這些問題。
目標使用者體驗
讓我們先從客戶的角度,看看完成的分析體驗會是什麼樣子。
參與者
- 您的公司:Megafauna Analytics
- 客戶 1:MammothCo
- 客戶 2:RhinoCo
故事
您是一家 B2B 公司 Megafauna Analytics,您正在使用 Metabase,透過將 Metabase 嵌入 megafauna-analytics.com 上的應用程式,為您的客戶提供報告功能。
以下是客戶體驗的概觀:MammothCo 的 Woolly 登入您的應用程式 megafauna-analytics.com,然後導覽至您為 MammothCo 設定的分析頁面。在那裡,Woolly 會看到一系列精美的儀表板和圖表,顯示 MammothCo 的訂單、交易以及您提供的其他沙盒資料,所有這些都採用您 Megafauna 的品牌顏色。
Woolly 不僅可以檢視靜態儀表板,還可以點擊圖表上繪製的資料並鑽取。例如,他可以放大查看特定一週的交易,或點擊圖表中的長條以拉出一個表格,列出構成該長條的未彙總列。
此外,透過 Metabase 的圖形化查詢產生器,Woolly 可以剖析和切割他的 MammothCo 資料。他可以使用編輯器的強大查詢功能,以及自訂運算式進行更複雜的查詢,以找到您的儀表板未解決之問題的答案 — 所有這些都不會看到來自 RhinoCo 或其他客戶的任何資料。
您也可以自訂當人們點擊儀表板上的圖表時會發生的情況,方法是設定自訂目的地,例如另一個儀表板、問題或 URL。您也可以設定圖表來更新篩選器。
這就是故事。我們如何達成目標?
建立多租戶自助式分析的挑戰
透過多租戶,我們指的是共用應用程式執行個體,其中多組人員(例如 MammothCo 或 RhinoCo 等群組)享有不同的權限存取權,因此也存取不同的資料。而透過自助式,我們指的是應用程式除了管理員提供的報告外,還應該讓使用者能夠建立自己的報告。
在我們深入探討 Metabase 如何交付多租戶自助式分析之前,我們先找出我們需要解決的問題。為了讓 Woolly 獲得上述體驗,我們需要
- 以某種方式將 Metabase 嵌入您的應用程式 (megafauna-analytics.com) 中,讓使用者可以存取查詢產生器和鑽取功能。
- 讓儀表板和圖表符合您的 (Megafauna) 品牌顏色。
- 將 megafauna-analytics.com 中的特定使用者連結到您嵌入式 Metabase 執行個體中的使用者。
- 將使用者可以看到的資料限制為他們獲准檢視的列和欄。
讓我們看看 Metabase 如何解決這些問題。
設定多租戶自助式報告所需的四個功能
我們將詳細介紹每個功能,但以下是它們的概觀
- 互動式嵌入:將鑽取功能新增至嵌入式圖表和儀表板、策劃集合、公開預先填入資料集的查詢產生器,甚至公開整個 Metabase 介面。
- 白標 (品牌化):讓 Metabase 圖表和儀表板符合您應用程式的外觀與風格。
- 單一登入 (SSO):讓您的應用程式和 Metabase 就使用者身分及其可看到的資料達成一致。
- 資料沙盒:讓您的使用者探索他們的資料,而不會看到其他人的資料。
完整 Metabase 應用程式嵌入
雖然我們的重點將放在互動式嵌入,但有幾種方法可以處理在您的應用程式中嵌入 Metabase。而且由於「嵌入」是一個過於常用的術語,因此值得了解您可以使用 Metabase 在應用程式中嵌入圖表和儀表板的不同方式。
讓我們先從開放原始碼選項開始
Metabase 嵌入選項
公開連結嵌入
最簡單的選項(而且它甚至可能不符合技術上的嵌入資格)。您在 Metabase 執行個體中建立一個問題或儀表板,將連結傳送給某人,並告訴他們不要分享。
公開嵌入
公開嵌入更進一步,因為連結仍然是公開的,但圖表透過嵌入式 iframe 在您的應用程式中可見。
靜態嵌入
這看起來與公開嵌入相同,但它是一個由簽署的 JSON Web Token (JWT) 保護的 iframe。若要設定靜態嵌入,您需要在前端使用一個 iframe,其中包含指向問題或儀表板的連結,以及後端的伺服器程式碼來建立權杖。然後,您可以使用使用者 ID 簽署權杖,並透過參數化執行一些很酷的操作。
例如,您可以在儀表板上建立篩選器,這些篩選器可以接受參數,並根據這些參數篩選儀表板中的資料。您可以擁有一個參數化儀表板,它接受使用者 ID,因此當該使用者登入時,儀表板將僅顯示限制為其使用者 ID 的使用者資料。換句話說,您可以為使用者資料建立一個通用儀表板,任何使用者都可以存取,但每個個別使用者都只會看到與他們相關的資料。
安全嵌入的最大缺點是人們無法鑽取資料,因為 Metabase 不知道使用者擁有哪些資料權限。Metabase 可能知道使用者是 user_id: 13
,但使用者 13 與 Metabase 中的使用者帳戶之間沒有關聯(因此使用者可以存取的群組和權限也無關聯)。若要連結您的應用程式和 Metabase 執行個體中的帳戶,我們需要互動式嵌入和單一登入。
如果您想更深入了解上述選項,請查看我們的嵌入文件。如需程式碼範例,請參閱我們的嵌入參考應用程式儲存庫,其中包含使用公開和靜態嵌入的應用程式。
互動式嵌入
互動式嵌入與 SSO 和資料沙盒結合使用,使自助式報告成為可能。與上述更簡單的嵌入選項一樣,您仍然使用 iframe 來嵌入 Metabase,只是這次您可以嵌入您想要的任何 Metabase 畫面,並具有完整的互動性。結合 SSO 和資料沙盒,您嵌入式 Metabase 執行個體將知道 Woolly 是誰以及他可以檢視哪些資料,這表示 Metabase 可以讓 Woolly 鑽取他的資料,而不會看到來自 RhinoCo 使用者或其他租戶的任何資料。
而且由於您可以隨意使用完整的 Metabase 應用程式,因此您可以為 MammothCo 使用者提供集合、儀表板和預先定義的問題,例如每週交易。您也可以公開 Metabase 的查詢產生器,這將允許像 Woolly 這樣的客戶根據他們不斷變化的資料需求,建立自己的問題和儀表板(以及使用 Markdown 註解)。
請參閱我們的互動式嵌入文件以了解更多資訊,或查看互動式嵌入的程式碼範例。
白標 (品牌化)
Metabase 的外觀自訂功能可讓您變更字型、顏色、標誌等,讓您嵌入式 Metabase 看起來和感覺起來像是您應用程式的一部分。您可以設定最多 24 種顏色,並從各種預先載入的字型中選擇,或上傳您自己的字型。請查看我們關於外觀自訂的文件。
單一登入
單一登入 (SSO) 可讓您將應用程式中的使用者與 Metabase 中的使用者建立關聯。透過使用 SSO,您可以避免圖表應有的尷尬登入畫面。如果沒有 SSO,使用者將登入您的應用程式,但仍然必須登入您的 Metabase 執行個體才能檢視個別的嵌入式儀表板和圖表 — 使用者體驗不盡理想。
SSO 如何與 Metabase 協同運作
假設您在您的應用程式 megafauna-analytics.com 中為 MammothCo 使用者設定了 name: Woolly; user_id: 13
。若要與您的 Metabase 執行個體協調,您接著會(手動或以程式方式)為 Woolly 在您的 Metabase 應用程式中設定使用者帳戶。接下來,您需要將 Woolly 在您的應用程式 megafauna-analytics.com 中的 ID 與 Woolly 在您的 Metabase 執行個體中的帳戶建立關聯。若要執行此操作,您只需將屬性新增至 Woolly 在 Metabase 中的帳戶,以指示 Woolly 在您的應用程式中的 user_id
為 13
。
設定 SSO 後,當 Woolly 登入 megafauna-analytics.com 時,會產生一個簽署的權杖,證明他的身分以及您在 Metabase 執行個體中為他設定的屬性。當 Woolly 導覽至包含嵌入式 Metabase 圖表或儀表板的頁面時,Metabase 可以從附加到權杖的 user_id
屬性中得知 Woolly 是使用者 13,並且應該只能看到您提供給該使用者 ID 的資料。
這是基本概念,而且有幾種設定方法
對於內部分析,公司通常使用 SAML、LDAP 或 Google 登入。對於外部分析,公司通常偏好(而且我們推薦)JWT SSO。
您希望如何處理身份驗證取決於您,但您必須設定 SSO,以便協調您的應用程式和 Metabase 實例之間的權限。若要瞭解更多資訊,請參閱以下文件:
資料沙箱
現在您的 SSO 正在為 Metabase 提供關於您使用者的詳細資訊,這些屬性可以用來篩選每位使用者可以看到的內容,細緻到特定表格的欄和列。這就是資料沙箱,它是一個強大的工具,因此我們只能概述其運作方式。
例如,如果您的 orders
表格包含所有客戶訂單,您可以根據某個欄位(例如 user_id
)來篩選該表格。您可以在 Metabase 中為您的使用者指派一個屬性 user_id
(並將該屬性附加到他們的登入權杖),這樣當使用者登入並查看 orders
時,他們只會看到與其 user_id
相符的資料列。
如果您需要更精細的控制,您可以使用已儲存的問題來建立表格的自訂視圖。例如,假設您不希望任何使用者看到 orders
表格中的特定欄位。在這種情況下,您可以透過在 Metabase 中提問並儲存問題,來建立省略相關欄位的該表格自訂視圖。
若要瞭解更多關於沙箱的資訊,請查看
重點回顧
我們希望本文能讓您對如何使用嵌入在您的 Web 應用程式中的多租戶 Metabase 實例,來提供自助式報表有一個概括的了解。以下是一個快速摘要,其中包含我們文件的連結,如果您想瞭解關於特定主題的更多資訊。
- 在您的應用程式中放入 iframe,並嵌入完整的 Metabase 應用程式。
- 使用白標來品牌化您的 Metabase 實例。
- 設定使用 SAML 或 JWT 的 SSO,將您應用程式中的使用者與您嵌入的 Metabase 實例連結起來,並將使用者屬性附加到已簽署的權杖。
- 使用這些屬性來沙箱化資料,以確保使用者只能看到他們有權限檢視的資料。
如上所述,互動式嵌入對於大多數公司來說是一個很好的選擇,但它並不是提供自助式報表的唯一選擇。請參閱如何使用 Metabase 向您的客戶提供分析,以概括了解您可以使用 Metabase 的不同方式,從簡單的設定(無需嵌入)到提供驚人客製化程度的設定,找到適合您組織的方法。
下一步:品牌化您的 Metabase
自訂您的 Metabase 名稱、調色盤、標誌、favicon 和首頁。