8.Metabase数据访问权限管理

完成了对用户的创建后,在实际的生产环境中,数据库中的数据总是会带有一些敏感信息的,不适合直接暴漏给每一个用户。所以,需要接下来需要为用户配置数据访问的权限。对用户组的权限设置也只是管理员拥有的权限。

Metabase中的数据访问权限不是直接面向用户的,而是面向用户组的。所以,直接对用户组配置数据访问权限或者SQL查询权限后,该组中的所有成员都拥有一样的权力。

Metabase的数据访问权限管理主要从两个维度:数据访问权限和SQL查询权限。Metabase的数据访问权限的管理可以细粒度到数据表,即可以设置用户组的数据库访问权限,也可以更细化到某个数据表的访问权限。

8.1 权限浏览

进入Admin Panel,点击Permissions,进入了数据权限设置主页,如下图所示:

数据权限设置主页.png

数据访问权限展示,使用的是常用的角色二维矩阵格式展示的。左边的Databases,显示的是当前的Metabase系统连接的数据源,点击View tables可以浏览数据库中的数据表。右边显示的是当前系统中包含的全部用户组,在该用户组下可以设置DATA ACCESSSQL QUERIES

8.2 权限修改

权限修改又分为两个部分:数据库级别和数据级别的访问权限修改。

8.2.1 数据库层的访问权限管理

在数据库级别,可以设置两种权限:数据访问权限和SQL查询权限。设置权限很简单,直接点击单元格中的X号或者√号即可。修改完成后,点击右上角的Save Changes即可。如下图:

权限开通方法.png

8.2.1.1 数据访问权限——Data Access

数据库层的数据访问权限主要分为三种:

  • Unrestricted Access:不受限制的访问权限,该功能可以访问当前数据库中的所有数据表的数据,甚至包括未来数据库中新增的表的数据;

  • Limited Access: 有限制的数据访问权限。管理员可以开放数据库中某些表给当前用户组。当然了,以后数据库中新增的数据表,该用户组也是没有访问权限的,需要单独开通。另外,该功能和仪表盘,问题等都是联动的,会有影响的。

  • No Access:顾名思义就是没有任何的数据库访问权限,不能查看数据库中的表。不能查看基于该库该表的有关Questions和仪表盘等。一个新的用户组被创建成功后,默认的就是没有任何数据库访问权限。

8.2.1.2 SQL查询权限——SQL QUERIES

在前面已经讲过,用户分析数据的方式包含了查询引擎和SQL编辑器。该权限同样对应着三种情况:

  • Write(and read) SQL queries: 该种权限下,可以使用SQL编辑器完成问题查询。也可以浏览所有的基于SQL 查询实现的问题查询和仪表盘等。但是,该权限要求的数据库层的权限是——Unrestricted Access。因为SQL查询基本是需要进行跨表交互查询的。该权限也是最高权限,可以理解为没有任何的限制。

  • Read SQL queries: 该种权限相比较上一种,缺少了使用SQL编辑器创建和编辑问题的功能。但是可以查看的权限是一模一样的。对数据库层的访问权限可以是Limit Access级别的。

  • No SQL query access:没有SQL编辑、创建、查看权限。是最低级别的权限。一个新的用户组被创建成功后,默认的就是没有SQL 查询任何权限。

8.2.2 数据层的访问权限管理

进入数据层的访问权限设置可以有两种方式:一种是通过点击浏览数据库的数据表的方式,会直接跳转到数据层的访问权限管理;另外一种是通过对用户组设置数据库成的Limit Access访问权限时,也会跳入到同样的界面。虽然都可以进入同一个界面,但是表示的意思是不一样的。如下图:

数据层访问权限挂你.png

在该界面上可以设置数据表面向的用户组的访问权限。数据库模式就是数据库中的表和关系。如果发生了权限的修改,修改之后一定要保存,否则不会生效,如下图是保存修改之后的弹出提示:

权限修改保存提示.png

如果一个用户组开始的时候在数据库层是无限制的访问,然而,在数据层又限制了某个数据表的访问,那么,最终该用户组在该数据库的访问权限会自动变成有限制的访问了,这个道理应该不难理解。

8.3 生产建议

需要注意的是,在上一章节中,介绍Metabase用户管理的时候,有提到一个用户可以隶属于多个用户组。这里假如存在用户Derick,隶属于A、B两个用户组,A用户组可以访问数据表T的数据,而B用户组不可以访问数据表T的数据,那么最终Derick还是拥有访问数据表T的数据。即以拥有为原则。

基于上面的原理,每一个用户被创建的时候,都是属于All Users用户组的,所以,系统在运维的过程中,需要首先设置好All Users的数据库访问权限。在实际的生产过程中,正确的做法是管理员移除掉该用户组的数据库访问权限和SQL QUERIES权限。这也是最为安全的做法。

在对数据库层进行访问权限的管理的时候,最好使用无限制的访问权限,此时就要求将数据表进行合理的分库了。

8.4 注意事项

在Pulses中,用户的权限是有一点不同的。在发送Email Cards的时候,它是不受用户的数据访问权限限制的。

在权限管理中,同样可以设置集合管理权限。但是集合的权限设置不是在Admin Panel中设置的,而是在浏览一个集合的时候,点击其右上方的按钮配置的。关于集合的权限设置,会在集合介绍一章中有详细说明。

综合前一章中,Metabase对用户的管理和本章介绍的Metabase对数据访问权限的管理,可以看出Metabase在数据分析层的多租户管理做的非常好。

推荐阅读更多精彩内容