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 | 防止中间人窃听、篡改指标数据与凭证 |
在采集作业场景中,认证授权需要覆盖三个关键交互方向:
- Prometheus Server → Exporter/Target:采集请求必须携带有效凭证,Exporter 验证通过后才返回指标。
- Prometheus Server ← 管理用户/系统:对
/api/v1/、/-/reload、/targets等端点的访问需鉴权。 - Prometheus Server ← 其他组件(Alertmanager、Grafana):数据读取与告警回写需最小权限原则。
1.4 安全威胁与防御架构总览
下图展示了 Prometheus 采集作业平台面临的主要威胁路径及对应的认证授权防御层: