Spark/Flink 的 Web UI 不能裸奔:多租户平台的鉴权反向代理设计

发布时间:2026/10/26 0:58:00

Spark/Flink 的 Web UI 不能裸奔:多租户平台的鉴权反向代理设计 Spark UI 和 Flink Dashboard 是排障刚需——反压、checkpoint、数据倾斜,不看原生 UI 基本查不动。但这两个 UI原生没有任何鉴权,而 K8s 上最常见的暴露方式是 per-job NodePort 或 Ingress 直通,等于把它们裸放在内网里:Flink 的 REST API 能直接提交 jar,裸暴露 远程代码执行入口,公网上被扫到就是挖矿(真实发生过的攻击面);Spark UI 的 environment 页会把配置全量吐出来,S3 的 AK/SK、数据库连接串都在里面;多租户下更致命:A 租户顺着端口能看 B 租户的作业、日志和数据路径。「我的数据空间」(datastudiohappy.cn)的做法是:引擎 UI 流量全部收进平台网关,做一个带鉴权的反向代理,与业务 API 同一套登录态、同一个信任边界,按工作空间成员关系放行。方案经过两轮对抗式安全评审,下面是评审后活下来的五个关键设计。一、五个关键设计1. 短时票据换「按作业限定作用域」的 cookie。引擎 UI 是 SPA,页面会自发加载几十个子资源,每个请求都要带上身份。做法:用户点「查看引擎 UI」→ 平台校验空间成员身份后签发一张 HMAC 短时票据 → 首个请求验票后换成HttpOnly、SameSiteStrict、Path 限定到这一个作业代理前缀的 cookie。子资源自动携带,而 A 作业的 cookie 天然到不了 B 作业的路径——跨作业越权在 cookie 作用域这层就断了。2. 鉴权判定与转发,必须是同一个 canonical 路径。先把路径做单次 percent-decode、解析掉.和..,再拿同一个归一结果去做鉴权判定和上游转发。如果判定看原始路径、转发前再解码一次,%65、点段、大小写这些花活就能做出「判定时是安全路径、到上游被重解析成敏感端点」的绕过——这是代理类系统最经典的洞。3. 路径闸分双态:活集群黑名单,历史态白名单。运行中的集群是单作业单租户的,只需挡掉全量配置 dump 这类高危端点,日志页照常放行(那是租户排障的主诉求);History Server 是共享服务,反过来默认全拒、白名单放行,且作业深链只放行本作业的 applicationId——共享面上,白名单才是正确的默认。4. 不改写响应体,但要接住重定向和根绝对链接。改写 HTML 响应体去修链接是不归路(改不全、易注错)。真正要处理的是两件事:上游 302 返回的Location是绝对内网地址,要改写回代理路径、域外一律丢弃(否则内网 IP 直接泄给浏览器);Spark UI 的页面链接是根绝对路径(/static/...),经代理访问会打到服务器根上 404——用 Spark 认的X-Forwarded-Context头让引擎自己把代理前缀拼进所有链接。顺带一个教训:这类问题curl 全程发现不了,它不加载页面里的资源链接,必须真浏览器走查。5. 脱敏兜底,不指望端点黑名单堵凭证。配置里的敏感项不可能靠枚举端点堵干净,代理层对响应做统一脱敏:高熵 secret 全量抹除、access key 就近遮蔽。纵深防御的最后一层要放在所有流量必经的位置上。二、历史 UI:存储隔离在前,路径闸退居纵深作业结束后 UI 要能回看(History Server)。这里的隔离主力其实在存储层:事件日志按租户前缀归档、每租户一把只读到自己前缀的 scoped 凭证,History Server 按需为单个租户拉起、闲置自动回收。这层做对之后,路径闸按 applicationId 的收敛就降级为纵深防御——隔离靠存储边界,不靠 UI 层的过滤。对用户来说,这一切只是作业详情页上的一个按钮:三、三句话总结引擎原生 UI 无鉴权,NodePort/Ingress 直通不是「简陋」,是 RCE 与凭证泄露级别的攻击面;代理的安全内核就三件:作用域限定的凭证载体、判定与转发同一 canonical 路径、共享面白名单;响应体不改写,Location 与根绝对链接交给标准头处理,凭证靠代理层脱敏兜底——并且一定要用真浏览器验收。这套引擎可观测能力是「我的数据空间」的一部分——一套可私有化部署的数据平台,支持 OEM 合作。产品介绍:https://datastudiohappy.cn/。
延伸阅读

