3. 可观测性三大支柱在多租户场景下的安全考量
在多租户可观测性系统中,指标(Metrics)、日志(Logs)和链路追踪(Traces)不仅是数据采集的三大支柱,更是安全攻击面的核心载体。租户间的数据隔离、访问控制、敏感信息泄露以及资源滥用风险,均围绕这三类数据展开。本章从安全架构视角,逐一剖析每类数据在租户隔离、传输、存储与查询阶段的安全考量。
3.1 指标(Metrics)安全考量
指标数据通常以时间序列形式存储,具有高写入、低延迟、聚合查询的特点。在多租户场景下,指标安全的核心在于防止租户A通过聚合查询推断租户B的业务量级或性能特征。
| 安全维度 | 风险描述 | 缓解措施 |
|---|---|---|
| 标签隔离 | 租户通过标签(Label/Tag)注入恶意维度,导致数据交叉污染 | 强制标签白名单;服务端标签校验;禁止租户自定义标签键 |
| 聚合泄露 | 租户通过高基数查询或降采样精度差异,反推其他租户的细粒度指标 | 限制查询时间范围;对聚合结果添加噪声;禁止跨租户的PromQL联合查询 |
| 资源滥用 | 恶意租户通过高频写入大量指标,耗尽存储或查询资源 | 租户级写入速率限制;指标基数配额;存储层租户分片 |
实践建议: 在Prometheus多租户方案(如Thanos Receiver或Cortex)中,务必启用租户ID注入中间件,并在查询前端强制附加租户标签过滤器,避免因查询路由错误导致跨租户数据暴露。
3.2 日志(Logs)安全考量
日志数据包含最丰富的业务上下文,但也最容易泄露敏感信息(如用户凭证、个人身份信息、API密钥)。多租户日志系统的安全设计必须同时解决数据隔离与内容脱敏两个核心问题。
- 写入隔离: 每个租户的日志流必须携带唯一租户标识,存储层按租户分区或分索引,防止日志混入其他租户的存储桶。
- 查询隔离: 日志查询引擎(如Elasticsearch、Loki)必须支持索引级或文档级权限过滤,确保租户A无法搜索到租户B的日志条目。
- 内容脱敏: 在日志采集侧或存储侧,对匹配正则表达式(如密码、Token、身份证号)的字段进行掩码或替换,避免敏感数据以明文形式持久化。
- 审计合规: 所有跨租户的日志查询操作必须记录审计日志,包括查询时间、查询者、查询语句及返回条数。
常见陷阱: 许多团队仅依赖日志采集端的租户标签进行隔离,但忽略了日志存储引擎的默认权限模型。例如,Elasticsearch的默认角色可能允许跨索引搜索,导致租户B通过通配符索引模式访问租户A的日志数据。务必在存储引擎层面显式配置租户级权限。
3.3 链路追踪(Traces)安全考量
链路追踪数据记录了请求在分布式系统中的完整调用路径,包含服务名、调用延迟、请求参数及异常堆栈。在多租户场景下,追踪数据的安全风险主要集中在上下文传播和调用链关联两个环节。
| 风险点 | 说明 | 安全设计 |
|---|---|---|
| Trace ID 冲突 | 不同租户的请求可能生成相同的Trace ID,导致追踪数据交叉关联 | 在Trace ID生成时注入租户前缀;或使用全局唯一ID生成器(如Snowflake)并附加租户标识 |
| 上下文劫持 | 恶意租户在请求头中伪造Span Context,试图将自身调用链关联到其他租户的服务 | 服务网格或API网关层校验租户身份与Span Context中的租户ID是否一致;拒绝不匹配的上下文 |
| 敏感参数泄露 | 追踪系统默认采集HTTP请求参数、SQL语句或消息体,可能包含跨租户的敏感数据 | 配置采样策略时排除敏感字段;使用Span Tag白名单机制;对采集的请求参数进行脱敏处理 |
关键设计原则: 链路追踪的租户隔离不能仅依赖Trace ID的命名空间,必须在数据采集、存储和查询全链路中强制携带租户上下文。推荐在OpenTelemetry Collector中配置租户ID处理器,在数据进入后端存储前完成租户标签注入与校验。
3.4 三大支柱的租户隔离架构总览
下图展示了指标、日志、链路追踪在多租户可观测性系统中的安全隔离架构,涵盖从数据采集到查询展示的完整链路。
3.5 三大支柱安全策略对比
下表从数据隔离粒度、敏感信息防护、资源控制三个维度,对比指标、日志、链路追踪在多租户场景下的安全策略差异。
| 安全维度 | 指标(Metrics) | 日志(Logs) | 链路追踪(Traces) |
|---|---|---|---|
| 隔离粒度 | 标签级(Label/Tag) | 索引级 / 文档级 | Trace ID + Span Context |
| 敏感信息防护 | 标签值脱敏;聚合噪声 | 正则脱敏引擎;字段掩码 | Span Tag白名单;参数排除 |
| 资源控制 | 基数配额;写入速率限制 | 存储配额;查询并发限制 | 采样率控制;Span数量限制 |
| 跨租户风险 | 聚合查询推断业务量 | 索引通配符泄露 | Trace ID冲突导致数据交叉 |
| 审计要求 | 查询语句审计 | 查询内容+返回条数审计 | 调用链查询审计 |
架构决策要点: 在规划多租户可观测性系统时,建议优先实现日志的租户隔离(因为日志泄露风险最高),其次是链路追踪的上下文校验,最后是指标的聚合安全。同时,三大支柱应共享同一套租户身份认证与RBAC体系,避免为每种数据类型分别维护权限模型。