Metabase学习教程:权限-6

本文介绍如何通过LDAP实现用户身份验证及数据访问控制。通过设置LDAP服务器和Metabase集成,仅允许特定部门查看敏感数据。

使用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。我们需要做四件事:

创建组.
告诉Metabase用户可以通过LDAP进行身份验证.
指定组可以访问的表.
告诉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管理。

Metabase中文社区

出现 `Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED` 错误的根本原因在于 Java 版本与启动参数的不兼容。此问题通常发生在使用 JDK 8 或更早版本时,却尝试运行需要 JDK 9+ 才能识别的 `--add-opens` 参数。 ### 原因分析 JDK 9 引入了模块化系统(JPMS),而 `--add-opens` 是用于控制模块访问权限的一个 JVM 参数。在 JDK 9 及更高版本中支持该参数,但在 JDK 8 或更早版本中完全不被识别,因此会导致 JVM 启动失败[^2]。 ### 解决方法 #### 方法一:升级 JDK 版本 确保你使用的 JDK 版本为 9 或以上,以支持 JPMS 模块系统及相关的 JVM 参数。 - 下载并安装 [最新 JDK](https://openjdk.java.net/)(如 OpenJDK 17)。 - 更新环境变量 `JAVA_HOME` 和 `PATH` 指向新的 JDK 安装目录。 - 验证安装: ```bash java -version javac -version ``` #### 方法:删除或禁用 `--add-opens` 参数 如果你无法升级 JDK,或者你的项目依赖于 JDK 8(例如 Spring Boot 2.x 或旧版 Tomcat),那么必须从 VM 启动参数中移除所有 `--add-opens` 相关设置。 - **检查 IDE 的 VM options**:在 IntelliJ IDEA 或 Eclipse 中,找到 Run/Debug Configurations,并删除类似 `--add-opens=java.base/java.lang=ALL-UNNAMED` 的参数。 - **检查脚本文件**:如 `setenv.sh`、`catalina.sh` 或 `startup.sh` 等启动脚本中是否设置了 `JAVA_OPTS` 或 `CATALINA_OPTS`,将其清除: ```bash JAVA_OPTS="" CATALINA_OPTS="" ``` - **检查 Metabase 启动命令**:如果通过命令行启动 Metabase,请确保没有手动添加此类参数。 #### 方法三:降级 Tomcat 版本 Tomcat 10 及以上版本基于 Jakarta EE 9,将 `javax.*` 包重命名为 `jakarta.*`,导致与旧项目的兼容性问题。如果你的应用依赖 `javax.*`,建议回退到 Tomcat 9 以避免类路径冲突和不必要的模块参数注入。 - 下载 [Tomcat 9](https://tomcat.apache.org/download-90.cgi) - 替换当前 Tomcat 安装目录并重新配置环境变量 #### 方法四:清理缓存与重启 IDE 有时 IDE 内部缓存可能导致旧参数残留,执行以下操作: - 清理 Tomcat 缓存目录(如 `IntelliJ IDEA` 自动生成的 `tomcat` 文件夹) - 删除 `.idea/modules.xml` 和 `.iml` 文件后重新导入项目 - 重启 IDE 并重新配置运行配置 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值