题目
在cluster中启用审计日志。为此,请启用日志后端,并确保:
l 日志存储在 /var/log/kubernetes/audit-logs.txt
l 日志文件能保留 10 天
l 最多保留 2 个旧审计日志文件
/etc/kubernetes/logpolicy/sample-policy.yaml 提供了基本策略。它仅指定不记录的内容。
注意:基本策略位于cluster的master节点上。
编辑和扩展基本策略以记录:
l RequestResponse 级别的 cronjobs更改
l namespace front-apps中 deployment更改的请求体
l Metadata 级别的所有 namespace 中的 ConfigMap 和 Secret 的更改
此外,添加一个全方位的规则以在 Metadata 级别记录所有其他请求。
注意:不要忘记应用修改后的策略。
参考链接
解答
1 先按下面几点改sample-policy
l RequestResponse 级别的 cronjobs更改
l namespace front-apps中 deployment更改的请求体
l Metadata 级别的所有 namespace 中的 ConfigMap 和 Secret 的更改
此外,添加一个全方位的规则以在 Metadata 级别记录所有其他请求。
apiVersion: audit.k8s.io/v1
kind: Policy
omitStages:
- "RequestReceived"
rules:
- level: RequestResponse
resources:
- group: ""
resources: ["cronjobs"]
- level: Request
resources:
- group: ""
resources: ["deployment"]
namespaces: ["front-apps"]
- level: Metadata
resources:
- group: ""
resources: ["secrets", "configmaps"]
- level: Metadata
omitStages:
- "RequestReceived"
2 修改apiserver,最好提前保存下
--audit-log-path 指定用来写入审计事件的日志文件路径。不指定此标志会禁用日志后端。- 意味着标准化
--audit-log-maxage 定义保留旧审计日志文件的最大天数
--audit-log-maxbackup 定义要保留的审计日志文件的最大数量
--audit-policy-file=/etc/kubernetes/logpolicy/sample-policy.yaml
--audit-log-path=/var/log/kubernetes/audit-logs.txt
3 volumeMount和hostpath
volumeMounts:
- mountPath: /etc/kubernetes/logpolicy/sample-policy.yaml
name: audit
readOnly: true
- mountPath: /var/log/kubernetes/
name: audit-log
readOnly: false
volumes:
- name: audit
hostPath:
path: /etc/kubernetes/logpolicy/sample-policy.yaml
type: File
- name: audit-log
hostPath:
path: /var/log/kubernetes/
type: DirectoryOrCreate
4 重启下kubelet,然后查看下log
systemctl restart kubelet
vi /var/log/kubernetes/audit-logs.txt //看下有没有日志