Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon
  • kubernetes

    • Kubernetes 学习笔记
      • 集群搭建

        • 使用 ansible 快速搭建 k8s 集群
        • 常见应用安装配置

          • Harbor 安装配置(k8s)
            • Harbor 高可用搭建(docker-compose)
              • Rancher 安装配置
                • Helm 安装配置
                • 容器运行时

                  • k8s 适配 GPU
                    • Kata2 尝试
                    • 存储

                      • Longorn 安装配置
                        • 使用 Rook 快速搭建 Ceph 集群
                        • 服务发现与路由

                          • ingress-nginx 安装配置
                          • 集群网络

                            • CNI
                              • Calico
                              • 监控告警

                                • Prometheus Operator 安装配置
                                • 实用技巧

                                  • 运维手册

                                    • etcd 备份恢复
                                      • velero 备份恢复
                                        • k8s 开启审计日志
                                          • 一、背景
                                            • 二、操作步骤
                                              • apiserver 开启审计日志
                                                • 使用 filebeat 收集审计日志到 elk 中
                                              • 内核版本升级
                                                • 使用 kubeadm 手动更新证书
                                                  • 为 k8s node 配置资源预留
                                                    • 利用LXCFS提升容器资源可见性
                                                    • 最佳实践

                                                      • k8s node 配置资源预留
                                                        • 性能压测指标及方法
                                                          • CPU 绑核
                                                          • 集群排障

                                                            • 如何更新Terminating状态的命名空间
                                                              • 卸载 rancher 导致 node 被清空
                                                                • lvs 健康检查 k8s apiserver
                                                                  • k8s 更改apiserver使用强加密算法
                                                                  • 教程|项目|博客|文章推荐
                                                                    • 附录

                                                                      • 快捷命令

                                                                    k8s 开启审计日志

                                                                    author iconClaycalendar icon2022年10月22日category icon
                                                                    • 云原生
                                                                    tag icon
                                                                    • Kubernetes
                                                                    timer icon大约 2 分钟

                                                                    此页内容
                                                                    • 一、背景
                                                                    • 二、操作步骤
                                                                      • apiserver 开启审计日志
                                                                      • 使用 filebeat 收集审计日志到 elk 中

                                                                    # k8s 开启审计日志

                                                                    # 一、背景

                                                                    • 应安全规范,对 apiserver 核心组件,需要记录,"谁在什么时候操作了什么"
                                                                    • 方便故障排查

                                                                    # 二、操作步骤

                                                                    # apiserver 开启审计日志

                                                                    在所有 master 节点执行

                                                                    1. 备份 配置文件

                                                                      mkdir -p /home/clay/bak$(date +%F)
                                                                      cp /etc/kubernetes/manifests/kube-apiserver.yaml /home/clay/bak$(date +%F)
                                                                      
                                                                      1
                                                                      2
                                                                    2. 创建审计策略

                                                                      mkdir /etc/kubernetes/audit/
                                                                      
                                                                      1

                                                                      vim /etc/kubernetes/audit/audit-policy.yaml

                                                                      apiVersion: audit.k8s.io/v1beta1 # This is required.
                                                                      kind: Policy
                                                                      omitStages:
                                                                        - "RequestReceived"
                                                                      rules:
                                                                        - level: None
                                                                          users: ["system:kube-proxy"]
                                                                          verbs: ["watch"]
                                                                          resources:
                                                                            - group: "" # core
                                                                              resources: ["endpoints", "services"]
                                                                        - level: None
                                                                          users: ["system:unsecured"]
                                                                          namespaces: ["kube-system"]
                                                                          verbs: ["get"]
                                                                          resources:
                                                                            - group: "" # core
                                                                              resources: ["configmaps"]
                                                                        - level: None
                                                                          users: ["system:serviceaccount:kube-system:calico-node"]
                                                                          verbs: ["get","list"]
                                                                        - level: None
                                                                          users: ["kubelet"] # legacy kubelet identity
                                                                          verbs: ["get"]
                                                                          resources:
                                                                            - group: "" # core
                                                                              resources: ["nodes"]
                                                                        - level: None
                                                                          userGroups: ["system:nodes"]
                                                                          verbs: ["get"]
                                                                          resources:
                                                                            - group: "" # core
                                                                              resources: ["nodes"]
                                                                        - level: None
                                                                          users:
                                                                            - system:kube-controller-manager
                                                                            - system:kube-scheduler
                                                                            - system:serviceaccount:kube-system:endpoint-controller
                                                                          verbs: ["get", "update"]
                                                                          namespaces: ["kube-system"]
                                                                          resources:
                                                                            - group: "" # core
                                                                              resources: ["endpoints"]
                                                                        - level: None
                                                                          users: ["system:apiserver"]
                                                                          verbs: ["get"]
                                                                          resources:
                                                                            - group: "" # core
                                                                              resources: ["namespaces"]
                                                                        - level: None
                                                                          nonResourceURLs:
                                                                            - /healthz*
                                                                            - /version
                                                                            - /swagger*
                                                                        - level: None
                                                                          resources:
                                                                            - group: "" # core
                                                                              resources: ["events"]
                                                                        - level: Metadata
                                                                          resources:
                                                                            - group: "" # core
                                                                              resources: ["secrets", "configmaps"]
                                                                            - group: authentication.k8s.io
                                                                              resources: ["tokenreviews"]
                                                                        - level: Metadata
                                                                      
                                                                      1
                                                                      2
                                                                      3
                                                                      4
                                                                      5
                                                                      6
                                                                      7
                                                                      8
                                                                      9
                                                                      10
                                                                      11
                                                                      12
                                                                      13
                                                                      14
                                                                      15
                                                                      16
                                                                      17
                                                                      18
                                                                      19
                                                                      20
                                                                      21
                                                                      22
                                                                      23
                                                                      24
                                                                      25
                                                                      26
                                                                      27
                                                                      28
                                                                      29
                                                                      30
                                                                      31
                                                                      32
                                                                      33
                                                                      34
                                                                      35
                                                                      36
                                                                      37
                                                                      38
                                                                      39
                                                                      40
                                                                      41
                                                                      42
                                                                      43
                                                                      44
                                                                      45
                                                                      46
                                                                      47
                                                                      48
                                                                      49
                                                                      50
                                                                      51
                                                                      52
                                                                      53
                                                                      54
                                                                      55
                                                                      56
                                                                      57
                                                                      58
                                                                      59
                                                                      60
                                                                      61
                                                                      62
                                                                      63
                                                                      64
                                                                      65
                                                                    3. 修改apiserver 配置文件 vim /etc/kubernetes/manifests/kube-apiserver.yaml

                                                                      # 在spec.containers.command 最后新增
                                                                          - --audit-policy-file=/etc/kubernetes/audit/audit-policy.yaml
                                                                          - --audit-log-maxage=100
                                                                          - --audit-log-maxsize=200
                                                                          - --audit-log-path=/var/log/apiserver/audit.log
                                                                      # 在spec.containers.volumeMounts 最后新增
                                                                          - mountPath: /etc/kubernetes/audit
                                                                            name: audit
                                                                            readOnly: true
                                                                          - mountPath: /var/log/apiserver/
                                                                            name: log
                                                                      # 在spec.volumes 最后新增
                                                                        - hostPath:
                                                                            path: /etc/kubernetes/audit
                                                                            type: DirectoryOrCreate
                                                                          name: audit
                                                                        - hostPath:
                                                                            path: /var/log/apiserver
                                                                            type: DirectoryOrCreate
                                                                          name: log
                                                                      
                                                                      1
                                                                      2
                                                                      3
                                                                      4
                                                                      5
                                                                      6
                                                                      7
                                                                      8
                                                                      9
                                                                      10
                                                                      11
                                                                      12
                                                                      13
                                                                      14
                                                                      15
                                                                      16
                                                                      17
                                                                      18
                                                                      19
                                                                      20

                                                                    # 使用 filebeat 收集审计日志到 elk 中

                                                                    编写 yaml 文件

                                                                    vim filebeat-configmap.yaml

                                                                    apiVersion: v1
                                                                    kind: ConfigMap
                                                                    metadata:
                                                                      name: filebeat-config
                                                                      namespace: audit
                                                                      labels:
                                                                        k8s-app: filebeat
                                                                        kubernetes.io/cluster-service: "true"
                                                                        app: filebeat-config
                                                                    data:
                                                                      filebeat.yml: |
                                                                        filebeat.prospectors:
                                                                        - input_type: log
                                                                          enabled: true
                                                                          tail_files: true
                                                                          paths:
                                                                            - /var/log/apiserver/*.log
                                                                    
                                                                        output.kafka:
                                                                          hosts: ["xxx:9092"]
                                                                          topic: 'test_k8s_audit_log'
                                                                          required_acks: 1
                                                                          partition.round_robin:
                                                                            reachable_only: false
                                                                          compression: gzip
                                                                          max_message_bytes: 10000000
                                                                    
                                                                    1
                                                                    2
                                                                    3
                                                                    4
                                                                    5
                                                                    6
                                                                    7
                                                                    8
                                                                    9
                                                                    10
                                                                    11
                                                                    12
                                                                    13
                                                                    14
                                                                    15
                                                                    16
                                                                    17
                                                                    18
                                                                    19
                                                                    20
                                                                    21
                                                                    22
                                                                    23
                                                                    24
                                                                    25
                                                                    26

                                                                    vim filebeat-ds.yaml

                                                                    apiVersion: apps/v1
                                                                    kind: DaemonSet
                                                                    metadata:
                                                                      name: filebeat
                                                                      namespace: audit
                                                                      labels:
                                                                        k8s-app: filebeat
                                                                    spec:
                                                                      selector:
                                                                        matchLabels:
                                                                          app: filebeat
                                                                          k8s-app: filebeat
                                                                      template:
                                                                        metadata:
                                                                          name: filebeat
                                                                          labels:
                                                                            app: filebeat
                                                                            k8s-app: filebeat
                                                                        spec:
                                                                          tolerations:
                                                                          - effect: NoSchedule
                                                                            key: node-role.kubernetes.io/master
                                                                          nodeSelector:
                                                                            node-role.kubernetes.io/master-select: master
                                                                          containers:
                                                                          - image: docker.elastic.co/beats/filebeat:6.4.0
                                                                            name: filebeat
                                                                            args: [
                                                                                "-c", "/home/filebeat-config/filebeat.yml",
                                                                                "-e",
                                                                            ]
                                                                            securityContext:
                                                                              runAsUser: 0
                                                                            volumeMounts:
                                                                            - name: log
                                                                              mountPath: /var/log/apiserver
                                                                            - name: "filebeat-volume"
                                                                              mountPath: "/home/filebeat-config"
                                                                          volumes:
                                                                            - name: filebeat-volume
                                                                              configMap:
                                                                                name: filebeat-config
                                                                            - hostPath:
                                                                                path: /var/log/apiserver
                                                                                type: DirectoryOrCreate
                                                                              name: log
                                                                    
                                                                    1
                                                                    2
                                                                    3
                                                                    4
                                                                    5
                                                                    6
                                                                    7
                                                                    8
                                                                    9
                                                                    10
                                                                    11
                                                                    12
                                                                    13
                                                                    14
                                                                    15
                                                                    16
                                                                    17
                                                                    18
                                                                    19
                                                                    20
                                                                    21
                                                                    22
                                                                    23
                                                                    24
                                                                    25
                                                                    26
                                                                    27
                                                                    28
                                                                    29
                                                                    30
                                                                    31
                                                                    32
                                                                    33
                                                                    34
                                                                    35
                                                                    36
                                                                    37
                                                                    38
                                                                    39
                                                                    40
                                                                    41
                                                                    42
                                                                    43
                                                                    44
                                                                    45
                                                                    46

                                                                    master 节点打标签,部署

                                                                    kubectl label node masternamexxx node-role.kubernetes.io/master-select=master
                                                                    kubectl create ns audit
                                                                    kubectl apply -f filebeat-configmap.yaml
                                                                    kubectl apply -f filebeat-ds.yaml
                                                                    
                                                                    1
                                                                    2
                                                                    3
                                                                    4
                                                                    edit icon编辑此页open in new window
                                                                    上次编辑于: 2022/10/22 05:03:44
                                                                    贡献者: clay-wangzhi
                                                                    上一页
                                                                    velero 备份恢复
                                                                    下一页
                                                                    内核版本升级
                                                                    备案号:冀ICP备2021007336号
                                                                    Copyright © 2023 Clay