OpenTelemetry 敏感数据脱敏:在 Collector 中保护隐私数据

遥测数据常意外携带 Cookie、Token、用户信息等敏感数据。本文讲解用 OpenTelemetry Collector 的 attributes、redaction、transform 三种 processor 实现字段删除、白名单与值掩码的方法,以及观测云 Pipeline 与敏感数据扫描的对等方案。

最佳实践
OpenTelemetry 敏感数据脱敏:在 Collector 中保护隐私数据封面

遥测数据的脱敏应在数据离开集群之前完成——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 + 敏感数据扫描

观测云提供两层脱敏能力,覆盖「数据进入平台后」与「采集侧」两个位置:

  1. DataKit Pipeline:在采集侧用 drop_keycoverreplace 等函数删除或掩码指定字段,效果等同 Collector 侧脱敏;
  2. 敏感数据扫描:平台侧内置 70+ 敏感数据规则(身份证、银行卡、手机号、密钥等),自动扫描日志内容并按策略脱敏,作为兜底防线;
  3. 字段权限:通过字段级展示权限控制谁能看明文,审计导出留痕。

实践建议:埋点规范(不采敏感字段)> 边缘脱敏(Pipeline/Collector)> 平台扫描兜底,三层叠加。

常见问题(FAQ)

Q:脱敏会不会破坏排障能力? 合理设计不会。用哈希替代明文(保留关联性)、保留错误请求的关键字段(状态码、路由模板而非完整 URL)、只删高敏感字段(凭证、证件号),排障所需信息基本无损。

Q:哪些字段最该优先脱敏? Authorization/Cookie 等凭证头、URL 查询参数、请求/响应体、db.statement 中的字面量参数、enduser 类属性。

Q:白名单模式维护成本高吗? 初始梳理一次语义约定中的安全字段即可覆盖大部分场景;新增自定义属性时评审一次,成本可控。

Q:历史已入库的敏感数据怎么办? 观测云支持按工作空间配置数据删除与留存策略;同时建议尽快上线脱敏规则止血,避免新数据继续入库。

系列阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台