tnblog
首页
视频
资源
登录

Kubernetes Auditing 审计日志

7828人阅读 2022/6/24 20:24 总访问:3467267 评论:0 收藏:0 手机
分类: 容器编排

Kubernetes

Kubernetes Auditing 审计日志


Kubernetes 审计日志提供了与安全相关的、按时间顺序排列的记录集, 记录每个用户、使用 Kubernetes API 的应用以及控制面自身引发的活动。

Auditing 解决了那些问题?

  • 发生了什么?
  • 什么时候发生的?
  • 谁触发的?
  • 活动发生在哪个(些)对象上?
  • 在哪观察到的?
  • 它从哪触发的?
  • 活动的后续处理行为是什么?

Auditing 的来龙去脉?


审计记录最初产生于 kube-apiserver 内部。每个请求在不同执行阶段都会生成审计事件;这些审计事件会根据特定策略 被预处理并写入后端。策略确定要记录的内容和用来存储记录的后端。 当前的后端支持日志文件和 webhook。

Auditing 阶段

阶段 描述
RequestReceived 此阶段对应审计处理器接收到请求后,并且在委托给其余处理器之前生成的事件。
ResponseStarted 在响应消息的头部发送后,响应消息体发送前生成的事件。 只有长时间运行的请求(例如 watch)才会生成这个阶段。
ResponseComplete 当响应消息体完成并且没有更多数据需要传输的时候。
Panic 当 panic 发生时生成。

审计策略


已定义的审计级别有:

审计日志 描述
None 符合这条规则的日志将不会记录。
Metadata 记录请求的元数据(请求的用户、时间戳、资源、动词等等), 但是不记录请求或者响应的消息体。
Request 记录事件的元数据和请求的消息体,但是不记录响应的消息体。 这不适用于非资源类型的请求。
RequestResponse 记录事件的元数据,请求和响应的消息体。这不适用于非资源类型的请求。


下面是一个简单的Demo,定义在我们的/etc/kubernetes/audit-policy/policy.yaml文件下。

  1. apiVersion: audit.k8s.io/v1
  2. kind: Policy
  3. rules:
  4. # 设置机密资源的审计日志级别为Metadata
  5. - level: Metadata
  6. resources:
  7. - group: ""
  8. resources: ["secrets"]
  9. # 设置节点的审计日志级别为RequestResponse
  10. - level: RequestResponse
  11. userGroups: ["system:nodes"]
  12. # 对于其他内容,不要记录任何内容
  13. - level: None


你可以使用 --audit-policy-file 标志将包含策略的文件传递给 kube-apiserver.yaml
如果不设置该标志,则不记录事件。

注意 rules 字段必须在审计策略文件中提供。没有(0)规则的策略将被视为非法配置。


当然我们也可以使用最低限度的审计策略文件在 Metadata 级别记录所有请求:

  1. # 在 Metadata 级别为所有请求生成日志
  2. apiVersion: audit.k8s.io/v1beta1
  3. kind: Policy
  4. rules:
  5. - level: Metadata


更多Policy配置请参考:https://kubernetes.io/zh-cn/docs/reference/config-api/apiserver-audit.v1/#audit-k8s-io-v1-Policy

添加审计日志


通过对 kube-apiserver.yaml的配置开启后端审计日志。

标志配置 描述
--audit-log-path 指定用来写入审计事件的日志文件路径。不指定此标志会禁用日志后端。
--audit-log-maxage 定义保留旧审计日志文件的最大天数。
--audit-log-maxbackup 定义要保留的审计日志文件的最大数量。
--audit-log-maxsize 定义审计日志文件的最大大小(兆字节)
--audit-policy-file 定义审计日志文件的策略。


这里我们设置审计日志文件的策略/etc/kubernetes/audit-policy/policy.yaml,将审计日志写入/etc/kubernetes/audit-logs/audit.log当中(注意路径需要创建mkdir /etc/kubernetes/audit-logs/),设置最大保留2个审记日志,每个最多7兆。

  1. spec:
  2. containers:
  3. - command:
  4. - kube-apiserver
  5. - --audit-policy-file=/etc/kubernetes/audit-policy/policy.yaml
  6. - --audit-log-path=/etc/kubernetes/audit-logs/audit.log
  7. - --audit-log-maxsize=7
  8. - --audit-log-maxbackup=2


