使用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: [email protected]
givenName: Farrah
sn: Zubin
uid: farrah
userPassword: ------

dn: uid=rasmus,dc=metabase,dc=com
objectClass: person
objectClass: inetOrgPerson
cn: Rasmus Verdorff
mail: [email protected]
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的身份登录。由于我们还没有告诉Metabase从LDAP获取组信息,所以他们两个都看不到人员表。

权限

接下来,我们转到管理员设置 > 权限 > 数据,禁用对人员表的通用访问,这样人们默认情况下就无法看到该表。然后我们授予人力资源组的访问权限。(有关在Metabase中管理表访问的更多信息,请参阅这篇文章关于沙盒。)

组管理

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

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

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

进一步阅读