使用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.schema
和inetorgperson.schema
模式文件,以及core.schema
,以便使此设置生效。
连接到LDAP
一旦LDAP有了正确的记录,我们就可以使用具有管理员权限的账户登录Metabase。我们需要做四件事
创建一个组
首先,我们点击导航侧边栏底部的齿轮图标,选择管理设置 > 人员 > 组,然后选择创建一个组。我们将我们的组命名为“人力资源”,但我们不会在这里的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管理。