审计日志
APIServer 请求认证流程
审计日志 按照时间顺序记录了每个用户操作记录,并可以将日志存储在文件或 webhook。 【注意】会增加api-server内存消耗
为k8s管理员提供了:
- 发生了什么?
- 什么时候发生的?
- 谁触发的?
- 活动发生在哪个(些)对象上?
- 在哪观察到的?
- 它从哪触发的?
- 活动的后续处理行为是什么?
每个请求都可被记录其相关的阶段(stage)。已定义的阶段有:
RequestReceived
- 此阶段对应审计处理器接收到请求后, 并且在委托给其余处理器之前生成的事件。ResponseStarted
- 在响应消息的头部发送后,响应消息体发送前生成的事件。 只有长时间运行的请求(例如 watch)才会生成这个阶段。ResponseComplete
- 当响应消息体完成并且没有更多数据需要传输的时候。Panic
- 当 panic 发生时生成。
第一个匹配规则设置事件的审计级别(Audit Level)。 已定义的审计级别有:
None
- 符合这条规则的日志将不会记录。Metadata
- 记录请求的元数据(请求的用户、时间戳、资源、动词等等), 但是不记录请求或者响应的消息体。Request
- 记录事件的元数据和请求的消息体,但是不记录响应的消息体。 这不适用于非资源类型的请求。RequestResponse
- 记录事件的元数据,请求和响应的消息体。这不适用于非资源类型的请求。
开始实践
-
在apiserver中开启配置
保留最近7天的审计日志,日志达到2048MB 自动轮转一个新的日志文件,日志文件最多保留三份
--audit-policy-file=/etc/kubernetes/audit-policy.yaml \ --audit-log-path=/var/log/audit.log \ --audit-log-maxage=7 \ --audit-log-maxbackup=3 \ --audit-log-maxsize=2048 -
编写policy审计规则
语法:
cat /etc/kubernetes/audit-policy.yaml apiVersion: audit.k8s.io/v1 kind: Policy omitStages: [] rules: - level: users: [] userGroups: [] verbs: [] resources: [] resourceNames: [] namespaces: [] nonResourceURLs: [] omitStages: [] 示例:
apiVersion: audit.k8s.io/v1 kind: Policy rules: # - level: Request # 可选 None Metadata Request RequestResponse users: - "kubernetes-admin" userGroups: - "system:masters" verbs: - watch # "get", "list", "watch" "create", "update", "delete","patch","deletecollection 允许批量删除资源","exec","proxy","*" resources: - group: "" resources: - pods - services resourceNames: - "test" namespaces: - "default" - level: Metadata nonResourceURLs: - "api*" omitStages: - "RequestRecevied"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