Spark 集群接口的风险
Spark 的 Standalone 集群里,Master 的 RPC 端口(默认 7077)与 Web UI(常见 8080/8081)默认不带认证;可达者可以查看应用详情、节点状态,甚至提交任务,而任务最终在集群节点上执行,等于间接获得节点执行能力。YARN 托管模式下认证由 YARN 统一负责,自建 Standalone 集群则需要自行补齐。
基本信息
| 主要端口 | 7077(Master RPC)、8080/8081(Web UI) |
|---|---|
| 默认认证 | 无(需显式开启 spark.authenticate) |
| 认证配置 | spark.authenticate=true 并分发共享密钥文件 |
| 部署模式 | Standalone 需自行加固,YARN 模式由 YARN 统一认证 |
| 核查方式 | HTTP 探测 UI,确认可达范围与认证状态 |
典型使用场景
- 暴露面盘点:确认 7077 与 UI 端口是否对业务网之外可达
- 认证评估:确认 spark.authenticate 是否开启并已分发密钥
- 多租户治理:为不同业务划分队列与资源池,限制提交权限
- 过渡加固:无法立即上认证时先收敛来源网段与端口暴露
- 事后排查:结合集群日志核查是否有异常任务提交
加固要点
加固要点
1. 启用认证:spark.authenticate=true + 共享密钥文件
2. 管理 UI 限制来源网段,不暴露公网
3. 队列与资源池划分,限制业务提交权限
4. 不使用默认端口段直接对外暴露
5. 开启事件日志与审计,便于回溯任务提交来源
6. Standalone 集群重点加固 Master,YARN 模式则复用 YARN 认证体系核查命令
核查命令
curl -s --max-time 3 http://127.0.0.1:8080/ | head -c 120 # UI 可达性
curl -s http://127.0.0.1:8080/json/ | head -c 200 # 集群与应用概况
# 返回内容说明接口可达,需结合认证与来源限制判断是否受控端口与用途
| 端口 | 用途 | 暴露后果 |
|---|---|---|
| 7077 | Master RPC | 可提交任务、影响集群调度 |
| 8080 | Master Web UI | 查看应用与节点信息 |
| 8081 | Worker Web UI | 查看节点资源与执行器 |
| 4040 等 | 应用 UI | 查看单个应用详情与执行计划 |
YARN 托管模式下的 Spark 任务由 YARN 统一认证管理,自建 Standalone 集群则要自行补认证:评估前先确认部署模式,否则会照着不适用的一套方案整改。
把 UI 端口按惯例开放给整个内网是常见做法,但 UI 往往与提交接口在同一网络域:任务提交能力等于节点执行能力,收敛时要按这个风险等级来排优先级。