审计
(k8s集群审计)[https://kubernetes.io/zh-cn/docs/tasks/debug/debug-cluster/audit/#audit-policy]
Kubernetes 审计(Audit)提供了安全相关的时序操作记录,支持 日志 和 webhook 两种格式,并可以通过审计策略自定义事件类型。
kubernetes 审计功能提供了与安全相关的、按照事件顺序排列的记录集,记录每个用户、使用 kubernetes API 的应用以及控制面自身引发的活动。
审计记录最初产生于 kube-apiserver 内部,每个请求在不同阶段都会生成审计事件,这些事件会根据特定策略被预处理并写入后端。 策略确定要记录的内容和用来存储记录的后端。
每个请求都可被记录其相关的阶段(stage),已定义的阶段有:
- RequestReceived 审计处理器接收到请求后,并且在委托给其余处理器之前发生的事件。
- ResponseStarted 在响应消息的头部发送后,响应消息体发送前发生的事件。只有长时间运行的请求(例如 watch) 才会有这个阶段
- ResponseComplete 在响应消息体完成并且没有更多数据需要传输的时候。
- Panic 当 panic 发生时生成
审计策略:
审计策略定义了相关应记录哪些事件以及哪些数据的规则。审计策略对象结构定义在 audit.k8s.io API组。处理事件时,按照顺序与规则列表进行比较。
第一个匹配规则设置事件的 审计级别(Audit Level)。已定义的审计级别有:
- None 符合这条规则的日志将不会记录
- Metadata 记录请求的元数据,但没有消息体
- Request 记录事件的元数据和请求的消息体,但是不记录响应的消息体
- RequestResponse 记录事件的元数据,请求和响应的消息体,不适用于非资源类型请求
使用 –audit-policy-file 参数指定策略,传递给 kube-apiserver 。如果不设置该标志,则不记录事件。 注意 rules 字段必须在审计策略文件中提供,没有规则的策略将被视为非法配置。
审计日志 Log 后端
配置 kube-apiserver 的参数开启审计日志。
- audit-log-format:日志格式
- audit-log-path:审计日志路径
- audit-log-maxage:旧日志最长保留天数
- audit-log-maxbackup:旧日志文件最长保留个数
- audit-log-maxsize:日志文件最大大小(单位MB),超过后自动做轮转(默认为100MB)
eg:
--audit-log-format=json
--audit-log-maxage=30
--audit-log-maxbackup=10
--audit-log-maxsize=100
--audit-log-path=/var/log/audit/kube-audit.log
--audit-policy-file=/etc/kubernetes/policies/audit-policy.yaml
eg:
{"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"5737a616-9f5a-4efe-98f8-90f5b1b56880","stage":"ResponseComplete","requestURI":"/api/v1/namespaces/default/configmaps/console-operator-lock","verb":"get","user":{"username":"system:serviceaccount:default:default-sa","uid":"1640a9e4-eef5-4b39-8d6d-871fef41107b","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"extra":{"authentication.kubernetes.io/pod-name":["console-operator-7bd67974fd-bvxf4"],"authentication.kubernetes.io/pod-uid":["275b6b2a-f58f-4443-8544-e277c24138a0"]}},"sourceIPs":["10.222.8.92"],"userAgent":"console-operator/v0.0.0 (linux/amd64) kubernetes/$Format/leader-election","objectRef":{"resource":"configmaps","namespace":"default","name":"console-operator-lock","apiVersion":"v1"},"responseStatus":{"metadata":{},"code":200},"requestReceivedTimestamp":"2023-04-06T01:57:25.529046Z","stageTimestamp":"2023-04-06T01:57:25.538347Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"RBAC: allowed by ClusterRoleBinding \"default-sa\" of ClusterRole \"default-sa\" to ServiceAccount \"default-sa/default\""}}
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 December 25, 2024: 菜单更新 (a57fa7d)