教程:在 Metabase 中设置数据权限
通过在 Metabase 附带的示例数据库上设置权限,了解 Metabase 如何处理数据权限。
正在查找数据权限的文档?请参阅文档:数据权限。
数据权限指定不同的用户组如何与表和数据库进行交互。
对于每个数据库、模式和表,您可以指定
- 谁可以查看问题结果;
- 谁可以创建新问题(以及如何创建);
- 谁可以下载结果;
- 谁可以编辑元数据。
在本文中,我们将通过一个示例来演示如何授予用户查看问题结果和基于示例数据库中的表创建新问题的权限。
数据权限简介
让我们首先导航到管理 > 权限,然后选择数据库 > 示例数据库。这将带我们进入数据库级别的数据权限页面。如果您想为示例数据库中的每个表配置权限,可以点击左侧的表名。
数据权限必须为组配置。Metabase 自带两个默认组:管理员和所有用户。我们将创建两个新的示例组,名为“独木舟”和“帆船”,并设置数据权限以
- 调整“所有用户”的默认权限设置:默认情况下,所有用户将无法创建新问题
- 授予“独木舟”组仅基于
Orders
表在查询构建器中创建问题的权限。 - 授予“帆船”组仅基于
People
和Products
表在查询构建器中创建问题的权限。
为“所有用户”组配置查询权限
首先,我们将确认“所有用户”对数据库的创建查询权限,因为 Metabase 会授予用户所属所有组中最宽松的访问级别。
您无法将任何人从“所有用户”组中移除,所以如果您给予“所有用户”对示例数据库的查询构建器和原生查询权限,那么这将永远是您 Metabase 中所有用户的最宽松设置,无论您将他们放入任何其他组中。
- 前往管理 > 权限 > 数据库 > 示例数据库。
- 点击所有用户行和创建查询列的下拉菜单。
- 确认它设置为否(或将其设置为“否”)。
- 在顶部出现的横幅中点击保存更改。
为“所有用户”对示例数据库选择否将
-
阻止“所有用户”在数据浏览器中看到来自示例数据库的任何数据。
-
阻止“所有用户”从示例数据库的数据创建问题(包括使用查询构建器和 SQL)。
为“所有用户”组配置查看数据权限
“所有用户”组对示例数据库的查看数据权限设置为“可以查看”。“可以查看”意味着“所有用户”将能够查看集合中问题和仪表盘的结果,前提是这些集合的集合权限与“所有用户”组的权限匹配。如果您撤销了查询权限,“所有用户”将无法看到底层数据。
我们将保持这些权限不变。
创建用户组
让我们创建两个新组,分别命名为“独木舟”和“帆船”。
- 前往管理 > 人员。
- 选择组标签页。
- 点击创建组并将其命名为“独木舟”。
重复此操作以创建名为“帆船”的组。更多详情,请参阅创建组。
审查默认数据权限
前往管理 > 权限 > 数据库并选择示例数据库以查看我们的新组
新组默认创建查询的权限为否,因为“所有用户”的权限为否。这使我们可以有选择地为每个组添加权限。
对于“独木舟”和“帆船”组,我们希望
-
阻止“独木舟”和“帆船”组的人员在数据浏览器中查看任何示例数据库的表。
-
阻止“独木舟”和“帆船”组的人员使用查询构建器在示例数据库表之上创建问题。
-
继续允许“独木舟”和“帆船”组的人员查看基于示例数据库中的表构建的问题的结果,前提是这些问题保存在与给定组的集合权限匹配的集合中。
为用户组配置查询权限
要授予“独木舟”组仅基于Orders
表在查询构建器中创建问题的权限
- 前往管理 > 权限 > 组。
- 选择独木舟组。
- 点击示例数据库。
- 在Orders行的创建查询列中,从下拉菜单中选择仅限查询构建器。
- 点击保存更改。
- 在出现的模态框中,审查您的权限更改效果:“独木舟”组将拥有对示例数据库的细粒度查询创建权限。点击更改以确认。
您会注意到,您只能在表上选择仅限查询构建器权限,而不能选择查询构建器和原生查询。如果您想允许人们创建原生查询(例如,使用 SQL),您需要在数据库级别指定,而不是在表级别。Metabase 不会解析您的 SQL,所以它不知道查询中使用了哪些表,因此无法限制对特定表的访问。
如果您返回到“独木舟”组的示例数据库权限,您将被带到组级别的数据权限页面。在那里,您会看到 Metabase 在示例数据库的创建查询列下自动填充了黄色的细粒度权限。细粒度权限表示“独木舟”组现在可以访问示例数据库中的部分而非全部表。
让我们为“帆船”组配置另一套数据权限,以给予“帆船”组对示例数据库中People
和Products
表的仅限查询构建器权限
以下是我们当前数据权限的作用
查看数据对于一个表
组 \ 表 | 所有用户 | 独木舟 | 帆船 |
---|---|---|---|
订单 | |||
人员 | |||
产品 |
基于一个表在查询构建器中创建查询
表 \ 组 | 所有用户 | 独木舟 | 帆船 |
---|---|---|---|
订单 | |||
人员 | |||
产品 |
为一个属于多个组的用户配置权限
假设船长先生同时属于“独木舟”和“帆船”两个组。
他有三套创建查询权限正在从三个不同的组应用
- 来自“所有用户”组的对示例数据库的无查询权限。
- 来自“独木舟”组的对
Orders
表的仅限查询构建器权限。 - 来自“帆船”组的对
People
和Products
表的仅限查询构建器权限。
由于 Metabase 应用所有组中最宽松的设置,船长先生将拥有对Orders
、People
和Products
表的“创建查询:仅限查询构建器”权限。“仅限查询构建器”权限对这三个表意味着船长先生将能够
- 在数据浏览器中看到
Orders
、People
和Products
表 - 在查询构建器中使用
Orders
、People
或Products
的任意组合创建问题。 - 钻取并操作其他人使用
Orders
、People
或Products
创建的查询构建器问题,前提是这些问题保存在与他的集合权限匹配的集合中。
船长先生不属于任何对Reviews
表或示例数据库拥有“创建查询”权限的组,这将
- 阻止他使用
Reviews
表创建问题。 - 阻止他与原生查询编辑器进行任何交互(例如,查看、编辑或编写 SQL 查询)。
由于船长先生也属于“所有用户”组,拥有对示例数据库的可以查看权限,他仍然能够查看使用Reviews
表或原生查询编辑器构建的问题的结果,只要他有正确的集合权限。
更多数据权限选项
* 仅在专业版和企业版计划中可用。