更多相关文章

2026/10/24 13:23:50

如何设计信奥梯队选拔的面试环节

结合搭建信奥名校校内梯队、完成笔试题目设计的相关背景,信奥梯队选拔的面试环节核心是补充笔试无法覆盖的软素质、学习潜力、长期适配性考察,精准筛选出真正适合长期投入信奥竞赛的学员,避免仅靠纸面成绩漏掉高潜力苗子。 一、面试环节核心…

2026/10/26 0:55:51

ClawdBot:大模型驱动的智能机械臂工业应用实践

1. ClawdBot(Moltbot)项目概述ClawdBot(代号Moltbot)是当前大模型技术落地工业场景的典型代表,它通过多模态感知与决策系统实现了传统机械臂的智能化改造。这个项目最让我兴奋的点在于:它用纯软件方案解决了…

2026/10/26 0:55:51

OpenAI DevDay 2026全解读:从dots到GPT-6.1 Sol的AI基础设施变革

先说结论:如果只看热搜榜,大家讨论最多的是“dots”和“GPT-6.1 Sol”这两个名字,但真正看完这场发布会的开发者,应该把注意力放在一条主线上——OpenAI正在把AI从“聊天工具”彻底改造成“操作系统级别的协作基础设施”。这次Dev…

2026/10/26 0:55:51

Python实体关系抽取源码解析:BERT、FGM与EMA实战

简介:本资源是一套基于Python的实体关系抽取系统源码,面向具备一定深度学习基础、希望从文本中自动提取结构化实体与关系信息的学习者与开发者,可应用于高端装备制造领域知识图谱的自动化构建。项目以BERT等预训练模型为核心,涵盖…

2026/10/26 0:55:51

STM32驱动LIS3DH加速度计的I²C实战避坑指南

简介:本资源是一份面向嵌入式初学者与STM32开发者的LIS3DH三轴加速度传感器驱动实战代码包,聚焦于在资源受限的STM32F103平台上通过GPIO模拟IC协议实现高可靠性通信。项目已实测验证,可直接用于运动检测、姿态识别及振动监测等物联网终端场景…

2026/10/26 0:55:51

RAG数据导入避坑指南:CSV/Excel/数据库预处理实战

1. 为什么表格和数据库导入成了RAG落地的“卡脖子”环节?最近帮三个团队做RAG知识库搭建,几乎无一例外卡在数据导入这一步——不是CSV解析乱码,就是Excel公式被当成纯文本,更常见的是连上MySQL后,字段类型自动映射错&a…

2026/10/26 0:50:51

YOLOv26中C3k2_EfficientVIM_CGLU模块的优化与实践

1. 项目概述:C3k2_EfficientVIM_CGLU模块的创新价值在目标检测领域,YOLO系列模型始终保持着算法演进的前沿地位。最近我们团队在YOLOv26架构中实现了一个突破性改进——将传统C3k2模块升级为C3k2_EfficientVIM_CGLU组合模块。这个改进绝非简单的模块堆砌…

2026/10/26 0:20:20

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/26 0:20:17

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/26 0:00:48

Nested Learning:解决AI灾难性遗忘的分层记忆架构

1. 为什么AI需要"记忆"能力?在传统深度学习模型中,我们常遇到一个根本性问题:模型在处理新任务时,往往会完全遗忘之前学到的知识。这种现象被业界称为"灾难性遗忘"(Catastrophic Forgetting)。想象一下&#…

2026/10/26 0:00:48

企业级大模型应用:OCR预处理、Dify编排与DeepSeek落地实战

1. 这不是“用大模型”,而是重构工作流的起点“大模型的应用和工具”——这八个字现在被贴在无数技术分享、招聘JD、内部立项书的标题栏里,但绝大多数人点进去后看到的,是零散的API调用示例、几个开源UI截图、或者一句“接入LLM就能降本增效”…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