OpenTelemetry 敏感数据脱敏:在 Collector 中保护隐私数据
遥测数据常意外携带 Cookie、Token、用户信息等敏感数据。本文讲解用 OpenTelemetry Collector 的 attributes、redaction、transform 三种 processor 实现字段删除、白名单与值掩码的方法,以及观测云 Pipeline 与敏感数据扫描的对等方案。
遥测数据的脱敏应在数据离开集群之前完成——OpenTelemetry Collector 提供 attributes(增删改属性)、redaction(掩码与拦截)、transform(OTTL 精细改写)三种处理器,把敏感字段挡在后端之外——Cookie、Authorization 头、SQL 中的参数、用户输入,都可能在自动埋点时被顺带采集,边缘侧脱敏是合规的必选项。
核心要点速览
- 三大工具:
attributes做确定性删除/改写,redaction做白名单与模式掩码,transform用 OTTL 做精细逻辑; - 推荐策略:白名单优于黑名单(默认拒绝),掩码优于明文,边缘侧优于平台侧;
- HTTP 头、Cookie、URL 参数、db.statement 是最常踩坑的位置;
- 观测云用户可用 Pipeline 函数 + 敏感数据扫描(70+ 规则)实现同等甚至更强的保护。
为什么要在 Collector 侧脱敏?
应用开发者不会每次打日志都记得脱敏;自动埋点更是把请求头、SQL 语句照单全收。等数据进了后端再清理,就意味着敏感数据已经离开了你的控制域——传输、存储、备份、查询权限每一环都是风险面。在 Collector 边缘侧完成脱敏,敏感数据根本不落地。
方案一:attributes processor
做确定性的属性操作:
processors:
attributes:
actions:
- key: http.request.header.authorization
action: delete # 直接删除
- key: enduser.id
action: hash # 哈希化保留可关联性
方案二:redaction processor
适合「只允许明确安全的字段通过」的强管控场景:
processors:
redaction:
allow_all_keys: false
allowed_keys:
- http.request.method
- http.response.status_code
- service.name
blocked_values:
- "4[0-9]{12}(?:[0-9]{3})?" # 信用卡号模式
summary: debug # 输出被拦截的键名摘要
白名单之外的属性一律删除;命中 blocked_values 正则的值一律掩码。
方案三:transform processor(OTTL)
用 OTTL 写精细逻辑,如「只对错误请求保留 URL,其余归一化」:
processors:
transform:
trace_statements:
- context: span
statements:
- delete_key(attributes, "http.request.header.cookie")
- replace_pattern(attributes["db.statement"], "\\?\\d*", "?")
- set(attributes["user.email"], SHA256(attributes["user.email"])) where attributes["user.email"] != nil
观测云落地:Pipeline + 敏感数据扫描
观测云提供两层脱敏能力,覆盖「数据进入平台后」与「采集侧」两个位置:
- DataKit Pipeline:在采集侧用
drop_key、cover、replace等函数删除或掩码指定字段,效果等同 Collector 侧脱敏; - 敏感数据扫描:平台侧内置 70+ 敏感数据规则(身份证、银行卡、手机号、密钥等),自动扫描日志内容并按策略脱敏,作为兜底防线;
- 字段权限:通过字段级展示权限控制谁能看明文,审计导出留痕。
实践建议:埋点规范(不采敏感字段)> 边缘脱敏(Pipeline/Collector)> 平台扫描兜底,三层叠加。
常见问题(FAQ)
Q:脱敏会不会破坏排障能力? 合理设计不会。用哈希替代明文(保留关联性)、保留错误请求的关键字段(状态码、路由模板而非完整 URL)、只删高敏感字段(凭证、证件号),排障所需信息基本无损。
Q:哪些字段最该优先脱敏? Authorization/Cookie 等凭证头、URL 查询参数、请求/响应体、db.statement 中的字面量参数、enduser 类属性。
Q:白名单模式维护成本高吗? 初始梳理一次语义约定中的安全字段即可覆盖大部分场景;新增自定义属性时评审一次,成本可控。
Q:历史已入库的敏感数据怎么办? 观测云支持按工作空间配置数据删除与留存策略;同时建议尽快上线脱敏规则止血,避免新数据继续入库。