从旧版权限迁移

在 Metabase 50 中,我们彻底修改了数据权限系统,使其更具表现力且更易于理解。本页解释了更改的内容以及原因。

简而言之:我们将旧的“数据访问”设置拆分为两个设置:查看数据创建查询。您的数据权限可能看起来不同,但访问权限没有改变。

Metabase 如何迁移您的权限

如果您是从 Metabase 50 或更早版本迁移,Metabase 将(有一个例外)自动将您的权限更新到新系统。虽然群组权限会略有不同(并且我们希望更容易理解),但您的群组将拥有与以前相同的访问级别。

我们为何更新权限系统

原始的“数据访问”权限设置包含五个访问级别:无限制、模拟、精细、无自助服务和阻止。这些级别不在同一轴线上。它们在一个轴线上组合起来,即您是否可以查看数据,而在另一个轴线上,即您是否可以查询该数据。这创建了一个二维设置

  • 无自助服务。 限制群组使用查询构建器创建或编辑问题。
  • 沙盒和阻止。 限制对底层数据的查看查询构建器访问。

将两个轴(查询 + 查看)混合到一个权限设置可能会产生意外行为。例如,通过将访问权限从“沙盒化”更改为“无自助服务”,管理员可能会认为他们将限制该群组对数据的访问。但在这种情况下,如果该群组还可以访问包含现有模型、问题或仪表盘的集合,则该群组可能会看到更多数据。

我们对数据权限的全面修改实现了什么

  • 查看访问查询访问 分割为两个权限维度。这种分割允许管理员例如在有或没有查询构建器访问权限的情况下对表进行沙盒化(以前不可能将沙盒化配置为仅查看)。
  • 使权限更易于理解。更严格的权限永远不会比不太严格的权限提供更多访问权限。

从旧权限到新权限的迁移表

如果您对 Metabase 的考古感兴趣,此表仅供参考。Metabase 会为您处理迁移。

以前,Metabase 有数据访问原生查询编辑。现在,Metabase 具有 查看数据创建查询。以下是 Metabase 如何将每个配对迁移到新系统的。

数据访问 原生查询编辑 > 查看数据 创建查询
无限制 > 可以查看 查询构建器和原生代码
无限制 > 可以查看 查询构建器
无自助服务 > 可以查看
已阻止 > 已阻止
模拟 > 模拟 查询构建器和原生代码
模拟 > 模拟 查询构建器
无限制(精细) > 可以查看 查询构建器(精细)
沙盒化(精细) > 沙盒化(精细) 查询构建器(精细)
无自助服务(精细) > 可以查看 否(精细)

无自助服务(已弃用) 查看访问级别

如果您在任何群组的查看数据中看到 无自助服务(已弃用) 权限设置,您应该在某个时候手动更改它。

对于任何将其查看数据访问权限设置为 无自助服务(已弃用) 的群组,您都需要将查看数据权限更改为新的选项之一

如果您不采取任何措施,Metabase 将在未来的版本中将任何查看数据访问权限设置为 无自助服务(已弃用) 的群组更改为 已阻止。我们默认为最严格的“已阻止”查看数据访问权限,以防止对数据的任何意外访问。但是,此更改为“已阻止”可能会导致人们失去对他们以前有权访问的数据的访问权限。

我们为何无法手动迁移此设置

在旧的权限系统中,考虑一下多个群组中的人员。

  • 无限制数据访问意味着来自您的其他群组的阻止、沙盒化或模拟不会影响您。
  • 无自助服务数据访问意味着来自您的其他群组的阻止、沙盒化或模拟影响您。

假设您在旧权限框架中具有以下群组

  群组 A 群组 B 群组 C 群组 D 群组 E
数据访问 无限制 无自助服务 已阻止 沙盒化 模拟

如果您是群组 A 和群组 C、D 或 E 之一的成员,您将拥有对数据的完全、无限制的访问权限,没有应用任何阻止、沙盒化或模拟。

如果您是群组 B 和群组 C、D 或 E 之一的成员,您将拥有对数据的有限访问权限:已阻止、沙盒化或模拟。

我们可以像这样迁移权限

  群组 A 群组 B 群组 C 群组 D 群组 E
查看数据 可以查看 ? 已阻止 沙盒化 模拟
创建查询 仅限查询构建器 仅限查询构建器 仅限查询构建器

我们无法真正决定群组 B 的“查看数据”应该是什么。如果我们将其切换为可以查看,则该人员将不会受到其其他群组中的“已阻止”、“沙盒化”或“模拟”设置的影响。如果我们将其设置为已阻止,他们可能会失去您认为他们应该有权访问的数据的访问权限。因此,我们创建了一个临时设置 无自助服务(旧版) 以管理这种(暂时的)尴尬过渡。

对于某些权限设置,其中群组具有“无自助服务”和“沙盒化”数据访问权限,您可能需要创建一个新群组来复制版本 50 或更高版本中的设置

在 Metabase 49 中,(更宽松的)“无自助服务”数据访问权限无法覆盖(不太宽松的)“沙盒化”访问权限,您可以用难以理解的方式设置 Metabase 49。

在 Metabase 50 版本开始启用的新权限系统中,总是以更宽松的设置覆盖限制性更强的设置。这种一致的行为使得权限易于理解。然而,这项改进的一个后果是,为了在升级到 Metabase 50 时重新创建某些权限设置,您可能需要创建一个额外的组。

例如,假设在 Metabase 49 的旧数据访问权限下,您有两个组:All users 组和 Foo 组。

49 版本中的权限设置

  • All users 组对 Sample Database 中的所有表具有“禁止自助服务”数据访问权限。
  • Foo 组对 Sample Database 中的表具有“沙盒”访问权限。

在 49 版本中,此数据访问设置允许用户查看他们有权访问的集合中的问题和仪表板。但是,Foo 组中的用户将获得项目的沙盒视图。在这种情况下,Foo 组中限制性*更*强的“沙盒”数据访问权限覆盖了 All users 组中限制性较*弱*的“禁止自助服务”权限。

但是,从 Metabase 50 版本开始,总是以更宽松的设置覆盖限制性更强的设置。因此,为了保持 Foo 组的沙盒完整,我们需要将 All users 组的“查看数据”权限设置得比“沙盒”设置*更*严格。因此,我们需要将 All users 组的“查看数据”权限设置为“阻止”。

但是,如果您仍然希望 Foo 组以外的所有其他人能够查看他们有权访问的集合中的项目,则需要创建一个额外的组 Bar,其中包含*除* Foo 组人员之外的所有人,并授予 Bar 组对 Sample database 的“可以查看”访问权限。Bar 组的“可以查看”访问权限将覆盖 All Users 组的“阻止”设置,并且他们将能够查看问题和仪表板。同时,Foo 组仍然拥有其沙盒。以下是您需要的 50 版本设置摘要

50 版本中的权限设置

  • All users 组对 Sample database 中的所有表设置为“阻止”。
  • Foo 组对 Sample database 中的所有表具有“沙盒”的“查看数据”权限。
  • 创建一个新组 Bar,其中包含 All users 组中的所有人,但不包括 Foo 组中的人员。将此 Bar 组的“查看数据”权限设置为 Sample database 的“可以查看”。

延伸阅读

阅读其他Metabase 版本的文档。