最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于audit policy的题目。
What’s the audit policy
使用K8s Audit Policy,管理员可以定义哪些操作需要被审计,包括创建、删除、更新和查看集群中的资源。审计记录包括操作的时间戳、执行操作的用户、操作的命令和参数等信息。
审计记录可以被发送到不同的目标,例如日志文件、集中式日志管理系统或外部审计系统,以供后续分析和调查使用。
通过使用K8s Audit Policy,管理员可以获得对集群中操作的更大可见性和可追踪性,以增强安全性和合规性。
Question 1
The cluster has an audit policy configured. The audit policy file is located at /etc/kubernetes/audit-policy.yaml. Add the following rules to the audit policy:
- Log the request and response body for changes to configmaps.
- Log the request body for changes to services and pods in the web namespace.
- Log metadata for changes to secrets.
- Create a catch-all rule to log metadata for all remaining requests.
这里要求我们在audit-policy.yaml
文件中创建如下的audit log规则
- 记录对configmaps进行更改的请求和响应体。
- 记录对web命名空间中服务和pod进行更改的请求体。
- 记录对secrets进行更改的元数据。
- 创建一个捕获所有其他请求的规则,并记录其元数据。
Practice
更改audit-policy.yaml
文件内容如下
Question 2
Configure audit logging for the cluster.
- Direct audit log output to a file located at /var/log/kubernetes/audit.log.
- Maintain old log files for a maximum of 10 days.
- Keep a maximum of 1 old log files.
这里要求配置审计日志记录如下:
- 将审计日志输出到位于/var/log/kubernetes/audit.log的文件中。
- 保留旧日志文件的最长时间为10天。
- 保留最多1个旧日志文件。
Practice
修改kube-apiserver的配置文件如下:
sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
如何进行验证
sudo tail -f /var/log/kubernetes/audit.log