tencent cloud

文档反馈

集群审计

最后更新时间:2022-12-23 11:04:28

    本文主要介绍如何将注册集群的审计日志接入到 腾讯云日志服务 CLS

    简介

    集群审计是基于 Kubernetes Audit 对 kube-apiserver 产生的可配置策略的 JSON 结构日志的记录存储及检索功能。本功能记录了对 kube-apiserver 的访问事件,会按顺序记录每个用户、管理员或系统组件影响集群的活动。

    使用须知

    • 已经创建注册集群,且注册集群的状态为运行中。
    • 目前注册集群的审计日志仅支持投递至 腾讯云日志服务 CLS,暂不支持其他日志消费端。
    • 注册集群开启审计功能,需要用户自行登录集群的 Master 节点配置相关审计策略和 API Server 相关参数。
    • 开启集群审计功能,默认会同步开启集群日志采集功能。
    • 若使用集群审计功能,请确认 Kubernetes 集群内节点能够访问日志消费端。这里我们提供公网和内网两种方式进行日志投递,用户可以根据业务情况自行选择:
      • 公网投递:集群审计日志将通过公网的方式进行投递至日志服务 CLS ,需要集群中的节点具有访问公网的能力。
      • 内网投递:集群审计日志将通过内网的方式进行投递至日志服务 CLS ,需要集群内的节点与腾讯云日志服务 CLS 内网互通。选择该选项前,请 提交工单 进行确认。

    使用步骤

    在集群 Master 节点上配置审计策略

    依次登录集群的所有 Master 节点,配置审计策略文件/etc/kubernetes/audit-policy.yaml。您可以根据业务的实际情况,按需修改。

    apiVersion: audit.k8s.io/v1beta1
    kind: Policy
    omitStages:
     - "RequestReceived"
    rules:
     - level: None
       users: ["system:kube-proxy"]
       verbs: ["watch"]
       resources:
         - group: ""
           resources: ["endpoints", "services"]
     - level: None
       users: ["system:unsecured"]
       namespaces: ["kube-system"]
       verbs: ["get"]
       resources:
         - group: ""
           resources: ["configmaps"]
     - level: None
       users: ["kubelet"]
       verbs: ["get"]
       resources:
         - group: ""
           resources: ["nodes"]
     - level: None
       userGroups: ["system:nodes"]
       verbs: ["get"]
       resources:
         - group: ""
           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: ""
           resources: ["endpoints"]
     - level: None
       users: ["system:apiserver"]
       verbs: ["get"]
       resources:
         - group: ""
           resources: ["namespaces"]
     - level: None
       nonResourceURLs:
         - /healthz*
         - /version
         - /swagger*
     - level: None
       resources:
         - group: ""
           resources: ["events"]
     - level: Metadata
       resources:
         - group: "" # core
           resources: ["secrets", "configmaps"]
         - group: authentication.k8s.io
           resources: ["tokenreviews"]
     - level: Request
       verbs: ["get", "list", "watch"]
       resources:
         - group: ""
         - group: "admissionregistration.k8s.io"
         - group: "apps"
         - group: "authentication.k8s.io"
         - group: "authorization.k8s.io"
         - group: "autoscaling"
         - group: "batch"
         - group: "certificates.k8s.io"
         - group: "extensions"
         - group: "networking.k8s.io"
         - group: "policy"
         - group: "rbac.authorization.k8s.io"
         - group: "settings.k8s.io"
         - group: "storage.k8s.io"
     - level: RequestResponse
       resources:
         - group: ""
         - group: "admissionregistration.k8s.io"
         - group: "apps"
         - group: "authentication.k8s.io"
         - group: "authorization.k8s.io"
         - group: "autoscaling"
         - group: "batch"
         - group: "certificates.k8s.io"
         - group: "extensions"
         - group: "networking.k8s.io"
         - group: "policy"
         - group: "rbac.authorization.k8s.io"
         - group: "settings.k8s.io"
         - group: "storage.k8s.io"
     - level: Metadata
    

    在 Master 节点上配置 API Server 参数

    依次登录集群所有的 Master 节点,修改/etc/kubernetes/manifests/kube-apiserver.yaml文件

    1. 添加相关 command 参数,内容如下:
    spec:
    containers:
    - command:
      - kube-apiserver
      - --audit-log-maxbackup=10
      - --audit-log-maxsize=100
      - --audit-log-path=/var/log/kubernetes/kubernetes.audit
      - --audit-log-maxage=30
      - --audit-policy-file=/etc/kubernetes/audit-policy.yaml
    
    
    1. 添加相关的 Volume 参数,将 /etc/kubernetes/audit-policy.yaml 挂载到 API Server Pod,内容如下:
    spec:
    containers:
    - command:
      - kube-apiserver
      - --audit-log-maxbackup=10
      - --audit-log-maxsize=100
      - --audit-log-path=/var/log/kubernetes/kubernetes.audit
      - --audit-log-maxage=30
      - --audit-policy-file=/etc/kubernetes/audit-policy.yaml
      ...
      ...    
      volumeMounts:
      - mountPath: /var/log/kubernetes
        name: k8s-audit
      - mountPath: /etc/kubernetes/audit-policy.yaml
        name: audit-policy
        readOnly: true
      ...
      ...
    volumes:
    - hostPath:
        path: /var/log/kubernetes
        type: DirectoryOrCreate
      name: k8s-audit
    - hostPath:
        path: /etc/kubernetes/audit-policy.yaml
        type: FileOrCreate
      name: audit-policy
    ...
     
    

    开启集群审计

    1. 登录 腾讯云容器服务控制台 ,选择左侧导航中的运维功能管理
    2. 在“功能管理”页面上方选择地域和注册集群,单击希望开启集群审计的集群右侧的设置。如下图所示:
    3. 在弹出的“设置功能”窗口,单击“集群审计”功能右侧的编辑
    4. 勾选开启集群审计,选择投递方式和存储审计日志的日志集、日志主题,推荐选择自动创建日志主题
    5. 单击确定即可开启注册集群审计功能。

    审计仪表盘

    容器服务为用户提供了开箱即用的审计仪表盘。在集群开启集群审计功能后,TKE 将自动为该集群配置审计总览、节点操作总览、K8S 对象操作概览、聚合检索仪表盘。还支持用户自定义配置过滤项,同时内置 CLS 的全局检索,方便用户观测和检索各类集群操作,以便于及时发现和定位问题。更多详细介绍,请参考 审计仪表盘

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持