当前位置: 首页 > news >正文

K8S开启/关闭审计日志

K8S默认禁用审计

在这里插入图片描述
在这里插入图片描述

开启/关闭 k8s 审计日志

默认 Kubernetes 集群不会输出审计日志信息。通过以下配置,可以开启 Kubernetes 的审计日志功能。

  1. 准备审计日志的 Policy 文件
  2. 配置 API 服务器,开启审计日志
  3. 重启并验证

准备审计日志 Policy 文件

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: MetadataomitStages:- RequestReceived- ResponseStartedresources:- group: ""resources: ["pods", "services", "deployments"]verbs: ["create", "update", "delete", "patch"]

将以上审计日志文件放到 /etc/kubernetes/audit-policy/ 文件夹下,并取名为 apiserver-audit-policy.yaml

配置 API 服务器

⚠️只有一个控制平面节点禁止操作,此操作会引起api-server重启,但一旦挂掉,就很难恢复,也就是说,一个控制平面节点不能开启审计,除非集群初始化就指定⚠️

打开 API 服务器的配置文件 kube-apiserver.yaml,一般会在 /etc/kubernetes/manifests/ 文件夹下,并添加以下配置信息:

这一步操作前请备份 kube-apiserver.yaml,并且备份的文件不能放在 /etc/kubernetes/manifests/ 下,建议放在 /etc/kubernetes/tmp

  1. spec.containers.command 下添加命令:

    --audit-log-maxage=30
    --audit-log-maxbackup=1
    --audit-log-maxsize=100
    --audit-log-path=/var/log/audit/kube-apiserver-audit.log
    --audit-policy-file=/etc/kubernetes/audit-policy/apiserver-audit-policy.yaml
    
  2. spec.containers.volumeMounts 下添加:

    - mountPath: /var/log/auditname: audit-logs
    - mountPath: /etc/kubernetes/audit-policyname: audit-policy
    
  3. spec.volumes 下添加:

    - hostPath:path: /var/log/kubernetes/audittype: ""name: audit-logs
    - hostPath:path: /etc/kubernetes/audit-policytype: ""name: audit-policy
    

测试并验证

稍等一会,API 服务器会自动重启,执行以下命令查看/var/log/kubernetes/audit 目录下是否有审计日志生成,若有,则表示 k8s 审计日志成功开启。

ls /var/log/kubernetes/audit

审计日志样例

{"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"0d3e03f1-2c7b-4c55-a457-8153ca3053c7","stage":"ResponseComplete","requestURI":"/api/v1/namespaces/kube-system/pods","verb":"create","user":{"username":"system:node:test3","groups":["system:nodes","system:authenticated"],"extra":{"authentication.kubernetes.io/credential-id":["X509SHA256=f624d02c9b496b091c035973fdebaa49445bc661126811e9e3e0d5254f6a61b5"]}},"sourceIPs":["10.0.2.18"],"userAgent":"kubelet/v1.32.0 (linux/amd64) kubernetes/70d3cc9","objectRef":{"resource":"pods","namespace":"kube-system","name":"etcd-test3","uid":"37d309b452af10f21285eec4372382b6","apiVersion":"v1"},"responseStatus":{"metadata":{},"status":"Failure","message":"pods \"etcd-test3\" already exists","reason":"AlreadyExists","details":{"name":"etcd-test3","kind":"pods"},"code":409},"requestReceivedTimestamp":"2025-01-15T03:04:00.960498Z","stageTimestamp":"2025-01-15T03:04:01.014779Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"","pod-security.kubernetes.io/enforce-policy":"privileged:latest"}}

如果想关闭,去掉 spec.containers.command 中的相关命令即可。

http://www.lryc.cn/news/521857.html

相关文章:

  • css盒子水平垂直居中
  • px、em 和 rem 的区别:深入理解 CSS 中的单位
  • 基于STM32设计的粮食仓库(粮仓)环境监测系统
  • 【后端面试总结】tls中.crt和.key的关系
  • 日拱一卒(20)——leetcode学习记录:大小为 K 且平均值大于等于阈值的子数组数目
  • 项目练习:若依管理系统字典功能-Vue前端部分
  • apache-skywalking-apm-10.1.0使用
  • 计算机视觉算法实战——视频分析(Video Analysis)
  • 全网首发:编译libssh,产生类似undefined reference to `EVP_aes_256_ctr@OPENSSL_1_1_0‘的大量错误
  • 用python实战excel和word自动化
  • 【云计算】OpenStack云计算平台
  • 好用的php商城源码有哪些?
  • docker安装Nginx UI
  • 为深度学习创建PyTorch张量 - 最佳选项
  • 详解数据增强中的平移shft操作
  • CCLINKIE转ModbusTCP网关,助机器人“掀起”工业智能的“惊涛骇浪”
  • 类型安全与代码复用的C# 泛型
  • 卷积神经05-GAN对抗神经网络
  • vscode使用Marscode编程助手
  • 网络分析仪测试S参数
  • docker mysql5.7如何设置不区分大小写
  • 【1】Word:邀请函
  • 【gin】中间件使用之jwt身份认证和Cors跨域,go案例
  • 【JAVA实战】@FeignClient注解类通用请求封装
  • [c语言日寄]精英怪:三子棋(tic-tac-toe)3命慢通[附免费源码]
  • GORM(Go语言数据交互库)
  • Redis主从同步是怎么实现的?
  • Flutter中Get.snackbar避免重复显示的实现
  • [Qt]常用控件介绍-多元素控件-QListWidget、QTableWidget、QQTreeWidget
  • 深入Android架构(从线程到AIDL)_32 JNI架构原理_Java与C的对接05