带有 Trino 模拟和 LDAP 的超集

Superset with Trino Impersonation and LDAP

我有一个配置为使用 LDAP 的 Trino 集群,我想使用 Superset 连接到它。

Trino 集群使用带有自签名证书的 HTTPS

我设法将 Superset 配置为使用 LDAP,这不是问题所在。 我还通过以下配置设法查询了 Trino:

sqlalchemy URI: trino://myuser:mypassword@trino_server:8443, 安全额外配置:{"connect_args": {"verify": false}}

问题来了:在安全选项卡下有一个复选框,上面写着“模拟登录用户(Presto、Trino、Hive 和 GSheets)” .我选中了该框,我仍然使用在 sqlalchemy URI 中配置的用户“myuser”而不是登录用户执行 运行 查询。

我正在使用 Superset 版本 1.3.2

有人知道怎么解决吗?

有两个组件可以让用户模拟与 Trino 和 Superset 一起工作:

  1. 支持使用 Trino 模拟用户的 Superset 版本。

这是在 1.3.0 中正式添加的,既然您使用的是 1.3.2,那应该不是问题。

  1. 一个支持用户模拟的Trino客户端。

据我所知,目前与 Superset 一起连接到 Trino 的唯一 Python 客户端是 sqlalchemy-trino。在 0.4.0 之前,我找不到针对用户模拟所做的任何特定更改,但我已经使用旧的 0.3.0 版本进行了此操作。

可能还有其他一些可能会阻止用户模拟工作的可能性,但可能性较小:

  1. 确保所有容器都安装了 sqlalchemy-trino 的工作版本。这取决于您如何添加 Python 要求,但我相信我已经看到 Superset 容器没有相同依赖项的情况,即 superset_app 容器具有正确的模块,但 superset_worker容器。

  2. 确保发往 Trino 的请求中的 HTTP headers 没有被修改。用户模拟的工作原理是使用基本身份验证进行身份验证,但模拟在名为 'X-Trino-User' 的 HTTP header 中添加的用户。如果 HTTP header 被删除或更改,则用户模拟将无法按预期工作。

只是想让你知道我设法解决了这个问题。

问题是我将此配置 - {"connect_args": {"verify": false}} 放在“安全”选项卡下的“额外安全”部分,而不是“其他”选项卡下的“引擎参数”部分。