1. 安全概述:Prometheus 安全威胁模型与认证授权必要性

1.1 Prometheus 安全威胁模型分析

Prometheus 作为云原生监控核心组件,其采集作业平台面临多维度的安全威胁。理解威胁模型是构建安全防线的前提。我们将威胁来源归纳为以下四个层面:

威胁层面 攻击向量 潜在后果 风险等级
网络层 未授权访问 / 中间人攻击 / 端口扫描 指标数据泄露、采集链路劫持 高
数据层 指标篡改 / 伪造样本 / 重放攻击 告警误报、SLO 计算失真、容量规划错误 严重
配置层 PromQL 注入 / 配置篡改 / 未授权 reload 服务拒绝、配置泄露、远程命令执行 严重
身份层 弱口令 / 凭证泄露 / 未启用 TLS 双向认证 身份冒用、权限提升、横向移动 高
⚠️ 关键认知:Prometheus 默认配置以“可访问性优先”设计,不开启任何认证与加密。这意味着一旦采集端口暴露,攻击者可直接拉取全部指标数据,甚至通过 /-/reload 端点动态修改采集配置。生产环境必须逐层加固。

1.2 采集作业平台面临的核心风险

采集作业平台(Scraping Job Platform)是 Prometheus 生态中与目标交互最频繁的组件,其风险具有鲜明的“采集面”特征:

  • 暴露面过大:每个采集目标(Target)都需要 Prometheus 主动发起 HTTP 连接,目标端口的暴露范围随集群规模线性增长。
  • 凭证管理分散:不同目标(如 MySQL Exporter、Blackbox Exporter、Kubelet)使用不同的认证方式,凭证散落在 prometheus.yml 及各类服务发现配置中。
  • 指标数据敏感:业务指标可能包含用户量、订单量、响应延迟分布等商业敏感信息;系统指标可能暴露内核版本、容器逃逸漏洞特征。
  • 配置热加载风险:POST /-/reload 端点若未加保护,攻击者可注入恶意采集配置,将 Prometheus 变为数据窃取代理。
  • 服务发现劫持:基于 Consul、Kubernetes API 的服务发现若未鉴权,攻击者可注册伪造 Target,向 Prometheus 投毒。
📌 采集面风险公式:
风险敞口 = (采集目标数量 × 暴露端口数) + 未加密链路数 + 未鉴权管理端点数
安全目标:将每一项因子降至最低。

1.3 认证授权的重要性

认证(Authentication)与授权(Authorization)是采集作业平台安全防御的两道核心闸门。二者缺一不可:

安全维度 解决的问题 Prometheus 实现方式 防护效果
认证 你是谁? Basic Auth / Bearer / mTLS 证书 阻止未授权客户端访问采集端点与管理接口
授权 你能做什么? RBAC 规则 / 请求路径与方法限制 限制已认证用户仅能执行允许的操作(如只读指标、禁止 reload)
传输加密 数据在传输中是否安全? TLS / HTTPS / 双向 TLS 防止中间人窃听、篡改指标数据与凭证

在采集作业场景中,认证授权需要覆盖三个关键交互方向:

  1. Prometheus Server → Exporter/Target:采集请求必须携带有效凭证,Exporter 验证通过后才返回指标。
  2. Prometheus Server ← 管理用户/系统:对 /api/v1/、/-/reload、/targets 等端点的访问需鉴权。
  3. Prometheus Server ← 其他组件(Alertmanager、Grafana):数据读取与告警回写需最小权限原则。

1.4 安全威胁与防御架构总览

下图展示了 Prometheus 采集作业平台面临的主要威胁路径及对应的认证授权防御层:

Prometheus 采集作业平台安全威胁模型与防御架构 外部攻击者 端口扫描 凭证爆破 认证网关 Basic Auth / mTLS 证书校验 IP 白名单 授权控制 RBAC 路径限制 HTTP 方法过滤 通过后 Prometheus Server /metrics 采集端点 /api/v1/ 查询接口 /-/reload 管理端点 /targets 状态端点 授权通过 采集目标 Exporter / Kubelet 业务应用 / 中间件 Blackbox / SNMP 采集请求 数据泄露风险 指标被窃取 配置篡改风险 注入恶意采集 服务发现劫持 伪造 Target 🛡️ 分层防御策略 1. 网络层:防火墙限制采集端口来源 IP;使用 Service Mesh Sidecar 做流量加密与身份校验。 2. 认证层:Prometheus 启用 --web.config.file 配置 Basic Auth 或 Bearer ;Exporter 侧启用 HTTP Basic Auth。 3. 授权层:通过反向代理(Nginx/Envoy)实现路径级 RBAC;限制 /-/reload 仅允许内网管理节点。 4. 传输层:全链路启用 TLS 1.3;采集目标与 Prometheus 之间使用双向证书验证(mTLS)。 5. 审计层:记录所有采集请求与鉴权失败日志;对接 SIEM 系统进行异常检测。 6. 凭证管理:使用 Vault / Kubernetes Secret 动态分发采集凭证;禁止明文硬编码在配置文件中。