跳转至

06监控 日志记录和运行时安全

考试大纲

监控、日志记录和运行时安全:20%

  • 在主机和容器级别执行系统调用进程和文件活动的行为分析,以检测恶意活动
  • 检测物理基础架构,应用程序,网络,数据,用户和工作负载中的威胁
  • 检测攻击的所有阶段,无论它发生在哪里,如何扩散
  • 对环境中的不良行为者进行深入的分析调查和识别
  • 确保容器在运行时不变
  • 使用审计日志来监视访问

日志审计

题目描述:

  • 在 cluster 中启用审计日志。为此,请启用日志后端,并确保:

  • 日志存储在 /var/log/kubernetes/audit-logs.txt

  • 日志文件能保留 10
  • 最多保留2个旧审计日志文件
  • /etc/kubernetes/logpolicy/sample-policy.yaml 提供了基本策略。它仅指定不记录内容
  • 注意:基本策略位于 cluster 的 master 节点上

  • 编辑和扩展基本策略以记录:

  • RequestResponse 级别的 persistentvolumes 更改
  • namespace front-appsconfigmaps 更改的请求体
  • Metadata 级别的所有 namespace 中的 ConfigMapSecret 的更改

  • 此外,添加一个全方位的规则以在 Metadata 级别记录所有其他请求

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

官方文档:

参考解答:

修改/etc/kubernetes/logpolicy/sample-policy.yaml文件

apiVersion: audit.k8s.io/v1 
kind: Policy
omitStages:
  - "RequestReceived"
rules:
  - level: RequestResponse
    resources:
    - group: ""
      resources: ["persistentvolumes"]
  - level: Metadata
    resources:
    - group: ""
      resources: ["secrets", "configmaps"]

  - level: Request
    resources:
    - group: ""
      resources: ["configmaps"]
    namespaces: ["front-apps"]

  - level: Metadata
    omitStages:
      - "RequestReceived"

开启审计日志,修改/etc/kubernetes/manifests/kube-apiserver.yaml

# 添加以下配置
- --audit-policy-file=/etc/kubernetes/logpolicy/sample-policy.yaml
- --audit-log-path=/var/log/kubernetes/audit-logs.txt
- --audit-log-maxage=10
- --audit-log-maxbackup=2

# 检查一下是否挂载这两个配置文件,如果有挂载就不用管,如果未挂载则需要手动添加
volumeMounts:
  - mountPath: /etc/kubernetes/logpolicy/sample-policy.yaml
    name: audit
    readOnly: true
  - mountPath: /var/log/kubernetes/audit/
    name: audit-log
    readOnly: false

volumes:
  - hostPath:
      path: /etc/kubernetes/logpolicy/sample-policy.yaml
      type: File
    name: audit
  - hostPath:
      path: /var/log/kubernetes
      type: DirectoryOrCreate

检查/var/log/kubernetes/audit/audit.log日志文件是否有日志产生

tail -f /var/log/kubernetes/audit/audit.log