基本沙盒:设置行级权限
了解如何根据用户属性设置行级权限。
Metabase 的 专业版和企业版 包含 数据沙盒,此功能可让您对人们在提问时可以查看和使用的行和列进行精细控制。
“沙盒”通常指用于保护或隔离系统一部分的独立环境。Metabase 以类似的方式使用“沙盒”一词,但在这里,独立环境指的是“数据环境”。当管理员授予某个组对表的沙盒访问权限时,他们只能看到该沙盒中包含的行和列。
在本文中,我们将通过一个示例来设置一个 基本沙盒,使用 Metabase 随附的 示例数据库。基本沙盒限制行访问;对于列级权限,请参阅 自定义数据沙盒。
沙盒设置前
您应该备份 您的 Metabase 应用程序数据。此外,您可能希望查看我们的 数据权限指南、集合权限指南,以及我们的 权限概览,以更好地了解沙盒如何与 Metabase 的权限系统配合使用。
我们的场景
我们的目标是确保客户布朗女士只能看到与其账户相关的表格行。
创建客户组
Metabase 使用组来组织权限,因此我们首先需要创建一个组,我们将其命名为“客户”。为此,请点击导航侧边栏中的齿轮图标,然后选择 > 管理员设置 > 人员 > 组。然后选择创建组。
创建账户并添加属性
在我们可以为“客户”组设置沙盒权限之前,我们需要为布朗女士创建一个账户,并为她的账户添加一个属性。在管理员设置 > 人员选项卡中,我们将点击邀请某人,填写姓名和电子邮件字段,并将她添加到“客户”组。
这是沙盒的关键部分:我们将为新用户布朗女士添加一个属性,键为 user_id
,值为 20
。
user_id
这个键没有什么神奇之处:它只是一个变量。我们可以添加任意键值对的属性。我们想要的是使用一个与列对应的键,以及一个与行值对应的键,以便用于我们想要沙盒化的相关表。这样做的目的是将这个属性链接到表中的一个列,以确定布朗女士可以查看哪些行。
为了本演练的目的,我们手动设置此属性,但我们可以使用单点登录服务 (SSO),例如 SAML,以编程方式为用户分配和同步属性。
授予组沙盒访问权限
现在我们有了组,并且该组中至少有一个成员具有属性(布朗女士),我们就可以前往数据权限页面,授予客户组对示例数据库中表的沙盒访问权限。
在左侧边栏中,我们将点击数据库和示例数据库。要授予客户组对Orders
表的沙盒查看数据访问权限,我们只需点击Orders
表,导航到客户行,并在查看数据列中,从下拉菜单中选择沙盒。
沙盒模式将询问“您希望如何为此组的用户过滤此表?”,并提供两个选项:
- 按表中的列进行筛选。
- 使用已保存的问题为此表创建自定义视图。
目前,我们将其设置为按表中的列筛选——使用已保存的问题是更高级的功能,我们在此处讨论。
对于列,我们将选择Orders
表的User ID
列,并将其连接到我们已分配给人员的属性下拉菜单中的user_id
属性。
Metabase 将向我们提供所做更改的摘要:“客户组的用户可以在Orders
表中查看User ID
字段等于user_id
的行。”让我们保存更改并对People
表重复此过程。
- 授予“客户”组对
People
表的沙盒访问权限。 - 选择按列筛选选项。
- 选择
People
表的ID
列,并将其连接到user_id
属性。 - 查看摘要并点击保存。
最后,我们需要点击保存更改按钮以确认我们的更改。
以布朗女士视角检查设置
现在让我们测试一下我们的设置,以确认我们的客户布朗女士只能看到与其用户 ID 关联的订单。我们将在隐身浏览器窗口中打开 Metabase 实例,并以布朗女士的身份登录。当我们导航到Orders
表时,布朗女士将只看到她下的订单(用户 ID 20)。
通过沙盒化表格,我们可以创建单个问题或仪表板,并确保具有沙盒访问权限的人员只能看到与其账户关联的数据。
如果我们将沙盒与交互式嵌入结合使用,我们可以将这些仪表板嵌入到我们的应用程序中,并使用 SSO 将属性传递到嵌入式 Metabase 实例,从而使我们能够为嵌入到我们应用程序中的问题和仪表板提供沙盒访问权限。要了解更多信息,请参阅如何在您的应用程序中嵌入 Metabase 以提供多租户、自助式分析。
沙盒限制
- 沙盒仅适用于 SQL 数据库。
- 一个用户在每个表上只能有一个沙盒,因此只将用户添加到具有沙盒访问权限的单个组中。
- 如果一个组对数据库具有 SQL 查询访问权限,沙盒无法阻止该组中的人员查看这些表中的数据。
- 推而广之,如果该组中的人员可以访问用 SQL 编写的问题,则这些问题不会意识到沙盒访问,并且会向该组中的人员显示所有结果,而不仅仅是该组沙盒中的结果。
了解有关数据沙盒限制的更多信息。
延伸阅读
下一步:自定义沙盒:限制对列的访问
了解如何使用已保存的 SQL 查询向不同的人员显示特定的行和列。