可观测性系统在"看到一切"的同时,也集中掌握了最敏感的数据:日志里的用户 PII、追踪里的请求参数、指标里的业务细节。一旦遥测存储被攻破或越权访问,危害比应用泄露更广。本指南建立可观测性安全的纵深防御:识别风险、最小化采集与脱敏、加密与访问控制、权限审计与合规,让"看得清"与"守得住"兼得。
关键概念:可观测性安全 = 对遥测数据(指标/日志/追踪)做全生命周期保护:采集时脱敏、传输时加密、存储时上锁、访问时控权、全程可审计。核心是"越小看到敏感数据越好,越早脱敏越好"。
1. 可观测性数据的风险面
1.1 遥测数据里藏着什么
日志/追踪里的敏感信息:
- PII:手机号、邮箱、身份证、姓名、地址
- 凭证:token、密码、cookie、Authorization 头
- 业务机敏:订单金额、内部接口参数、数据内容
- 基础设施:内部 IP、专有标签、集群名
风险场景:
- 采集时被旁路截获(明文传输)
- 存储被攻破 → 全部敏感数据泄露
- 内部越权 → 不该看的人看了
- 审计缺失 → 泄露了都不知道是谁
1.2 为什么可观测数据特别高危
- 集中性:几套存储汇聚全公司敏感数据,单点风险巨大
- 长期性:遥测数据保留月/年 → 泄露窗口长
- 易忽视:团队只关心"功能",安全常被忽略
- 难治理:日志分散、字段繁多,脱敏易遗漏
结论:可观测系统必须按"高价值资产"一样对待安全
ℹ️ 核心:可观测系统的安全核心是"缩小敏感数据面"。能在源头不产生、在采集少保留、在存储控访问,三管齐下风险就小。
2. 最小化采集:源头少产生敏感数据
2.1 从源头减敏
原则:能不采集的敏感数据,一开始就别采
具体做法:
- 日志不打印请求体/响应体(或只打必要的 sanitized 字段)
- 追踪采样时避免记录 query 参数中的敏感信息
- 指标绝不带 PII(用聚合指标替代明细)
- debug 级别日志只在需要时短暂开启
收益:
数据不产生 = 无需脱敏 = 无需担心泄露
领比"全采了再删"便宜得多
2.2 采集层面的白名单
只采"完成任务必需"的字段:
- 排障需要 request_id/trace_id/错误码/时长
- 多数情况下不需要原始 PII 字段
- 产品分析可用"匿名化标识"而非原始标识
实践:
- 埋点前评审字段必要性
- 敏感字段默认不采集,需要时走审批
3. 脱敏(Redaction):越早越好
3.1 脱敏的时机
脱敏层级(越早越好):
1. 应用侧:打日志/埋点前就脱敏(最理想)
2. 采集器(Agent/Collector):就近正则替换
3. 存储前:入库前兜底处理
4. 查询时:返回前过滤(最后防线,不能依赖)
最佳实践:
应用侧为主 + 采集侧兜底,两层夹住
3.2 脱敏的常见手段
手段一:掩码/截断
user.email: a***@example.com
phone: 138****0000
手段二:散列化
原始值 → 一次/可逆 hash(需保留关联时)
手段三:删除/替换
删除敏感标签;替换为固定占位符
手段四:字段级丢弃
drop 掉含 token/password 命名的字段
对照表:敏感类型 → 脱敏动作 → 保留用途
3.3 Collector 脱敏示例(OTel transform)
# OTel Collector:transform 处理器脱敏
processors:
transform/redact:
error_mode: ignore
trace_statements:
- context: span
statements:
- "delete_key(attributes, \"http.request.header.authorization\")"
- "replace_pattern(attributes, \"user.email\", \"value\", \"***\")"
log_statements:
- context: log
statements:
- "delete_key(body, \"token\")"
4. 传输与存储的加密
4.1 传输加密
遥测数据在管道里传输:
SDK → Agent → Collector → 存储,可能跨网络/跨机房
→ 全程 TLS(mTLS 更佳)防止中途截获
要点:
- Collector 之间用 TLS/mTLS
- 内部依赖暴露易,加密却常被忽略
- 证书管理统一(内部 PKI / 服务网格)
4.2 存储加密
静态加密(at-rest):
- 对象存储/Tsdb/日志后端启用加密(KMS)
- 磁盘层加密 + 应用层加密(高敏感场景)
密钥管理:
- KMS/密钥托管,杜绝密钥进配置文件/代码
- 定期轮换
审计:存储层访问日志、异常访问告警
5. 访问控制:谁可读、谁能写
5.1 最小权限访问
遥测数据访问的角色分级:
只读普通用户(排障自己服务的日志)
全局读者(SRE/安全,可跨服务)
写/管理(配置、清理、导出)
原则:
- 用户默认只看自己服务/团队的遥测数据
- 全局/敏感数据(PII、跨团队)需更高权限
- 匿名/权限不匹配直接拒绝
5.2 审计与告警
对遥测系统的"访问"也要观测:
- 谁能看、看了什么、何时、为什么
- 下载/导出敏感遥测数据 → 审批 + 审计
- 异常访问(大量拉取/越权)→ 告警
落地:
- 平台自带审计日志 + 集成 SIEM
- 敏感数据(PII)访问单独审计
- 暴露的演示面定期清理
6. 合规:GDPR 与数据保留
6.1 GDPR 等对遥测的要求
GDPR/个保法对可观测数据的约束:
- 最小化:只处理必要数据
- 目的限制:采集的目的要明确
- 保留期:数据不能无限留
- 被遗忘权:用户可要求删除其数据
- 泄露通知:敏感数据泄露须上报
→ 数据保留与删除策略必须可执行
6.2 保留策略的合规落地
保留策略设计:
- 按数据类型定保留期(日志/指标/追踪不同)
- 超期自动删除 / 归档(不可实时查询)
- 用户删除请求 → 跨存储删除(需支持)
配套:
- 数据留存矩阵(类型 × 保留时长 × 原因)
- 能自动执行 + 可审计
- 例外(法律保留)与常规分开
7. 常见避坑
| 坑 | 现象 | 对策 |
|---|---|---|
| 采集时明文传输 | 可被截获 | 全链路 TLS |
| 只做查询时脱敏 | 存储已明文 | 源头+采集侧脱敏 |
| 访问不过滤 | 越权看数据 | 最小权限 |
| 无审计 | 泄露不知情 | 审计 + 告警 |
| 保留无期限制 | 数据无限存 | 按类型设保留期 |
| 全采了再删 | 成本+风险大 | 源头减少敏 |
8. 最佳实践清单
□ 源头最小化采集,默认不采集 PII
□ 应用侧脱敏 + 采集侧兜底,越早越好
□ 传输全链路 TLS(mTLS 更佳)
□ 存储加密 + 密钥托管,杜绝密钥散落
□ 遥测访问最小权限,只能看自己负责的
□ 敏感数据访问单独审计 + 异常告警
□ 数据保留设类型分保留期,超期自动删除
□ 支持数据删除请求(GDPR/合规)
□ 定期评审埋点字段与访问权限
一句话原则
可观测性安全 = 最小化采集 + 尽早脱敏 + 加密传输 + 最小权限 +
全程审计,让"看得清"的同时也能"守得住"。
小结
可观测性安全的核心是把遥测数据当作高价值资产保护:源头最小化采集少产生敏感数据、应用侧 + 采集侧脱敏尽早去除 PII、全链路 TLS + 静态加密护住传输与存储、最小权限访问 + 审计告警拦越权、并按 GDPR/保留期治理数据留存。落地记住五件事:默认不采集 PII、脱敏越早越好、传输存储全加密、访问最小权限 + 全程审计、按类型设保留期。当团队既要"看得清每一处故障"又要"守得住每一份数据"时,可观测性就不再是安全的短板,而成为既有洞察力又有边界感的基础设施。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。