1. 启用审计

添加配置

–audit-policy-file=/etc/kubernetes/logpolicy/audit.yaml
–audit-log-path=/var/log/0-audit.log

–audit-log-path 指定用来写入审计事件的日志文件路径。不指定此标志会禁用日志后端
–audit-log-maxage 定义了保留旧审计日志文件的最大天数
–audit-log-maxbackup 定义了要保留的审计日志文件的最大数量
–audit-log-maxsize 定义审计日志文件的最大大小(兆字节)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- name: audit
hostPath:
path: /etc/kubernetes/logpolicy/audit.yaml
type: File
- name: audit-log
hostPath:
path: /var/log/0-audit.log
type: FileOrCreate

volumeMounts:
- mountPath: /etc/kubernetes/logpolicy/audit.yaml
name: audit
readOnly: true
- mountPath: /var/log/0-audit.log
name: audit-log
readOnly: fals

2. 审计策略

什么时候记
RequestReceived - 事件的 stage 将在审计处理器接收到请求后,并且在委托给其余处理器之前生成。
ResponseStarted - 在响应消息的头部发送后,但是响应消息体发送前。 这个阶段仅为长时间运行的请求生成(例如 watch)。
ResponseComplete - 当响应消息体完成并且没有更多数据需要传输的时候。
Panic - 当 panic 发生时生成。

记什么
None - 符合这条规则的日志将不会记录。
Metadata - 记录请求的元数据(请求的用户、时间戳、资源、动词等等), 但是不记录请求或者响应的消息体。
Request - 记录事件的元数据和请求的消息体,但是不记录响应的消息体。 这不适用于非资源类型的请求。
RequestResponse - 记录事件的元数据,请求和响应的消息体。这不适用于非资源类型的请求

3. 创建策略

从上往下开始匹配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
apiVersion: audit.k8s.io/v1 
kind: Policy
omitStages:
- "ResponseStarted"
rules:
- level: None
resources:
- group: ""
- level: None
groups: ["system:nodes"]
verbs: ["get"]
resources:
- group: ""
resources: ["endpoints", "services","nodes"]
- level: Metadata
groups: ["system:nodes"]
verbs: ["get"]
resources:
- group: ""
resources: ["endpoints", "services"]
- level: None
users: ["system:node:vms71","system:node:vms72"]
resources:
- group: ""
resources: ["pods"]
- level: Request
resources:
- group: ""
resources: ["pods"]