多租户自助式分析

将整个 Metabase 应用(包括查询生成器)嵌入,以提供安全、个性化的数据访问。

那么,您正在考虑将 Metabase 嵌入到您的应用程序中,以为您的客户提供分析功能。这会如何运作呢?

在本文中,我们将首先介绍您将为客户提供的目标体验,然后讨论 Metabase 提供的相关功能,以及它们如何协同工作以提供自助式分析。

目标客户体验

让我们从客户角度来看最终的分析体验是什么样的。

参与者

  • 您的公司:Megafauna Analytics
  • 客户 1:MammothCo
  • 客户 2:RhinoCo

我们正在构建的内容

您是一家 B2B 公司 Megafauna Analytics,您正在通过将 Metabase 嵌入到您的应用程序中来为客户提供报告。

这是客户体验的概述:来自 MammothCo 的 Woolly 登录到您的应用程序 megafauna-analytics.com,然后导航到您为 MammothCo 设置的分析页面。在那里,Woolly 会看到一系列屏幕,其中包含展示 MammothCo 订单、交易以及您为 MammothCo 提供的其他数据的精美仪表板和图表,所有这些都带有您的—Megafauna 的—品牌颜色。

Woolly 不仅仅是查看静态仪表板,他还可以点击图表上绘制的数据并 向下钻取。例如,他可以放大特定一周的交易,或者点击图表中的一个条形图,调出列出构成该条形图的未聚合行的表格。

An example of drilling through a question in Metabase using the Sample Database included with your installation.

Woolly 还可以使用查询生成器提出自己的问题。

The query builder in Metabase allows people to explore their data and create new questions. They can join data, filter it, summarize it, sort it, use custom expressions, and more.

设置

为了给 Woolly 提供上述体验,我们需要进行以下设置

  • 将 Metabase 嵌入到您的应用程序中:为嵌入的图表和仪表板添加向下钻取功能,整理集合,公开预填充了数据集的查询生成器,甚至公开整个 Metabase 界面。
  • 白标(品牌化):使 Metabase 的图表和仪表板与您的应用程序的外观和感觉相匹配,确保它们与您的(Megafauna 的)品牌颜色相匹配。
  • 单点登录(SSO):使您的应用程序和 Metabase 能够就用户身份和他们可以看到的数据达成一致,将 megafauna-analytics.com 中的某个用户与您嵌入的 Metabase 中的帐户关联起来。
  • 权限管理:允许人们探索他们的数据,而不会看到其他人的数据。

我们将在下面的部分中详细介绍每个功能。

将 Metabase 嵌入到您的应用程序中

有几种方法可以处理将 Metabase 嵌入到您的应用程序中。为了获得完整的自助服务,您将需要使用嵌入式分析 JS 或 SDK。但这里有一个选项概述。

非常简单的选项(甚至可能不完全符合嵌入的定义)。您在 Metabase 中发布一个问题或仪表板,将链接发送给某人,并告诉他们不要共享。

公共嵌入

公共嵌入 公共嵌入 是一个进步,因为链接仍然是公开的,但图表通过嵌入的 iframe 在您的应用程序中可见。

静态嵌入

静态嵌入 的外观与公共嵌入相同,但静态嵌入是通过签名的 JSON Web Token (JWT) 保护的 iframe。使用静态嵌入,您可以创建接受参数并在这些参数的基础上过滤数据的仪表板过滤器。例如,您可以有一个接受用户 ID 的参数化仪表板,因此当该用户登录时,仪表板将仅显示限制到其用户 ID 的数据。换句话说,您可以创建一个通用的用户数据仪表板,任何用户都可以访问,但每个用户只会看到与他们相关的数据。

静态嵌入的主要缺点是人们无法 向下钻取数据 或使用查询生成器,因为 Metabase 不知道该人的数据权限是什么。要链接您应用程序中的帐户和您的 Metabase,我们需要嵌入式分析 JS 或 SDK 以及单点登录。

嵌入式分析 JS

