处理敏感数据

在OpenTelemetry中处理敏感数据的最佳实践与指导

实施OpenTelemetry时,必须关注敏感数据的处理。采集遥测数据始终存在无意中收集敏感信息或个人信息的风险,而这些信息可能受到各种隐私法规与合规要求的约束。

你的责任

OpenTelemetry能够采集遥测数据,但它无法自行判断在你的具体场景中哪些数据属于敏感数据。作为实施者,你需要负责:

  • 确保符合适用的隐私法律法规。
  • 保护遥测数据中的敏感信息。
  • 取得数据采集所需的同意。
  • 采取恰当的数据处理和存储措施。

此外,你还需要理解和审查所用埋点库输出的遥测数据,因为这些库也可能收集并暴露敏感信息。

敏感数据的考量

哪些数据属于敏感数据,要视具体情况而定。例如:

  • 个人身份信息(PII)
  • 身份验证凭据
  • 会话令牌
  • 财务信息
  • 健康相关数据
  • 用户行为数据

数据最小化

通过遥测采集可能包含敏感内容的数据时,应遵循数据最小化原则。这意味着:

  • 只采集服务于可观测性目的的数据。
  • 除非绝对必要,否则避免采集个人信息。
  • 考虑聚合或匿名化数据能否达到相同目的。
  • 定期审查已采集的属性,确保它们仍有必要。

保护敏感数据

如上一节所述,防止采集敏感数据的最佳方式,是不采集可能敏感的数据。不过,有时你可能确实需要采集这些数据,或者无法完全控制采集内容,因此需要在后续处理过程中清除敏感数据。以下建议可以提供帮助。

OpenTelemetry Collector提供了几种有助于管理敏感数据的处理器:

删除用户信息并进行哈希处理

以下attribute处理器配置对敏感user信息中的user.email进行哈希处理,并删除user.full_name:

processors:
  attributes/example:
    actions:
      - key: user.email
        action: hash
      - key: user.full_name
        action: delete

用user.hash替换user.id

以下transform处理器配置可用于删除user.id,并将它替换为user.hash:

transform:
  trace_statements:
    - context: span
      statements:
        - set(attributes["user.hash"], SHA256(attributes["user.id"]))
        - delete_key(attributes, "user.id")
通过哈希进行匿名化的风险与限制

对用户ID或姓名做哈希,可能达不到你需要的匿名化程度。如果输入空间很小且容易预测,例如数值型用户ID,那么在实践中可能反推出哈希所对应的输入。

截断IP地址

除了哈希,也可以截断数据,或者按共同的前缀或后缀分组。例如:

  • 日期:只保留年份,或年份和月份,去掉具体日期。
  • 电子邮件地址:去掉本地部分,只保留域名。
  • IP地址:去掉IPv4的最后一个八位组,或IPv6的最后80个比特。

以下transform处理器配置去掉client.address属性中的最后一个八位组:

transform:
  trace_statements:
    - context: span
      statements:
        - replace_pattern(attributes["client.address"], "\\.\\d+$", ".0")

使用redaction处理器删除属性

最后,使用redaction处理器删除某些属性的示例,见Collector配置安全最佳实践页面的“清除敏感数据”一节。



原文:OpenTelemetry:处理敏感数据;作者:OpenTelemetry文档贡献者;日期:页面最后修改2026-01-14。原文及源码权利归原作者和相应权利人所有。

文档采用CC BY 4.0许可证。本文为中文翻译,保留原文配置示例。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容