最新更新:

    接收和自定义审计日志

    Kube AI Hub 审计日志提供了与安全相关的、按时间顺序排列的记录集,记录每个用户、管理员或系统其他组件对系统产生影响的一系列活动。对 Kube AI Hub 的每个请求都会生成一个事件,随后该事件会写入 Webhook 并根据特定规则进行处理。根据不同规则,该事件会被忽略、存储或生成告警。

    启用 Kube AI Hub 审计日志

    要启用审计日志,请参见 Kube AI Hub 审计日志

    接收来自 Kube AI Hub 的审计日志

    Kube AI Hub 审计日志系统默认只接收来自 Kube AI Hub 的审计日志,同时也可以接收来自 Kubernetes 的审计日志。

    用户可以使用以下命令在命名空间 kubesphere-system 中修改 kubesphere-config ConfigMap 中 auditing.enable 的值,停止接收来自 Kube AI Hub 的审计日志:

    kubectl edit cm -n kubesphere-system kubesphere-config
    

    auditing.enabled 的值修改为 false,停止接收来自 Kube AI Hub 的审计日志。

      spec:
        auditing:
          enabled: false
    

    您需要重启 Kube AI Hub Apiserver 使修改生效。

    接收来自 Kubernetes 的审计日志

    要使 Kube AI Hub 审计日志系统接收来自 Kubernetes 的审计日志,您需要向 /etc/kubernetes/manifests/kube-apiserver.yaml 添加 Kubernetes 审计策略文件和 Kubernetes 审计 Webhook 配置文件。

    审计策略

    apiVersion: v1
    kind: Pod
    metadata:
      name: kube-apiserver
      namespace: kube-system
    spec:
      containers:
      - command:
        - kube-apiserver
        - --audit-policy-file=/etc/kubernetes/audit/audit-policy.yaml
        - --audit-webhook-config-file=/etc/kubernetes/audit/audit-webhook.yaml
        volumeMounts:
        - mountPath: /etc/kubernetes/audit
          name: k8s-audit
          readOnly: true
      volumes:
      - hostPath:
          path: /etc/kubernetes/audit
          type: DirectoryOrCreate
        name: k8s-audit
    

    备注

    该操作会重启 Kubernetes Apiserver。

    audit-policy.yaml 文件定义了关于应记录哪些事件和应包含哪些数据的规则。您可以使用最小审计策略文件记录元数据级别的所有请求。

    # Log all requests at the Metadata level.
    apiVersion: audit.k8s.io/v1
    kind: Policy
    rules:
    - level: Metadata
    

    有关审计策略的更多信息,请参见审计策略

    审计 Webhook

    audit-webhook.yaml 文件定义了 Kubernetes 审计日志将要发送至的 Webhook。以下是 Kube-Auditing Webhook 的示例配置。

    apiVersion: v1
    kind: Config
    clusters:
    - name: kube-auditing
      cluster:
        server: https://{ip}:6443/audit/webhook/event
        insecure-skip-tls-verify: true
    contexts:
    - context:
        cluster: kube-auditing
        user: ""
      name: default-context
    current-context: default-context
    preferences: {}
    users: []
    

    ip 即命名空间 kubesphere-logging-systemkube-auditing-webhook-svc 服务的 CLUSTER-IP,您可以使用以下命令来获取。

    kubectl get svc -n kubesphere-logging-system
    

    备注

    修改这两个文件后,您需要重启 Kubernetes Apiserver 使修改生效。

    使用以下命令编辑 kube-auditing-webhook CRD Webhook,将 k8sAuditingEnabled 的值改为 true

    kubectl edit webhooks.auditing.kubesphere.io kube-auditing-webhook
    
    spec:
      auditing:
        k8sAuditingEnabled: true
    

    提示

    您也可以使用拥有 platform-admin 角色的用户登录控制台,在集群管理页面转到定制资源定义,搜索 Webhook,直接编辑 kube-auditing-webhook

    要停止接收来自 Kubernetes 的审计日志,请移除审计 Webhook 后端的配置,然后将 k8sAuditingEnabled 的值修改为 false

    自定义审计日志

    Kube AI Hub 审计日志系统提供 kube-auditing-webhook CRD Webhook 来自定义审计日志。下方是一个示例 YAML 文件:

    apiVersion: auditing.kubesphere.io/v1alpha1
    kind: Webhook
    metadata:
      name: kube-auditing-webhook
    spec:
      auditLevel: RequestResponse
      auditSinkPolicy:
        alertingRuleSelector:
          matchLabels:
            type: alerting
        archivingRuleSelector:
          matchLabels: 
            type: persistence
      image: kubesphere/kube-auditing-webhook:v0.1.0
      archivingPriority: DEBUG
      alertingPriority: WARNING
      replicas: 2
      receivers:
        - name: alert
          type: alertmanager
          config:
            service:
              namespace: kubesphere-monitoring-system
              name: alertmanager-main
              port: 9093
    
    参数 描述信息 默认值
    replicas Kube-Auditing Webhook 的副本数量。 2
    archivingPriority 存档规则的优先级。已知的审计类型有 DEBUGINFOWARNING DEBUG
    alertingPriority 告警规则的优先级。已知的审计类型有 DEBUGINFOWARNING WARNING
    auditLevel 审计日志的级别。已知的级别有:
    - None:不记录事件。
    - Metadata:记录请求的元数据,例如请求的用户、时间戳、资源和操作行为 (Verb) 等,但不记录请求或响应的消息体。
    - Request:记录事件的元数据和请求的消息体但不记录响应的消息体。这不适用于非资源类型的请求。
    - RequestResponse:记录事件的元数据、请求以及响应的消息体。这不适用于非资源类型的请求。
    Metadata
    k8sAuditingEnabled 是否接收 Kubernetes 审计日志。 false
    receivers 接收告警的接收器。

    备注

    您可以通过修改 audit-policy.yaml 文件变更 Kubernetes 审计日志的级别,然后重启 Kubernetes Apiserver。