【Ambari开启Kerberos】Knox 接入 Trino web-ui 解决方案

一、问题背景:Kerberos 开启后 Trino Web UI 发生了什么变化

代码已经提交到github:Ttbigdata

未开启 Kerberos 的情况下,Trino Web UI 使用的是传统的 Form 登录模式,浏览器直接访问即可完成认证并进入 UI 页面。

但在 开启 Kerberos 之后,Trino 的 Web UI 行为会发生本质变化:

  • 认证方式由 FORM → KERBEROS
  • Web UI 强制依赖 SPNEGO
  • 通信协议通常同时升级为 HTTPS

此时,浏览器如果直接访问 Trino Web UI,会发现页面无法正常展示,或者直接返回空白页面。

二、关于浏览器直连 Kerberos Web UI 的现实限制

理论上,浏览器并非完全无法访问 Kerberos Web UI。

只要在客户端安装 MIT Kerberos,并对浏览器进行 SPNEGO 相关配置,访问是可行的。

但在实际环境中,这条路径存在明显限制:

一)主机名的硬性要求

  • Ambari / Trino 的主机名必须是 FQDN 形式(a.b.c)
  • 类似 dev1 / dev2 / dev3 这样的短主机名,即使浏览器配置齐全,访问成功率也极低

二)客户端维护成本过高

  • 每个用户都需要安装 Kerberos 客户端
  • 浏览器需要单独配置 SPNEGO 白名单
  • HTTPS 证书信任、跨域、Cookie 策略问题频繁出现

实际结论

浏览器直连 Kerberos Web UI 不适合作为统一访问方案,尤其是在多用户、生产集群环境中。

三、统一思路:通过 Knox 代理 Trino Web UI

在已经部署 Knox 作为统一安全入口的前提下,引入 Knox 代理 Trino Web UI,是一条更可控的路径。

整体访问模型如下:

复制代码
Browser → Knox → Trino (Kerberos + HTTPS)
  • 浏览器仅访问 Knox
  • Kerberos 认证逻辑由 Knox 承担
  • Trino 仍保持 Kerberos + HTTPS 的安全形态

四、Trino 当前端口与访问现状分析

从 Trino 的服务配置中可以看到,其同时暴露了 HTTP 与 HTTPS 两个端口:

可以明确:

  • HTTP 端口:8380
  • HTTPS 端口:8443

当直接访问:

复制代码
https://dev1:8443

页面呈现为空白,这并不是端口不可达,而是 当前访问主体未通过 Kerberos 认证

五、Trino 侧配置调整(Kerberos + HTTPS)

一)PEM 证书准备

开启 Trino HTTPS 后,必须准备完整的证书文件:

  • trino.crt
  • trino.key
  • trino.pem

其中 trino.pem 用作 Trino HTTPS 的 keystore。

PEM 生成过程可参考:
Trino启动-缺失PEM证书处理

二)config.properties 核心配置

properties 复制代码
coordinator=true

discovery.uri=http://dev1:8380

http-server.http.port=8380

http-server.https.enabled=true

http-server.https.port=8443
http-server.https.keystore.path=/etc/trino/conf/trino.pem

http-server.https.keystore.key=changeit

http-server.authentication.type=KERBEROS

http-server.authentication.krb5.service-name=HTTP

http-server.authentication.krb5.keytab=/etc/security/keytabs/spnego.service.keytab

http.authentication.krb5.config=/etc/krb5.conf

http-server.process-forwarded=true

http-server.log.path=/var/log/trino/http-request.log

internal-communication.https.required=false

internal-communication.shared-secret=trino

node-scheduler.include-coordinator=true

query.max-memory=2GB

query.max-memory-per-node=1GB

spill-enabled=false

spiller-spill-path=/data/trino/spill

plugin.dir=/usr/bigtop/current/trino/plugins

web-ui.authentication.type=KERBEROS

说明
http-server.process-forwarded=true 在 Knox 场景下非常关键,用于正确处理反向代理带来的 Header 信息。
Ambari启动服务时,会自动渲染配置文件,生产环境下我们如何修改呢?可以参考阅读
适用于生产------ Trino启动-配置模板

六、Knox 侧配置:信任 Trino HTTPS

一)gateway-site.xml

properties 复制代码
gateway.httpclient.truststore.password.alias=trino-httpclient-truststore-pwd
gateway.httpclient.truststore.path=/usr/bigtop/current/knox-server/data/security/keystores/trino-trust.jks
gateway.httpclient.truststore.type=JKS

二)Topology 中新增 Trino UI Service

xml 复制代码
<service>
    <role>TRINOUI</role>
    <url>http://dev1:8380</url>
</service>

七、【关键步骤】构建 truststore 与 Credential Store

一)导入 Trino 证书

bash 复制代码
MASTER=$(sudo -u knox cat /usr/bigtop/current/knox-server/data/security/master)

sudo keytool -importcert -alias trino-dev1 \
  -file /etc/trino/conf/trino.crt \
  -keystore /usr/bigtop/current/knox-server/data/security/keystores/trino-trust.jks \
  -storepass "$MASTER" \
  -noprompt

二)创建 alias

bash 复制代码
sudo -u knox /usr/bigtop/current/knox-server/bin/knoxcli.sh create-alias \
  trino-httpclient-truststore-pwd --cluster __gateway --value "$MASTER"

查看:

bash 复制代码
sudo -u knox /usr/bigtop/current/knox-server/bin/knoxcli.sh list-alias \
  --cluster __gateway

温馨提示

完成所有操作后,需要 重启 knox服务

八、通过 Knox 访问 Trino Web UI

点击 Knox 页面中的 Trino 入口后,即可进入 Trino Web UI:

九、Trino 474 与 Knox 2.1.0 的适配说明

当前使用的 Trino 版本为 474 ,而 Knox 2.1.0 默认并未内置 Trino 的 UI 资源与定义。

因此需要额外进行适配,包括:

  • 增加 Trino UI 图标
  • 补充 Service 定义
  • 调整前端资源路径

适配细节可参考:
Knox 2.1.0 适配 Trino 474

相关推荐
搞科研的小刘选手几秒前
【高届数传感机电会议】第十二届传感器、机电一体化和自动化系统国际学术研讨会(ISSMAS 2026)
运维·人工智能·自动化·控制·传感器·传感·机电
地球资源数据云8 分钟前
1900-2023年中国物种分布点位矢量数据集
大数据·数据结构·数据库·数据仓库·人工智能
菜鸟小码10 分钟前
MapReduce 真正的核心之Shuffle 阶段深度解析:分区、排序、合并与归约
大数据·mapreduce
李景琰22 分钟前
Debian12安装配置Mqtt之EMQX
linux·运维·服务器
SimLine芯见23 分钟前
专为空管环境打造的KVM切换器,满足主备自动化高速无缝切换需求
运维·自动化
Vwms28 分钟前
2026 医药制造 WMS 选型指南:GMP 合规仓储管理系统怎么选
大数据·wms·wms选型
不做无法实现的梦~30 分钟前
PX4 机载电脑 Linux 环境安装、串口、网络、ROS 完整配置
linux·运维·网络
嵌入式×边缘AI:打怪升级日志30 分钟前
嵌入式Linux开发(了解交叉编译工具链的组成)
java·linux·运维
IT界的老黄牛33 分钟前
停电后 Redis 集群两节点起不来:fix 完还报 Bad file format?多部分 AOF 修复的正确姿势
运维·redis·缓存
精益数智工坊34 分钟前
拆解制造业仓库物料管理流程:如何通过标准化仓库物料管理流程解决账实不符难题
大数据·前端·数据库·人工智能·精益工程