CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页实践文章明文不扩散,日志仍可用:阿里云可观测敏感数据保护方案

明文不扩散,日志仍可用:阿里云可观测敏感数据保护方案

#日志#数据保护#数据采集#可观测性

CNOps | 2026-07-14

AI Agent 让日志中的敏感数据更多、更复杂。除手机号、IP、API Key 等传统字段外,AI Coding Agent、RAG 应用和运维 Agent 还会读取代码、配置、环境变量与数据库连接串,并将工具调用、终端输出和模型回复写入审计日志,敏感信息因此更容易进入日志链路。

这些数据又不能简单丢弃,因为它们是排障、审计和治理的重要依据。为兼顾安全与可用性,阿里云可观测提供贯穿采集、写入和加工环节的保护方案:数据入库前可脱敏或加密,入库后也可进一步加工,形成适合长期留存和共享分析的安全数据集。

下面先看整体方案,再展开不同方式的落地场景。

少暴露、不减值:保护敏感数据贯穿全链路

a80b0524-0ed6-4c77-91dd-f5575a02a4b1.png.png

SLS 的敏感数据保护方案,可以拆成两个简单问题:敏感内容用什么方式保护,保护动作放在数据链路的哪一站执行。前一个问题对应脱敏、对称加密和信封加密;后一个问题对应端上处理、写入处理器和数据加工。

两类选择可以灵活组合:同一种保护方式既可以放在采集侧,也可以放在写入前或入库后;同一个处理位置也可以根据数据风险选择脱敏或加密。客户可以按数据来源、合规要求和后续分析方式选择组合:要求明文不出主机时优先端上处理;多来源直写时使用写入处理器集中治理;需要长期共享或存量治理时,再通过数据加工生成受保护 Logstore。

按使用需求选择

不同类型的敏感数据,不需要用同一种方式处理。SLS 在数据处理中提供脱敏、对称加密和信封加密三类SPL 函数,分别对应“保留可读性”“授权可还原”和“职责分离”的安全诉求。

7859fbf0-71a2-43c4-9f18-3e2321c7681a.png.png

脱敏:保留可读性,降低隐私风险

mask适合处理散落在文本中的 PII 或凭证类字段。它支持两类匹配方式:

  • buildin:内置手机号、邮箱、身份证、银行卡、IP、固话、AccessKey、车牌、IMSI、VIN 等规则;
  • keyword:按字段名或键名匹配,如 password、token、authorization、api_key。

打码方式可以是占位符,也可以保留前后缀。例如手机号保留前三后四,既保护隐私,也便于排障时与业务侧做模糊核对。脱敏后的日志仍可读、可查、可聚合,适合作为大多数日志场景的首选(具体使用方式参考帮助文档 )。

典型场景包括:

  • AI 网关 prompt 中散落手机号、邮箱、身份证;
  • 应用访问日志中的客户端 IP、鉴权 token;
  • LLM 应用日志中的银行卡号、地址、用户标识。

对称加密:密文落库,授权还原

aes_encrypt 适合“后续需要还原,但密钥归属清晰”的场景。例如内部 RAG 问答、模型请求、客户方案等内容,落库时可以是密文,授权审计时再由持有 Key + IV 的团队还原。

如果采集、分析和审计都在同一团队内,Key + IV 可以统一管理,对称加密是简单且高性能的选择。它的边界也很清楚:密钥一旦共享出去,所有持有者都具备解密能力,因此适合同组织、同安全域内部使用,不适合跨团队广泛分发。

信封加密:公私钥分离,适合高敏协作

envelope_encrypt 适合采集方和解密方分离的场景。它采用信封加密机制:随机生成 DEK 加密业务数据,再用非对称公钥加密 DEK。采集侧只配置公钥,私钥由安全或审计团队单独保管。

这类模式适合高敏字段,例如:

  • AI Coding 工具读取文件后的完整返回;
  • 命令执行输出;
  • 含密钥、连接串、配置文件的整段日志。

信封加密的另一个优势是性能可控。DEK 在 pipeline 级别生成,非对称加密只作用于 DEK,业务数据仍由 AES 处理,避免对采集吞吐造成过大影响。

保护方式和处理位置不是固定绑定的。下文按数据流依次展开三个位置,每个位置只挑一个代表性方式举例,并不代表该位置只支持这一种。

端上保护:让明文不出采集侧

在更严格的合规场景里,敏感数据保护需要下沉到采集侧:日志刚被采集,就已经完成处理,明文不出主机、不出容器,也不进入后续传输链路。

