3. 日志平台架构概览:ELK/EFK栈组件、数据流拓扑、常见部署模式

在构建日志平台的安全权限模型之前,必须首先理解其核心组件、数据流转路径以及部署拓扑。本章以业界主流的 ELK(Elasticsearch, Logstash, Kibana)和 EFK(Elasticsearch, Fluentd/Fluent Bit, Kibana)栈为蓝本,剖析其架构要素,为后续 OPA 策略的嵌入点分析奠定基础。

3.1 核心组件与职责

无论是 ELK 还是 EFK,其核心逻辑均围绕“采集 → 传输 → 解析 → 存储 → 检索 → 可视化”展开。下表对比了两套栈中各层对应的组件及其职责:

架构层 ELK 组件 EFK 组件 核心职责
采集层 Beats(Filebeat/Metricbeat) Fluent Bit / Fluentd 从节点、容器、应用日志文件中采集原始日志,支持多源输入。
传输/解析层 Logstash Fluentd / Fluent Bit 接收日志流,执行过滤、解析(Grok/正则)、字段提取、数据脱敏与格式化。
存储/索引层 Elasticsearch Elasticsearch 分布式存储、倒排索引、全文检索、聚合分析;是权限模型的核心数据载体。
可视化/交互层 Kibana Kibana 提供仪表盘、数据探索、告警管理、用户认证与空间管理(Spaces)。
队列/缓冲层 Redis / Kafka(可选) Kafka / S3(可选) 解耦采集与消费,提供削峰填谷能力,保障数据不丢失。
架构选型提示: ELK 栈中 Logstash 插件生态丰富但资源消耗较高;EFK 栈中 Fluent Bit 以 C 语言实现,内存占用极低(约 450KB),更适合 Kubernetes 边车模式。安全权限建模时,需重点关注 Elasticsearch 的索引级权限与 Kibana 的空间级权限。

3.2 数据流拓扑

日志数据从产生到被检索,经历了一条清晰的管道。下图展示了标准 EFK 栈的端到端数据流拓扑,其中标注了关键的安全控制点:

EFK 栈数据流拓扑与安全控制点 采集层 Fluent Bit / Filebeat 缓冲层 Kafka / Redis 解析/传输层 Logstash / Fluentd 存储/索引层 Elasticsearch 可视化层 Kibana 安全控制点(OPA 策略嵌入位置) ① 采集端:限制日志源身份(namespace/pod label 校验) ② 缓冲层:Topic/Queue 级别的读写权限控制 ③ 解析层:字段脱敏规则(如信用卡、密码字段自动遮盖) ④ 存储层:索引级文档/字段级权限(OPA 与 ES 角色映射) ⑤ 可视化层:仪表盘/空间访问控制,基于用户属性的数据过滤
数据流关键特征:
  • 解耦设计: 缓冲层(Kafka)使采集与消费速率解耦,避免背压导致日志丢失。
  • 幂等消费: Elasticsearch 通过文档 ID 实现幂等写入,保障数据一致性。
  • 安全边界: 每个组件间的网络通信应启用 TLS,且组件间应使用独立的服务账号。

3.3 常见部署模式

根据企业规模、环境复杂度与合规要求,日志平台通常采用以下三种部署模式。每种模式对安全权限建模的粒度与复杂度有直接影响。

3.3.1 单机 All-in-One 模式

  • 适用场景: 开发测试环境、小型团队(< 5 人)、非生产日志量 < 50GB/天。
  • 架构特征: 所有组件(ES、Kibana、Logstash)部署在同一节点或同一 Pod 内。
  • 安全局限: 无网络隔离,组件间共享内核命名空间;权限模型仅依赖 ES 内置用户(elastic/kibana_system)。
  • OPA 策略价值: 低。通常仅用于验证策略语法,不适合生产级权限建模。

3.3.2 多节点分离部署模式

  • 适用场景: 中型企业、多团队共享日志平台、日志量 50GB~5TB/天。
  • 架构特征:
    • Elasticsearch 集群:3 节点以上,数据分片与副本分离。
    • Kibana 独立节点:支持 Spaces 多租户隔离。
    • Logstash/Fluentd 独立部署:可水平扩展。
    • Kafka 集群:作为缓冲层,保障数据可靠性。
  • 安全需求: 索引级权限、Kibana 空间级权限、管理。
  • OPA 策略价值: 高。可在此模式下实现索引创建白名单、跨空间数据隔离策略。

3.3.3 云原生 Kubernetes 模式

  • 适用场景: 大规模微服务架构、多集群、动态扩缩容、日志量 > 5TB/天。
  • 架构特征:
    • 采集端:DaemonSet 部署 Fluent Bit,Sidecar 模式采集应用日志。
    • 存储端:ECK Operator 管理 ES 集群,支持自动扩缩与证书轮换。
    • 可视化端:Kibana 通过 Ingress 暴露,集成 OIDC/OAuth2 认证。
    • 策略引擎:OPA 以 Admission Controller 或 Sidecar 形式嵌入。
  • 安全需求: Pod 级身份认证、命名空间级日志隔离、动态策略热更新。
  • OPA 策略价值: 极高。OPA 可拦截非法的日志索引创建请求、校验日志源身份标签、动态生成 ES 角色映射。
部署模式选择建议: 如果团队正在从 All-in-One 向多节点迁移,建议优先在 Kafka 缓冲层和 ES 索引层引入 OPA 策略,这两个位置是权限泄露的高风险区。切勿在未建立基础网络隔离前直接上生产级 OPA 策略,否则策略本身可能成为新的攻击面。

3.4 组件拓扑与安全边界总结

下表汇总了三种部署模式下各组件的安全边界特征,为后续章节的 OPA 策略设计提供上下文:

组件 安全边界 常见风险 OPA 可介入点
Fluent Bit / Filebeat 节点/容器边界 日志伪造、路径遍历 校验日志源 label/annotation
Kafka Topic 边界 未授权写入、数据泄露 Topic 创建/写入 ACL 策略
Logstash / Fluentd 管道边界 敏感字段未脱敏 字段脱敏规则校验
Elasticsearch 索引/文档边界 越权查询、索引删除 索引创建/查询/字段级权限
Kibana 空间/仪表盘边界 跨空间数据访问 空间访问控制、Saved Object 过滤