教程:在 Metabase 中设置数据权限

通过设置 Metabase 随附的示例数据库上的权限,了解 Metabase 如何处理数据权限。

正在查找有关数据权限的文档?请参阅 文档:数据权限

数据权限指定不同 用户组 如何与表和数据库进行交互。

对于每个数据库、模式和表,您可以指定

  • 谁可以看到查询结果;
  • 谁可以创建新查询(以及如何创建);
  • 谁可以下载结果;
  • 谁可以编辑元数据。

在本文中,我们将通过一个示例,介绍如何授予用户查看查询结果的权限,以及基于 示例数据库 中的表创建新查询的权限。

数据权限介绍

首先,导航到 **管理** > **权限**,然后选择 **数据库** > **示例数据库**。这将带我们进入数据库级别的数据权限页面。如果您想为示例数据库中的每个配置权限,可以单击左侧的表名。

The data permissions page for the Sample Database before any changes are made.

数据权限必须为用户组配置。Metabase 附带两个默认用户组:管理员和所有用户。我们将创建两个新的示例用户组,分别命名为 Canoes 和 Sailboats,并设置数据权限以

  • 调整“所有用户”的默认权限设置:默认情况下,所有用户都无法创建新查询
  • 授予 Canoes 用户组仅基于 Orders 表在查询构建器中创建查询的权限。
  • 授予 Sailboats 用户组仅基于 PeopleProducts 表在查询构建器中创建查询的权限。

为“所有用户”用户组配置查询权限

首先,我们将确认“所有用户”对数据库的 **创建查询** 权限,因为 Metabase 会授予某人所属的所有用户组中最宽松的访问级别。

您无法将任何人从“所有用户”用户组中移除,因此,如果您授予“所有用户”对示例数据库的 **查询构建器和原生** 权限,那么无论您将用户分到哪个其他用户组,这都将是使用您 Metabase 的所有用户的最宽松设置。

  1. 转到 **管理** > **权限** > **数据库** > **示例数据库**。
  2. 在“所有用户”行和“创建查询”列中,单击下拉菜单。
  3. 确认其设置为 **否**(或设置为“否”)。
  4. 单击出现在顶部的横幅中的 **保存更改**。

Selecting the No query permissions for the All Users group to the Sample Database.

为“所有用户”选择“否”访问示例数据库将

  • 阻止所有用户在 数据浏览器 中看到示例数据库的任何数据。

  • 阻止所有用户基于示例数据库中的数据创建查询(包括查询构建器和 SQL)。

为“所有用户”用户组配置查看数据权限

“所有用户”用户组对示例数据库具有“**查看数据**”设置为“可以查看”的权限。“可以查看”意味着所有用户将能够查看与您的“所有用户”用户组的 集合权限 相匹配的集合中的查询和仪表板的结果。如果您撤销了查询权限,“所有用户”将无法看到底层数据。

我们将保持这些权限不变。

创建用户组

让我们创建两个新用户组,并称它们为 Canoes 和 Sailboats。

  1. 转到 **管理** > **人员**。
  2. 选择 **用户组选项卡**。
  3. 单击 **创建用户组** 并将其命名为“Canoes”。

重复此操作以创建名为“Sailboats”的用户组。有关更多详细信息,请参阅 创建用户组

查看默认数据权限

转到 **管理** > **权限** > **数据库** 并选择 **示例数据库**,以查看我们的新用户组。

The data permissions page with our newly added Canoes and Sailboats groups.

新用户组默认对创建查询具有 **否** 权限,因为“所有用户”具有 **否** 权限。这使我们可以有选择地为每个用户组添加权限。

对于 Canoes 和 Sailboats 用户组,我们希望

  • 阻止 Canoes 和 Sailboats 中的用户在 数据浏览器 中查看任何示例数据库表。

  • 阻止 Canoes 和 Sailboats 中的用户使用查询构建器对示例数据库表创建查询。

  • 继续允许 Canoes 和 Sailboats 中的用户查看基于示例数据库中表的查询结果,只要这些查询保存在与给定用户组的 集合权限 相匹配的集合中。

配置用户组的查询权限

为 Canoes 用户组授予仅基于 Orders 表在查询构建器中创建查询的权限

  1. 转到 **管理** > **权限** > **用户组**。
  2. 选择 **Canoes** 用户组。
  3. 单击 **示例数据库**。
  4. 在“Orders”行、“Create queries”列中,从下拉菜单中选择 **仅查询构建器**。
  5. 单击 **保存更改**。
  6. 在出现的模态框中,查看您的权限更改效果:Canoes 用户组将对示例数据库具有细粒度的查询创建权限。单击 **更改** 以确认。

Granting the Canoes group permission to access the Orders table.

您会注意到,您只能在表级别选择 **仅查询构建器** 权限,而不能选择 **查询构建器和原生**。如果您想允许用户创建原生查询(例如,SQL),则需要在数据库级别进行指定,而不是在表级别。Metabase 不会解析您的 SQL,因此它不知道查询中使用哪些表,也无法限制对特定表的访问。

如果您回到 Canoes 用户组的示例数据库权限,您将被带到用户组级别的数据权限页面。从那里,您将看到 Metabase 在“Create queries”列的“Sample Database”下自动填充了黄色的 **细粒度** 权限。**细粒度** 权限表示 Canoes 用户组现在可以访问示例数据库中的部分(但不是全部)表。

The Canoes group now has granular access to the Sample Database.

让我们为 Sailboats 用户组配置另一组数据权限,以授予 Sailboats 对示例数据库中的 PeopleProducts 表 **仅查询构建器** 权限。

The data permissions page after the Sailboats group has been granted access to the People and Products tables.

以下是当前数据权限的作用:

表的 **查看数据**

用户组 \ 表 所有用户 Canoes Sailboats
Orders
人员
产品

基于表的查询构建器中的 **创建查询**

表 \ 用户组 所有用户 Canoes Sailboats
Orders
人员
产品

配置多用户组用户的权限

假设 Captain 先生属于 Canoes 和 Sailboats 两个用户组。

他有三个来自不同用户组的 **创建查询** 权限正在应用:

  • 来自“所有用户”用户组的对示例数据库的 **否** 查询权限。
  • 来自 Canoes 用户组的对 Orders 表的 **仅查询构建器** 权限。
  • 来自 Sailboats 用户组的对 PeopleProducts 表的 **仅查询构建器** 权限。

由于 Metabase 会应用所有用户组中最宽松的设置,Captain 先生将拥有对 OrdersPeopleProducts 表的“创建查询:仅查询构建器”权限。“仅查询构建器”权限意味着 Captain 先生将能够

  • 在 **数据浏览器** 中查看 OrdersPeopleProducts 表。
  • 在查询构建器中使用 OrdersPeopleProducts 的任何组合来创建查询。
  • 钻取并操作其他用户使用 OrdersPeopleProducts 创建的查询构建器查询,只要这些查询保存在与他的 集合权限 相匹配的集合中。

Captain 先生不属于任何对 Reviews 表或示例数据库拥有“创建查询”权限的用户组,这将

  • 阻止他使用 Reviews 表创建查询。
  • 阻止他与原生查询编辑器进行任何交互(例如,查看、编辑或编写 SQL 查询)。

由于 Captain 先生也属于具有示例数据库 **可以查看** 权限的“所有用户”用户组,只要他拥有正确的集合权限,他仍然可以查看使用 Reviews 表或原生查询编辑器构建的查询结果。

更多数据权限选项

* 仅在 Pro 和 Enterprise 套餐 中可用。

延伸阅读

这有帮助吗?

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