端上保护可以分成两类:一类是 LoongCollector 面向主机/容器日志的采集时处理;另一类是 LoongSuite Pilot 面向 AI Coding Agent 的端侧隐私控制。二者解决的问题不同,但目标一致:在数据离开采集侧之前,先控制明文扩散。

727aebb6-7145-4f73-a1cd-2c778254aa86.png.png

LoongCollector:采集即处理,业务无需改造

对于部署在 ECS、ACK、IDC 主机或容器中的应用,LoongCollector 不只是采集器,也可以在采集时执行 SPL。AI 网关、百炼应用、RAG 服务、模型代理层等组件通常会输出大量访问日志和交互日志,其中既有结构化字段,也有用户输入的自然语言内容。把处理放在采集侧,可以显著降低明文扩散面。

以 AI 网关访问日志为例,一条原始日志可能包含调用方 IP、API Key 和用户 prompt:

model=qwen-max client_ip=203.0.113.55 prompt="我是张某,手机号138xxxxxxxx,邮箱zhangwei@xxxx.com,帮我查最近订单" tokens=128

在 LoongCollector 采集配置中,可以用 mask 同时处理内置 PII 和关键字字段:

b04e7fd4-5a98-4f17-85bc-5666a160eb61.png.png

写入 SLS 后,日志仍然能用于模型调用量、Token 用量、网关访问趋势分析,但敏感值已经被替换:

image (35).png

这类方案适合业务应用日志、网关日志、模型代理日志等主机/容器侧数据。它的优势是无需修改业务代码,采集配置里完成处理,日志写入 SLS 时已经是脱敏后的安全形态。

LoongSuite Pilot:AI Coding 数据先脱敏再分发

端上方案的另一个典型场景是 AI Coding 审计。开发者本机运行的 Coding Agent 经常会接触项目源码、配置文件和本地环境变量。开发者在提问时粘贴一段配置,或者 Agent 读取 .env 文件后把内容写入工具调用参数,都可能让 API Key、云厂商 AK/SK、私钥等数据进入采集链路。

LoongSuite Pilot面向这类端侧 AI Coding 场景,负责发现并采集 Claude Code、Cursor、Codex、Qoder 等工具的活动数据,归一化为会话、工具调用、模型调用、Token 用量等审计事件。同时,Pilot 内置基于规则的自动脱敏引擎,在数据分发给任何输出通道之前统一扫描并替换敏感内容。开启后,无论数据输出到 SLS、JSONL、HTTP 还是 OTLP,脱敏规则都会统一生效。

Pilot 的自动脱敏覆盖以下常见凭据类型:

脱敏类型覆盖范围替换标记
云 AccessKey阿里云 LTAI、AWS AKIA/ASIA、腾讯云 AKID[ACCESSKEY_MASKED]
API KeyOpenAI 兼容 sk-、GitHub PAT ghp_/gho_/ghs_[APIKEY_MASKED]
数据库连接串MySQL/PostgreSQL/MongoDB/Redis URI、带密码的 JDBC[DATABASEURL_MASKED]
私钥PEM / OpenSSH 私钥块[PRIVATEKEY_MASKED]

例如,一次 AI Coding 会话中,Agent 读取本地 .env 文件后产生如下工具返回:

DB_URL=mysql://root:Abc@2025!@10.0.0.12:3306/prod
ALIYUN_AK=LTAI5tFakeExampleKey0001
-----BEGIN RSA PRIVATE KEY-----
MIIEvQIBADANBgkqh...
-----END RSA PRIVATE KEY-----

Pilot 在输出前完成自动脱敏后,写入 SLS 的内容会变成:

94939606-b5c8-42d3-b26c-f4f465b32607.png.png

脱敏通过 mask.mode 配置开关控制,支持 none、all、custom 三种模式,默认关闭。开启后,敏感凭据不会原样进入后续输出通道;而 session_id、tool_name、Token 用量、执行耗时等审计元数据仍然保留,研发管理和安全团队可以继续分析 AI Coding 的使用情况、工具调用风险和成本分布。

综上:端上保护适合三类客户诉求:

  • 明文不能离开业务主机或开发者本机;
  • 采集链路跨网络、跨团队,明文传输风险不可接受;
  • 希望在不修改业务代码的情况下,把敏感数据保护前置到日志产生的第一站。

写入前保护:直写数据入库前统一治理