嵌入式分析 JS,结合 SSO 以及行和列安全,实现了自助式报告。与上述更简单的嵌入选项一样,您将在页面上添加一个类似 iframe 的代码片段,这次您可以嵌入任何您想要的 Metabase 屏幕,并具有完整的交互性。结合 SSO 以及行和列安全,您嵌入的 Metabase 将知道 Woolly 是谁,以及他可以看到什么数据,这意味着 Metabase 可以让 Woolly 向下钻取他的数据,而不会看到来自 RhinoCo 用户或其他租户的任何数据。

由于您可以使用完整的 Metabase 应用,因此您可以为 MammothCo 用户提供集合、仪表板和预定义的问题,例如每周交易量。您还可以公开 Metabase 的查询生成器,这将允许 Woolly 等客户根据他们不断变化的数据需求创建自己的问题和仪表板(并使用 Markdown 进行注释)。

请参阅我们关于嵌入式分析 JS 的 文档

嵌入式分析 SDK

它类似于嵌入式分析 JS,但您可以自定义组件的布局并通过插件修改行为。您可以使用 JWT 或 SAML 进行 SSO。缺点是:它比嵌入式分析 JS 工作量更大,并且您的应用程序必须使用 React。

查看我们的 SDK 文档

白标(品牌化)

您可以自定义 Metabase 的外观,以匹配您的应用程序的外观和感觉。更改字体、颜色、徽标等,使其感觉像是您应用程序的自然组成部分。

In the Admin panel, you can change Metabase

单点登录

单点登录(SSO)允许您将应用程序中的用户与 Metabase 中的用户关联起来。通过使用 SSO,您可以避免在应该显示图表的位置出现尴尬的登录屏幕。没有 SSO,用户将登录到您的应用程序,但仍需要登录到您的 Metabase 才能查看单个嵌入式仪表板和图表—这不是理想的用户体验。

假设您在应用程序 megafauna-analytics.com 中设置了一个 MammothCo 用户,其 name: Woolly; user_id: 13。为了与您的 Metabase 同步,您随后将在您的 Metabase 应用程序中为 Woolly 设置一个用户帐户。接下来,您需要将您应用程序中的 Woolly ID megafauna-analytics.com 与您 Metabase 中的 Woolly 帐户关联起来。为此,您可以为 Metabase 中的 Woolly 帐户添加一个属性,以指示 Woolly 在您应用程序中的 user_id13

Add attributes to people in Metabase to coordinate user permissions between your app and your embedded Metabase.

设置 SSO 后,当 Woolly 登录到 megafauna-analytics.com 时,他可以导航到包含嵌入式 Metabase 的页面,Metabase 将知道他是谁,以及他应该拥有什么权限。

查看我们关于 SSO 的文档

权限管理

现在您的 SSO 正在向 Metabase 提供有关谁在使用您的应用程序的详细信息,Metabase 可以利用这些属性来过滤每个人看到的内容,直至具体表的列和行。

您管理权限的方式取决于您存储客户数据的方式

  • 混合存储(所有客户共用一个数据库):您可以使用 行和列安全模拟,以及其他控件。
  • 隔离存储(每个客户一个数据库):您可以使用 数据库路由(此外,还有 Metabase 自带的行和列安全、模拟以及所有其他访问控制工具)。

行和列安全

行和列安全通过根据用户属性过滤所有查询来工作。

例如,如果您的 orders 表包含所有客户订单,您可以根据一个列(例如 user_id)来过滤该表。您可以为 Metabase 中的用户分配一个属性 user_id(并将该属性附加到他们的登录令牌),这样当用户登录并查看 orders 时,他们只会看到 user_id 匹配的行。

Adding row and column security to the Orders table by filtering the orders by the User ID column. Users will only see orders that correspond to their user_id attribute.

请参阅我们关于 行和列安全 的文档。

模拟

模拟允许您将权限“外包”给数据库中的角色。当您希望通过数据库中的角色来管理权限时,请使用模拟,这对于授予人们对表的 SQL 访问权限特别有用。请参阅有关 模拟 的文档。

数据库路由

数据库路由适用于每个客户一个数据库的设置。数据库路由允许您根据登录用户,在一个主数据库(一种模板数据库)上构建单个仪表板,但该仪表板会切换它查询的数据库。请参阅 数据库路由

这有帮助吗?

感谢您的反馈!
订阅新闻通讯
Metabase 的更新和新闻
© . This site is unofficial and not affiliated with Metabase, Inc.