模拟权限

模拟访问仅适用于专业版企业版计划(包括自托管和Metabase云服务)。

目前,模拟访问仅适用于PostgreSQL、Redshift和Snowflake。

本页介绍了称为模拟的查看数据权限级别。

模拟访问允许管理员将“外包”查看数据权限给数据库中的角色。管理员可以将用户属性与数据库定义的角色及其权限相关联。如果某人所在的组中其查看数据权限设置为模拟,则该人将能够根据授予角色的权限查看和查询数据。

设置连接模拟

**为了使Redshift数据库上的模拟工作,Metabase用于连接到您的Redshift数据库的用户帐户必须是超级用户,因为Metabase需要能够运行SET SESSION AUTHORIZATION命令,该命令只能由数据库超级用户运行。

为了使模拟访问工作,您首先需要在数据库中为Metabase设置要模拟的角色,然后配置Metabase在人们查看或查询数据时模拟这些角色。

在您的数据库中设置角色

  1. 创建一个新角色(在Redshift中,这将是一个新用户)。
  2. 授予该角色权限。

有关如何在数据库中创建新角色以及如何授予角色权限的确切方法,您需要查阅数据库的文档。我们还有一些关于用户、角色和权限的文档,可以帮助您入门。

在您的Metabase中设置模拟并指定用户属性

  1. 创建一个新组或选择一个现有组。

  2. 将该组中的人员分配一个用户属性您将使用此用户属性将该组中的人员与您在数据库中创建的角色相关联。例如,如果您在数据库中创建了一个名为sales的角色,并授予其对销售团队相关的表子集的访问权限,您将添加一个名为db_role(或您想称谓的属性)的用户属性,并将值sales分配给该人的db_role。属性的值(本例中的sales)应与数据库中角色的名称匹配。仅某些数据库强制实施大小写敏感性,因此您可能需要确保属性值和数据库中的角色完全匹配。

  3. 将该组的模拟访问权限应用到该组。按Cmd/Ctrl + K调出命令面板。搜索权限。或者转到管理员设置 > 权限 > 数据

  4. 选择您要设置权限的数据库。

  5. 找到您要将其与创建的数据库角色相关联的组。在该组的查看数据设置下,选择模拟

  6. 从下拉菜单中,选择您添加的映射到您想要该组在查询数据库时使用的角色的用户属性。

  7. 保存您的更改。

具有数据模拟访问权限的组中的成员不一定享有相同的权限

Metabase将使用每个用户属性中指定的任何角色。例如,如果您选择db_role属性进行模拟,一个人的db_role可能是sales,另一个人的可能是engineering,或者映射到您数据库中有效角色的其他任何值。

使用模拟来设置行级SQL访问

您可以使用模拟来授予人们访问原生/SQL编辑器的权限,同时根据特定的数据库角色限制他们对数据的访问。不仅仅是表级访问,还可以是行级访问——或者您在数据库中定义该角色的访问方式。实际上,您可以使用模拟来设置类似于数据沙盒的访问权限,同时让人们使用SQL编辑器来查询这些数据。区别在于,您需要在Metabase中设置数据沙盒之前,通过数据库中角色的权限来设置行级安全性。

如果您想授予对数据库中某些但不是所有模式或表的SQL访问权限,可以在您的数据库中创建一个额外的角色,该角色只包括那些表的子集——甚至特定的行级访问——然后使用Metabase的模拟功能将用户属性与该角色关联。本质上,Metabase会获取用户属性,并将其作为字符串传递给数据库在Metabase执行查询之前执行的SET ROLEUSE ROLE命令。

连接模拟不适用于Metabase管理员组的人员,因为他们的更宽松的权限优先。

有关如何设置的更多信息,请参阅使用模拟来获取行级权限(GUI和SQL查询)

Metabase为其所有组中的数据提供最宽松的访问权限

因此,如果某人在两个组中具有对同一数据库的不同权限

  • 红色组具有受限制的访问权限,限制了他们可以看到的内容。
  • 蓝色组将“查看数据”设置为“可以查看”,将“创建查询”设置为“查询构建器和原生”。

红色组更宽松的访问权限将覆盖模拟访问权限。

进一步阅读

阅读其他Metabase版本的文档。

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