并不是所有数据都会经过 LoongCollector。很多系统通过 SDK、WebTracking、OpenAPI 或第三方采集链路直接写入 SLS。对于这类数据,写入处理器提供了服务端统一治理能力:数据到达 SLS 后、写入 Logstore 前,先执行 SPL 完成脱敏或加密。

de5362dd-13a3-4662-b47b-a87b49b53541.png.png

写入处理器的优势在于集中配置。规则放在 SLS 侧,客户端不需要逐一升级;当处理策略变化时,只需要调整处理器配置,就能覆盖所有直写数据。对于多业务线、多语言 SDK 或第三方系统上报的场景,这种方式更容易落地。

以 AI 网关的访问日志为例,网关把每次模型调用拼成一行、用 ## 分隔后直接写入 SLS。其中 request 字段是完整的模型请求体,可能夹带用户 prompt、身份证号等任意敏感内容;其余字段则是结构化的调用元数据:

2026-06-25 11:17:25.471##c9d7ab4c-b312-9d08-9243-c7f7475905be##5000000276111136##API_KEY##qwen-max##text-generation##{"input":{"prompt":"我的身份证号是53010219200508011x,帮我查询保单状态"}}##chat-app##3de69809a9d0fd22773f33c77dab12a8

这里的 request 是整段、非结构化的请求体。这个示例选择对 request 做对称加密,重点展示写入处理器如何在入库前统一处理直写数据:先按分隔符拆出字段,再单独对高敏正文执行 aes_encrypt。

在写入处理器中加密高敏请求体

9135e045-209a-4923-b104-7ed9ddc3c976.png.png

写入处理器 SPL 配置:

* | extend temp = split(content, '##')
  | extend time          = temp[1],
           request_id    = temp[2],
           caller_uid    = temp[3],
           source        = temp[4],
           model         = temp[5],
           api_type      = temp[6],
           request       = temp[7],      
           service_name  = temp[8],
           trace_id      = temp[9]
  | extend request = to_base64(aes_encrypt(
        cast(request as binary),
        cast('aZ4kP9mX2qL7nR1t' as binary),
        cast('Gh8dW3sB6vN0cT5e' as binary)))
  | project-away content, temp

入库后,request 变成 Base64 密文,而 request_id、region、model、service_name、trace_id 等调用元数据仍是明文:

image (33).png

运维可以靠 request_id、trace_id 排查链路,运营可以按 model、service_name 统计调用量,而真正的请求正文已经是密文。

授权场景下按需还原

需要还原时,由持有 Key + IV 的团队成员在查询时解密:

image (34).png

数据加工:面向共享分析生成安全数据集

端上处理和写入处理器解决的是“入库前保护”。数据加工解决的是另一个问题:已经进入 Logstore 的数据,如何重新组织成更安全、更适合长期分析的数据集。

d24f80ad-4504-49f5-b261-dcd3dcb60bfc.png.png

在实际项目中,很多团队会保留两个 Logstore:

  • 原始 Logstore:保留时间短,访问权限严格,仅用于紧急排障或安全调查;
  • 受保护 Logstore:由数据加工任务生成,敏感字段已脱敏或加密,保留时间更长,面向更大范围的分析和审计。

这种模式特别适合 AI 观测数据。以 LoongSuite Pilot 采集的 AI Coding(如 Qoder)活动日志为例,每条 llm.response 事件都带着一批结构化元数据(会话 ID、模型、用户 ID 等),以及一个 gen_ai.output.messages 字段——它是模型本轮回复的完整正文,可能夹带内部系统名、主机信息、配置或密钥等任意敏感内容:

{
  "event.name": "llm.response",
  "gen_ai.session.id": "58bf461a-285f-468e-963c-00cd1706a9d9",
  "gen_ai.provider.name": "qwen",
  "gen_ai.response.model": "auto",
  "user.id": "1",
  "gen_ai.output.messages": "[{\"role\":\"assistant\",\"parts\":[{\"type\":\"text\",\"content\":\"已整理候选人薪资表:张某(手机号138xxxxxxxx)...\"}],\"finish_reason\":\"end_turn\"}]",
  "trace_id": "a58ed78ac2573159b4fa8b38ab4c2697",
  "__time__": "1782367255"
}

gen_ai.output.messages 是整段、结构不固定的模型回复,逐字段脱敏难以覆盖全部风险;真正排查问题时又可能需要还原原文。这个示例选择信封加密,重点展示数据加工如何先派生分析字段(这里取回复长度 msg_len),再对高敏正文加密后写入受保护 Logstore:

d79d3dff-9344-4a68-8962-367e0c054920.png.png
* | extend msg_len = length("gen_ai.output.messages")
  | extend result = envelope_encrypt(
      cast("gen_ai.output.messages" as binary),
      '-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Vh1QIpNurP0bB9uHRK3
ZL29SjY74OtYa5nmf9xUMKAuLrio5BN6LRZyG680uCkCThCMOK/T9ka5ZYtEIu8b
U7acNR1dL3LWsbZG3ScbqyISJ3pEBli2rCgOqBQK3EE+6HGavh6wo8FAhkSBiryU
eVKxSJSnC928RvlBWtyfdubVYQHPONhx0TbCj38Njjfi8kbKGgE92q9gTlL+spge
qvgDec9GV2VzxhLoTgxd6jdHYyfFzuQucb0hZtmWqus4E4MTnAXnUJOGizmI02AP
5d49P44kZXElBPRw4A0WISKBmwOzYCZqPSEWyHnj/qIaXAbz90B8TCUiPZlNouCG
TwIDAQAB
-----END PUBLIC KEY-----',
      '{"mode":"RSA"}',
      '{"mode":"CTR"}')
  | extend encrypted_dek = result['encrypted_dek'],
           enc_output_messages = result['encrypted_data']
  | project-away "gen_ai.output.messages"

加工后写入受保护 Logstore 的记录里,gen_ai.output.messages 已被移除,取而代之的是密文 enc_output_messages 和被公钥加密的 encrypted_dek,其余元数据保持明文:

5703fa20-5502-4fb9-90b8-87644d1c375c.png.png

这样做后,受保护 Logstore 中保留了事件类型、会话 ID、模型、用户 ID、回复长度等分析字段,仍然可以做告警、趋势统计和风险排查;真正的模型回复正文则变成密文。需要深度调查时,由持有私钥的安全人员解密指定记录。

这也是加密与可分析性之间的平衡点:不要把所有字段一股脑加密,而是在加密前抽取必要的分析元数据,只对高敏正文加密。 日常分析依赖元数据,敏感原文通过授权解密受控访问。

如何选择:看明文边界、分析诉求和解密权限

落地时可以按三个问题做选择。

第一,明文能不能离开采集侧? 如果不能,优先把处理放到端上。

第二,日志是否还需要日常阅读和分析? 如果需要,优先保留可读性;只有当内容整体高敏、无法可靠局部处理时,才考虑加密。

第三,谁有权解密? 同团队、同安全域内可以统一管理密钥;跨团队或职责分离场景,应让解密权限由安全或审计团队独立掌握。

可以把策略总结为一张表:

场景推荐位置推荐方式
主机/容器中的 AI 网关日志,要求明文不出主机LoongCollector 端上mask 脱敏,必要字段加密
SDK 或第三方系统直接写入 SLS写入处理器写入前 mask 或加密
已有历史日志需要治理数据加工消费源库后脱敏/加密写新库
内部 RAG 问答内容需可控还原端上或写入处理器aes_encrypt 对称加密
工具返回、配置文件等整段高敏内容端上或数据加工envelope_encrypt 信封加密

安全与可用可以同时兼顾

日志的价值在于可观测、可分析、可追溯;敏感数据保护的目标,不是让日志失去价值,而是让日志在安全边界内继续发挥价值。SLS 把脱敏和加密能力前置到采集、写入和加工链路中,帮助企业在控制明文扩散面的同时,保留必要的分析能力。

最终,企业可以按数据类型选择脱敏或加密,按数据链路选择端上、写入前或加工后处理,按密钥归属选择对称或信封,在“数据可用”和“数据安全”之间建立清晰、可执行的边界。

文章大纲

推荐文章

超过 2000+ 位开发者正在阅读

给 OpenClaw 加上企业级 Memory

给 OpenClaw 加上企业级 Memory

4646 阅读

阿里云 STAROps 全域智能运维平台发布!

阿里云 STAROps 全域智能运维平台发布!

3453 阅读

阿里云正式发布 RCA Benchmark

阿里云正式发布 RCA Benchmark

2716 阅读

推荐视频

UModel 最佳实践 Vol.1 UModel 数据建模全景解读

UModel 最佳实践 Vol.1 UModel 数据建模全景解读

3854 观看50:35
云监控2.0全景:可观测范式升级与智能运维蓝图

云监控2.0全景:可观测范式升级与智能运维蓝图

2532 观看41:06

推荐工具

精选可观测领域开发者工具

云监

云监控 2.0 沙箱体验

7483 使用

免费

免费网络拨测工具

2746 使用