数据权限指南

通过设置随Metabase一起提供的示例数据库的权限来了解Metabase如何处理数据权限。

数据权限指定了不同人群组如何与表和数据库交互。

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

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

在本篇文章中,我们将通过一个示例来讲解如何给予用户查看查询结果和基于示例数据库中的表的创建新查询的权限。

介绍数据权限

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

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

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

  • 调整所有用户的默认权限设置:默认情况下,所有用户无法创建新的查询
  • 赋予Canoes组仅基于订单表的查询构建器创建查询的权限。
  • 赋予Sailboats组仅基于人员产品表的查询构建器创建查询的权限。

配置所有用户组的查询权限

首先,我们需要确认所有用户对数据库的创建查询权限,因为Metabase会授予属于所有组的最宽松级别的访问权限。

您不能从所有用户组中删除任何人,因此如果您给所有用户分配了示例数据库的查询构建器和原生权限,那么这将始终是使用您的Metabase的每个人的最宽松设置,无论您将他们放入哪个组。

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

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

将所有用户设置为对示例数据库的“否”将

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

  • 阻止所有用户从示例数据库的数据创建查询(无论是使用查询构建器还是SQL)。

配置所有用户组的查看数据权限

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

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

创建用户组

让我们创建两个新的组,并命名为独木舟和帆船。

  1. 转到 管理员 > 人员
  2. 选择 组标签
  3. 点击 创建组 并将其命名为“独木舟”。

重复操作创建一个名为“帆船”的组。有关更多详情,请参阅创建组

查看默认数据权限

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

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

新组默认没有创建查询的权限,因为所有用户都没有权限。这允许我们为每个组选择性地添加权限。

对于独木舟和帆船组,我们想要

  • 防止独木舟和帆船组的人员查看任何 数据浏览器 中的示例数据库表。

  • 防止独木舟和帆船组的人员使用查询构建器在示例数据库表上创建问题。

  • 继续允许独木舟和帆船组的人员查看基于示例数据库表构建的问题的结果,只要这些问题保存在与给定组匹配的 集合权限 中。

配置用户组的查询权限

为了给独木舟组权限,使其只能根据 订单 表在查询构建器中创建问题

  1. 转到 管理员 > 权限 >
  2. 选择 独木舟 组。
  3. 点击 示例数据库
  4. 创建查询 列中的 订单 行,从下拉菜单中选择 仅查询构建器
  5. 点击 保存更改
  6. 在出现的模态窗口中,查看您权限更改的影响:独木舟组将具有示例数据库的详细查询创建权限。点击 更改 以确认。

Granting the Canoes group permission to access the Orders table.

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

如果您回到独木舟组的示例数据库权限,您将被带到组级别的数据权限页面。从那里,您会看到 Metabase 在示例数据库的 创建查询 列下自动填充了黄色的 详细 权限。详细的权限表示独木舟组现在可以访问示例数据库中的某些表,但不是所有表。

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

让我们为帆船组配置另一组数据权限,以给帆船组在示例数据库的 PeopleProducts 表上分配 仅查询构建器 权限。

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

以下是我们的当前数据权限所做的

查看表数据

组 \ 表 所有用户 独木舟 帆船
订单
人员
产品

基于表在查询构建器中 创建查询

表 \ 组 所有用户 独木舟 帆船
订单
人员
产品

为属于多个组的用户配置权限

假设船长先生属于独木舟和帆船组。

他有来自三个不同组的三个 创建查询 权限集。

  • 从所有用户组没有示例数据库的查询权限。
  • 从独木舟组获得 订单 表的 仅查询构建器 权限。
  • 仅查询构建器权限,对“人员”和“产品”表从Sailboats组。

由于Metabase对所有组应用最宽松的设置,Captain先生将对订单人员产品表拥有“创建查询:仅查询构建器”的权限。这三个表的“仅查询构建器”权限意味着Captain先生将能够

  • 数据浏览器中查看订单人员产品表。
  • 在查询构建器中使用任何组合的订单人员产品来创建问题。
  • 深入并操作使用订单人员产品的其他人的查询构建器问题,只要这些问题保存在与其集合权限相匹配的集合中。

由于Captain先生不属于任何具有创建查询权限的评论表或样本数据库的组,这将

  • 阻止他使用评论表创建问题。
  • 阻止他与本地查询编辑器进行任何交互(例如,查看、编辑或编写SQL查询)。

由于Captain先生也是拥有对样本数据库可查看权限的All Users组成员,只要他拥有正确的集合权限,他仍然可以查看使用评论表或本地查询编辑器构建的问题的结果。

更多数据权限选项

*仅适用于专业和企业计划

进一步阅读

下一步:使用集合权限

设置具有权限的集合,以帮助人们组织并共享与他们相关的作业。

下一篇文章