从旧权限迁移

在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下有两个组,根据旧的数据访问权限,分别是所有用户组和Foo组。

49中的权限设置

  • 所有用户组对所有Sample数据库中的表都有“无自助服务”数据访问。
  • Foo组对Sample数据库中的表有“沙箱”访问。

在49中的这种数据访问设置将允许人们查看他们有权访问的集合中的问题和仪表板。然而,Foo组的人员将获得沙箱视图的项。在这种情况下,Foo组中的更不宽容的“沙箱”数据访问覆盖了所有用户组中的更宽容的“无自助服务”。

从Metabase 50版本开始,然而,更宽松的设置总是覆盖更严格的设置。因此,为了保持Foo的沙箱不变,我们需要让所有用户组的“查看数据”权限设置比“沙盒”设置更严格。所以,我们需要将所有用户的“查看数据”权限设置为“阻止”。

但如果您仍然希望不在Foo组中的其他所有人能够查看他们可以访问的集合中的项目,您需要创建一个额外的组,Bar,该组包含除Foo组中的所有人以外的所有人,并授予Bar组对示例数据库的“可查看”访问权限。Bar组的“可查看”访问权限将覆盖所有用户组的“阻止”设置,他们将能够查看问题和仪表板。同时,Foo组仍保留其沙箱。以下是您需要为50版本设置的设置摘要

50版本的权限设置

  • 所有用户组在示例数据库的所有表中都被设置为“阻止”。
  • Foo组在示例数据库的所有表中都有“沙盒”的“查看数据”权限。
  • 创建一个新组,Bar,包含所有不在Foo组中的所有用户。将此Bar组的“查看数据”权限设置为示例数据库的“可查看”。

进一步阅读

阅读其他Metabase版本的文档。

想改进这些文档? 提出更改。