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 栈的端到端数据流拓扑,其中标注了关键的安全控制点:
数据流关键特征:
- 解耦设计: 缓冲层(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 过滤 |