使用LDAP进行身份验证和访问控制
了解如何使用LDAP对用户进行身份验证并管理他们对数据的访问。
身份验证和访问控制对于确保正确的人能够访问他们需要的数据至关重要,并且只有合适的人有这个权限。本教程将向您展示如何将Metabase连接到LDAP以及如何使用来自该LDAP服务器的组信息来控制谁可以查看Metabase中的表。我们不会试图教您LDAP本身,但我们只假设您知道一些基本概念。
设置LDAP
Metabase附带的示例数据库有四个表。这个People包含个人识别信息(PII),所以我们只希望Human
Resources部门的人员能够看到它。由于我们的公司已经在使用LDAP进行单点登录(SSO),所以我们想从LDAP中获取有关哪些人是(或不是)HR的信息。我们已经在LDAP中为该公司创建了一个记录:
dn:dc=metabase,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Metabase
我们还有Farrah(在Human
Resources部工作)和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架构文件以及core.schema为了让这个工作。
连接到LDAP
一旦LDAP有了正确的记录,我们就可以使用具有管理员权限的帐户登录到Metabase。我们需要做四件事:
[if !supportLists]1. [endif]创建组.
[if !supportLists]2. [endif]告诉Metabase用户可以通过LDAP进行身份验证.
[if !supportLists]3. [endif]指定组可以访问的表.
[if !supportLists]4. [endif]告诉Metabase从LDAP获取组信息.
创建组
首先,我们点击齿轮图标,然后选择管理员设置>People>组然后选择创建组我们称我们的团队为“Human
Resources”,但我们不会的在Metabase中添加任何人:我们将依赖LDAP来管理成员资格。
鉴定
下一步是告诉Metabase它可以通过LDAP对用户进行身份验证。为此,我们单击身份验证,启用LDAP,然后填写设置以告知Metabase在哪里可以找到服务器。我们在端口389上使用一个本地实例,我们希望Metabase使用“Manager”帐户访问LDAP。我们所有的人都在Metabase.com,我们可以使用默认的搜索过滤器(按ID或电子邮件地址查找人员)来查找他们。
此时,人们可以通过LDAP登录。为了测试这一点,我们可以打开一个匿名浏览器窗口,以Rasmus或Farrah的身份登录。他们两个都看不到人因为我们还没有告诉Metabase从LDAP获取组信息。
权限
接下来,我们去管理员设置>权限>数据并禁用对People,以便用户在默认情况下看不到该表。然后我们授予访问Human
Resources组。(这篇关于沙盒的文章包含有关在Metabase中管理表访问的详细信息。)
集团管理
让我们回到管理员设置。在底部,我们告诉Metabase将组成员身份与LDAP中的信息同步,并且它可以在Metabase.com域。
最后一步是告诉Metabase它的组和LDAP的组是如何相关的。如果我们点击编辑映射和创建映射,我们可以填写在LDAP中标识组的可分辨名称(在本例中,是前面创建的Human Resources组的DN)。然后点击添加,选择LDAP组对应的Metabase组,并保存更改。
这是一个很大的设置。为了测试它,让我们打开一个匿名窗口并以Rasmus的身份登录。果然,拉斯穆斯还是看不见People因为他不是Human Resources部的成员。但是如果我们关闭那个窗口,打开另一个窗口,然后以Farrah的身份登录,我们可以见People。如果我们回到管理员的窗口People,我们可以看到图标,显示谁的帐户来自LDAP,而不是由Metabase管理。