TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 实战 Kerberos
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装指导
    • 实战 Kerberos
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • 实验室

    • VIEW插件
    • JIRA速查
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Kylin V10系列
    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)
  • 【开启】Kerberos认证

  • 【关闭】Kerberos认证

  • 其他优化技巧

  • 踩坑合集

  • 实战技巧

    • Knox 接入 Trino web-ui 解决方案
      • 一、问题背景:Kerberos 开启后 Trino Web UI 发生了什么变化
      • 二、关于浏览器直连 Kerberos Web UI 的现实限制
        • 一)主机名的硬性要求
        • 二)客户端维护成本过高
      • 三、统一思路:通过 Knox 代理 Trino Web UI
      • 四、Trino 当前端口与访问现状分析
      • 五、Trino 侧配置调整(Kerberos + HTTPS)
        • 一)PEM 证书准备
        • 二)config.properties 核心配置
      • 六、Knox 侧配置:信任 Trino HTTPS
        • 一)gateway-site.xml
        • 二)Topology 中新增 Trino UI Service
      • 七、【关键步骤】构建 truststore 与 Credential Store
        • 一)导入 Trino 证书
        • 二)创建 alias
      • 八、通过 Knox 访问 Trino Web UI
      • 九、Trino 474 与 Knox 2.1.0 的适配说明
    • [开启Kerberos]-Trino启动-配置模板
    • [Knox适配]-Trino-474-转发规则魔改
  • 其他技巧

  • 组件安装-Kerberos
  • 实战技巧
JaneTTR
2025-12-22
目录

Knox 接入 Trino web-ui 解决方案

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

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

笔记

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

  • 认证方式由 FORM → KERBEROS

  • Web UI 强制依赖 SPNEGO

  • 通信协议通常同时升级为 HTTPS

237329493b8046af31bbe661d4c8379c

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

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

理论上,浏览器并非完全无法访问 Kerberos Web UI。 只要在客户端安装 MIT Kerberos,并对浏览器进行 SPNEGO 相关配置,访问是可行的。

0114db3192216f78931d5f57b821ad97

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

# 一)主机名的硬性要求

  • 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)
1
  • 浏览器仅访问 Knox
  • Kerberos 认证逻辑由 Knox 承担
  • Trino 仍保持 Kerberos + HTTPS 的安全形态

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

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

67090afe4c3ed3fc71eed79e398680ef

b9dd19701198e3712a52425c3009f05f

可以明确:

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

当直接访问:

https://dev1:8443
1

2ab6c3acfcc57f3bf97e474c57df2c5b

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

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

# 一)PEM 证书准备

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

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

96ec1c34ab98dfd779b0c3b465192ecc

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

笔记

PEM 生成过程可参考:

Trino启动-缺失PEM证书处理 (opens new window)

# 二)config.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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

说明

http-server.process-forwarded=true 在 Knox 场景下非常关键,用于正确处理反向代理带来的 Header 信息。

笔记

Ambari启动服务时,会自动渲染配置文件,生产环境下我们如何修改呢?可以参考阅读

适用于生产—— Trino启动-配置模板

# 六、Knox 侧配置:信任 Trino HTTPS

# 一)gateway-site.xml

9decc8865b06117d9dcf0ff038ff7434

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
1
2
3

# 二)Topology 中新增 Trino UI Service

67db2a206ed74c51f8ecfaabeb736e86

90589790999eaf1b1791e9686a1657bc


<service>
    <role>TRINOUI</role>
    <url>http://dev1:8380</url>
</service>
1
2
3
4
5

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

# 一)导入 Trino 证书

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
1
2
3
4
5
6
7

# 二)创建 alias

sudo -u knox /usr/bigtop/current/knox-server/bin/knoxcli.sh create-alias \
  trino-httpclient-truststore-pwd --cluster __gateway --value "$MASTER"
1
2

查看:

sudo -u knox /usr/bigtop/current/knox-server/bin/knoxcli.sh list-alias \
  --cluster __gateway
1
2

3143e81b5c05ad641c99e7b9b6c09586

温馨提示

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

# 八、通过 Knox 访问 Trino Web UI

021a4a8373ea4d9aa78ac6884cdd09c0

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

fc4ad0e7218ff96f6646368ed48da623

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

当前使用的 Trino 版本为 474,而 Knox 2.1.0 默认并未内置 Trino 的 UI 资源与定义。 image-20251223164544352 因此需要额外进行适配,包括:

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

image-20251223164517434

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

#Ambari#Knox#Trino#Kerberos#SPNEGO#HTTPS#WebUI#JKS#Credential Store
Kerberos 客户端模板渲染异常处理
[开启Kerberos]-Trino启动-配置模板

← Kerberos 客户端模板渲染异常处理 [开启Kerberos]-Trino启动-配置模板→

最近更新
01
xmlsectool 依赖缺失问题解析
12-24
02
webhdfs-test 依赖收敛冲突问题处理
12-24
03
Invalid keystore format 问题处理
12-24
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式