题目

在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 级别记录所有其他请求。

注意:不要忘记应用修改后的策略。

参考链接

审计 | Kubernetes

解答

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 //看下有没有日志

Logo

开源、云原生的融合云平台

更多推荐