Kubernetes 审计日志
某公司发生了数据泄露事件。调查显示,攻击者在两周前就获得了集群的访问权限,并在事故发生前进行了多次侦察。但直到数据已经被拖走,安全团队才收到告警。
问题在于没有审计日志。他们不知道谁在什么时间访问了什么资源,做了什么操作。没有日志,安全事件就无法被追溯和调查。
审计日志是安全运营的基础,也是合规要求的必备项。
K8s 审计日志的作用
Kubernetes 审计日志记录所有对 API Server 的请求,包括谁(Who)什么时候(When)从哪里(From)做了什么(What)操作。
安全合规:满足 SOC 2、ISO 27001、PCI DSS 等合规要求的必要条件。
事件追溯:发生安全事件后,通过审计日志还原攻击链和影响范围。
异常检测:识别可疑的操作模式,如非工作时间的访问、异常的 API 调用量。
操作审计:了解资源变更历史,支持故障排查和变更管理。
审计策略配置
审计策略定义了记录哪些事件、记录多少信息。
策略结构
审计级别
API Server 配置
审计日志记录的字段
每个审计日志条目包含以下字段:
关键字段说明
敏感操作的监控
高风险操作列表
Secret 访问监控
异常时间访问检测
审计日志的存储与分析
后端配置
Kubernetes 支持多种审计日志后端:
Elasticsearch 集成
Kibana 仪表板
通过 Kibana 可以可视化审计日志:
- 资源访问频率热力图
- 用户操作分布
- 异常访问模式检测
- 合规报告生成
Falco 配置审计日志
Falco 通过动态类型(kaudit)支持审计日志分析。
异常行为检测
检测模式
暴力破解检测:短时间内多次登录失败。
权限提升检测:用户开始访问之前未使用的资源。
审计日志的合规要求
建议将 Kubernetes 审计日志与现有的 SIEM 系统集成,实现统一的日志管理和告警。审计日志的保留期限应满足合规要求,通常至少 90 天。
总结与延伸思考
Kubernetes 审计日志是安全运营的基础设施。没有审计日志,安全事件无法追溯,合规无法证明。
配置审计日志时需要平衡两个因素:记录范围(太多日志难以分析)和安全覆盖(太少日志可能有盲区)。
建议从关键资源(Secret、RBAC、ServiceAccount)开始,逐步扩大覆盖范围。
思考题
问题 1:为什么说「审计日志只记录失败的操作就够」是一个危险假设?
参考答案
因为成功的操作同样需要审计。攻击者获得合法凭证后,成功的操作才是真正危险的。审计日志的核心目的是:1)记录正常操作基线,用于异常检测;2)追溯已发生的事件;3)证明合规。失败的操作是异常检测的辅助信号,不是审计的核心。
问题 2:如何设计一个既满足合规要求又不产生过多日志的审计策略?
参考答案
采用分层策略:1)敏感资源(Secret、RBAC)使用 RequestResponse 级别;2)一般资源(Pods、Services)使用 Metadata 级别;3)只读操作使用 None 级别或 Metadata 级别;4)高风险操作(delete、patch、exec)无论资源类型都提升级别。同时设置日志保留策略,将详细日志发送到冷存储,超过 30 天后删除原始数据,只保留聚合统计信息。