注意组要挂载相关卷。

  1. volumeMounts:
  2. - mountPath: /etc/kubernetes/audit-policy/policy.yaml
  3. name: audit-policy
  4. readOnly: true
  5. - mountPath: /etc/kubernetes/audit-logs
  6. name: audit-logs
  7. readOnly: false
  1. volumes:
  2. - name: audit-policy
  3. hostPath:
  4. path: /etc/kubernetes/audit-policy/policy.yaml
  5. type: File
  6. - name: audit-logs
  7. hostPath:
  8. path: /etc/kubernetes/audit-logs
  9. type: DirectoryOrCreate

由于是kube-apiserver是静态pod,所以稍微等待就可以了。(为了保险起见也可以重启kubelet)

  1. systemctl daemon-reload
  2. systemctl restart kubelet


更多请参考:https://kubernetes.io/zh-cn/docs/tasks/debug/debug-cluster/audit/


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

bk

2020/10/9 14:23:34

我选择 Ctrl + R [嘻嘻]

Serilog 日志简用

Serilog是一个用于.NET应用程序的日志记录开源库,配置简单,接口干净,并可运行在最新的.NET平台上,与其他日志库不同, Se...

Python实例 1-日志抓取处理 补错(附日志小技巧)

有时候数据出了问题,可以从日志中恢复数据(如果你没记日志..没备份..→_→..)一、日志展示介绍个平常自己用的小方法,如...

net core配置错误日志

发布net core项目的时候经常会遇到错误,在页面上也不好直接看到。可能就提示一句话:An error occurred while starting th...

net core使用日志 NLog

一:使用Nuget执行命令下载NLog相关依赖 Install-Package NLog.Extensions.Logging -Pre Install-Package NLo...

日志是写数据库好还是文件好,以及日志策略

先来看看大佬的一句话:离开需求谈技术都是扯淡主要是看你的日志是为了只做一个存储归档,还是要把数据对统计与分析如果只...

封装调用api接口的通用方法(抱含存调用接口日志)

protectedstaticreadonlylog4net.ILog_log=log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod(...

Serilog日志记录到Sqlserver以及其中存在的问题

1.首先来一大串的安装Install-PackageSerilog //控制台输出 Install-PackageSerilog.Sinks.Console //文件输出 Install...

日志文件写入

//新建一个类 publicstaticvoidWrite(stringconter,stringtype,stringremark) { stringname=DateTime.Now.ToShortDateSt...

.net core 日志框架:聊聊记日志的最佳姿势

.net core 日志框架:聊聊记日志的最佳姿势[TOC] 必要的依赖包 Microsoft.Extensions.Configuration.JsonMicrosoft.E...

.net core 日志作用域:解决不同请求之间的日志干扰

.net core 日志作用域:解决不同请求之间的日志干扰[TOC] 作用域的场景 一个事务包含多条操作时复杂流程的日志关联时调...

.net core 结构化日志组件Serilog:记录对查询分析友好的日志

.net core 结构化日志组件Serilog:记录对查询分析友好的日志[TOC] 结构化日志的好处 易于检索易于分析统计 场景举例 ...

windows下清理nginx日志

nginx日志文件太大了,容易影响性能,可以直接删除,nginx会自动创建,但是有可能在直接删除的时候删除不了,nginx一运行又...

docker查看日志

docker logs <container> 后面可以接容器id

sqlserver定时备份执行失败。有关详细信息,请参阅维护计划和 SQL Server 代理作业历史记录日志

考虑是不是SQLServerAgent 没有启动,启动后执行一下定时备份试试

.net core+seq实现日志中心

[TOC] 为什么需要日志中心日志是编写程序常用的功能。在我们排查问题的时候日志是非常有用的。我们的每个服务都在不停的生...
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术