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

了解如何使用 LDAP 进行身份验证并管理对数据的访问。

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

设置 LDAP

Metabase 附带的示例数据库有四个表。 `People` 表包含个人身份信息 (PII),因此我们只想让人力资源部门的人能够查看它。由于我们的公司已经在使用 LDAP 进行单点登录 (SSO),因此我们希望从 LDAP 中获取有关谁在 HR 部门(以及谁不在)的信息。我们已经有一个 LDAP 记录,用于公司

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

我们还有 Farrah(在 HR 部门)和 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.schema` 和 `inetorgperson.schema` schema 文件以及 `core.schema`,以便此功能正常工作。

连接到 LDAP

一旦 LDAP 具有正确的记录,我们就可以使用具有管理员权限的帐户登录 Metabase。我们需要执行四项操作:

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

创建组

首先,我们单击导航侧边栏底部的 **齿轮** 图标,然后选择 **管理员设置** > **人员** > **组**,然后选择 **创建组**。我们将组命名为“Human Resources”,但我们*不会*在此处 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)——在本例中,是我们在前面创建的“Human Resources”组的 DN。然后,我们单击 **添加**,选择 LDAP 组对应的 Metabase 组,并保存我们的更改。

这需要很多设置。要进行测试,让我们打开一个匿名窗口并以 Rasmus 的身份登录。果然,Rasmus 仍然看不到 `People` 表,因为他不是 Human Resources 组的成员。但是,如果我们关闭该窗口,打开另一个窗口,并以 Farrah 的身份登录,我们*可以*看到 `People` 表。如果我们回到管理员窗口并查看 `People` 表,我们可以看到图标,显示哪些帐户来自 LDAP 而不是由 Metabase 管理。

延伸阅读

这有帮助吗?

感谢您的反馈!
订阅新闻通讯
Metabase 的更新和新闻
© . This site is unofficial and not affiliated with Metabase, Inc.