使用 LDAP 进行身份验证和访问控制

了解如何使用 LDAP 验证人员身份并管理他们对数据的访问。

身份验证和访问控制对于确保正确的人员可以访问他们需要的数据,并且只有正确的人员可以访问这些数据至关重要。本教程将向您展示如何将 Metabase 连接到 LDAP 服务器进行身份验证,以及如何使用该 LDAP 服务器中的组信息来控制谁可以查看 Metabase 中的表。我们不会尝试教授 LDAP 本身,但我们只假设您了解一些基本概念。

设置 LDAP

Metabase 随附的示例数据库有四张表。People 表包含个人身份信息 (PII),因此我们只希望人力资源部门的人员能够看到它。由于我们公司已经使用 LDAP 进行单点登录 (SSO),因此我们希望从 LDAP 获取有关谁在(和不在)人力资源部门的信息。我们已经在 LDAP 中为公司创建了一个记录。

dn: dc=metabase,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Metabase

我们还有 Farrah(在人力资源部门)和 Rasmus(不在)的记录。

dn: uid=farrah,dc=metabase,dc=com
objectClass: person
objectClass: inetOrgPerson
cn: Farrah Zubin
mail: farrah@example.metabase.com
givenName: Farrah
sn: Zubin
uid: farrah
userPassword: ------

dn: uid=rasmus,dc=metabase,dc=com
objectClass: person
objectClass: inetOrgPerson
cn: Rasmus Verdorff
mail: rasmus@example.metabase.com
givenName: Rasmus
sn: Verdorff
uid: rasmus
userPassword: ------

Farrah 和 Rasmus 的记录没有指定他们属于哪个组。相反,我们需要单独的 Groups 记录用于我们的用户组,并在其下方,一个 groupOfNames 记录,指定 Farrah 和另一位名为 Luis 的员工属于 Human Resources 组。

dn: ou=Groups,dc=metabase,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Groups

dn: cn=Human Resources,ou=Groups,dc=metabase,dc=com
objectClass: top
objectClass: groupOfNames
description: Human Resources
member: uid=farrah,dc=metabase,dc=com
member: uid=luis,dc=metabase,dc=com

如果您正在使用 OpenLDAP 并从头开始设置,您可能需要修改 slapd.conf 配置文件以包含 cosine.schemainetorgperson.schema 模式文件以及 core.schema 才能使其正常工作。

连接到 LDAP

一旦 LDAP 拥有正确的记录,我们就可以使用具有管理员权限的帐户登录 Metabase。我们需要做四件事:

  1. 创建组.
  2. 告知 Metabase 人员可以通过 LDAP 进行身份验证.
  3. 指定该组可以访问哪些表.
  4. 告知 Metabase 从 LDAP 获取组信息.

创建组

首先,我们点击导航侧边栏底部的齿轮图标,选择管理设置 > 人员 > ,然后选择创建组。我们将我们的组命名为“人力资源”,但我们不会在 Metabase 中添加任何人员:我们将依靠 LDAP 来管理成员资格。

身份验证

下一步是告知 Metabase 可以通过 LDAP 验证人员身份。为此,我们点击身份验证,启用 LDAP,然后填写设置以告知 Metabase 在何处可以找到服务器。我们使用的是端口 389 上的本地实例,我们希望 Metabase 使用“Manager”帐户访问 LDAP。我们所有的人都在 metabase.com 下,我们可以使用默认搜索过滤器(该过滤器通过 ID 或电子邮件地址查找人员)找到他们。

此时,人们可以通过 LDAP 登录。为了测试这一点,我们可以打开一个匿名浏览器窗口,以 Rasmus 或 Farrah 的身份登录。他们都还看不到 People 表,因为我们还没有告诉 Metabase 从 LDAP 获取组信息。

权限

接下来,我们转到管理设置 > 权限 > 数据,并禁用对People表的通用访问权限,这样默认情况下人们就无法看到该表。然后我们授予Human Resources组访问权限。(我们关于行和列安全性的文档提供了有关在 Metabase 中管理表访问权限的更多信息。)

组管理

让我们回到管理设置中的 LDAP 配置页面。在底部,我们告诉 Metabase 将组员信息与 LDAP 中的信息同步,并且它可以在 metabase.com 域下找到组。

最后一步是告知 Metabase 其组与 LDAP 组之间的关系。如果点击编辑映射创建映射,我们可以填写标识 LDAP 中组的专有名称——在本例中,是之前创建的人力资源组的 DN。然后我们点击添加,选择 LDAP 组对应的 Metabase 组,并保存更改。

设置步骤很多。为了测试它,我们打开一个匿名窗口并以 Rasmus 身份登录。果然,Rasmus 仍然无法看到 People 表,因为他不是人力资源组的成员。但如果关闭该窗口,再打开一个窗口,并以 Farrah 身份登录,我们就能够看到 People 表。如果返回管理员窗口查看 People,我们可以看到一些图标,这些图标显示了哪些账户来自 LDAP 而不是由 Metabase 管理。

延伸阅读

这有帮助吗?

感谢您的反馈!
分析师每周技巧
获取可行的见解
关于 AI 和数据的资讯,直接发送到您的收件箱
© . This site is unofficial and not affiliated with Metabase, Inc.