【CKS】审计考试详解指南
最编程
2024-02-23 13:37:46
...
7. 【CKS】考试之 审计
7.1 题目要求
7.2 官网位置
官网搜索: audit 官网位置:审计
7.3 审计知识摘要
7.3.1 请求阶段:
- RequestReceive:此阶段对应审计处理器收到请求后,并且在委托给其余处理器之前生成的事件
- ResponseStarted:开始响应Header信息,但未响应消息体之前的消息。一般用于长时间运行的请求(如watch)才会生成这个阶段
- ResponseComplete:事件响应完毕并且没有更多数据需要传输的时候。
- Panic:访问出现panic错误时记录
7.3.2 日志记录等级:
- None: 不记录日志
-
Metadata(请求元数据):
记录请求的元数据(请求的用户、时间戳、资源、verb等),但不包括Request和RequestResponse -
Request(请求体):
记录包括Metadata和请求体,但不包括RequestResponse -
RequestResponse(响应消息体):
包括Metadata、Request和响应消息体
7.4 操作步骤
切换 Context 后, ssh 到对应的 master 节点
7.4.1 创建审计日志规则
cat /etc/kubernetes/logpolicy/sample-policy.yaml
apiVersion: audit.k8s.io/v1 # This is required.
kind: Policy
# Don't generate audit events for all requests in RequestReceived stage.
omitStages:
- "RequestReceived"
rules:
- level: RequestResponse
resources:
- group: ""
resources: ["cronjobs"]
- level: Request
resources:
- group: ""
resources: ["persistendvolumes"]
namespaces: ["front-apps"]
- level: Metadata
resources:
- group: "" # core API group
resources: ["secrets", "configmaps"]
# A catch-all rule to log all other requests at the Metadata level.
- level: Metadata
omitStages:
- "RequestReceived"
此时还没有Policy这种资源,那么则需要在apiserver上更改配置,引用这个策略
7.4.2 应用审计日志规则
vim /etc/kubernetes/manifests/kube-apiserver.yaml
apiVersion: v1
kind: Pod
metadata:
annotations:
kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint: 172.30.60.35:6443
creationTimestamp: null
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
- kube-apiserver
- --audit-log-maxage=30 #添加部分
- --audit-log-maxbackup=10 #添加部分
- --audit-log-path=/var/log/kubernetes/kubernetes-logs.txt #添加部分
- --audit-policy-file=/etc/kubernetes/logpolicy/sample-policy.yaml #添加部分
挂载策略和日志至 APIServer 的 Pod(考试环境有可能已经挂载):
- mountPath: /var/log/kubernetes
name: kubernetes-logs
- mountPath: /etc/kubernetes/logpolicy
name: kubernetes-policy
hostNetwork: true
priorityClassName: system-node-critical
volumes:
- hostPath:
path: /etc/kubernetes/logpolicy
name: kubernetes-policy
- hostPath:
path: /var/log/kubernetes
name: kubernetes-logs
重启kubelet:
systemctl daemon-reload
systemctl restart kubelet
7.4.3 验证
查看日志:
tail -1 /var/log/kubernetes/kubernetes-logs.txt