Kubernetes1.7 新特性:日志审计变化
背景概念
出于安全方面的考虑,Kubernetes提供了日志审计记录,用来记录不同普通用户、管理员和系统中各个组件的日志信息。
Kubernetes日志审计是Kube-apiserver组件的一部分功能,通过日志审计来记录apiserver上面所有请求处理过程。每条审计日志记录包括两行:
1、 请求行:唯一ID、源IP、请求用户、请求资源信息、模拟信息等。
2、 响应行:唯一ID、相应信息代码。
通过唯一ID就可以识别出对应的请求行和响应行。
下面的例子就是admin用户查询default命名空间中pod信息的两行审计日志信息。
- 2017-03-21T03:57:09.106841886-04:00 AUDIT:id=”c939d2a7-1c37-4ef1-b2f7-4ba9b1e43b53″ ip=”127.0.0.1″method=”GET” user=”admin”groups=”\”system:masters\”,\”system:authenticated\””as=”<self>” asgroups=”<lookup>”namespace=”default” uri=”/api/v1/namespaces/default/pods”
- 2017-03-21T03:57:09.108403639-04:00 AUDIT:id=”c939d2a7-1c37-4ef1-b2f7-4ba9b1e43b53″ response=”200″
1.7 新特性
我们先来看看1.7版本中日志审计相关的几个核心结构体:
在Kubernetes 1.7中,新增加了两个结构体,分别是AuditOptions和AuditWebhookOptions。在AuditOptions结构体中通过LogOptions参数来对应之前版本的AuditLogOptions结构体。
一、AuditLogOptions结构体介绍
1、 Path参数:如果设置了这个参数,那么所有访问apiserver的请求都会被记录到这个参数指向的文件,也可以设置成“-”,这样表示请求输出到标准输出中。
2、 MaxAge参数:保存日志审计记录的最大天数,超出保存最大天数的日志审计记录都会被删除掉。
3、 MaxBackups参数:保存日志审计记录文件的最大个数,超出保存最大个数的日志审计记录都会被删除掉。
4、 MaxSize参数:一个日志审计记录文件的最大空间,单位是M。
二、AuditWebhookOptions结构体介绍
1、 ConfigFile参数:将Kubernetes日志审计结果向外部输出的配置文件。
2、 Mode参数:将Kubernetes日志审计结果向外部输出模式。在1.7版本中有两种输出模式,batch模式,表示缓存日志审计记录,然后批量发送给外部接收端;blocking模式,表示每条发送给外部接收端,发送的时候apiserver处在阻塞状态。
三、AuditOptions结构体介绍
1、 PolicyFile参数:日志审计策略配置文件,通过这个文件可以配置哪些信息会生成日志审计记录。
2、 LogOptions参数:表示AuditLogOptions结构体。
3、 WebhookOptions参数:表示AuditWebhookOptions结构体。
在kubernetes1.7中如果想启用日志审计新的功能,那么需要在启动kube-apiserver组件时,增加一个新的参数: –feature-gates=AdvancedAuditing=true。
一旦启用了AdvancedAuditing参数,那么kubernetes在日志审计中就可以配置审计策略和审计处理方式。日志审计策略配置文件中可以配置不同审计级别策略,包括:
1、 None:与此规则匹配的日志审计事件不用被记录。
2、 Metadata:记录请求的元数据信息,包括用户、时间戳、请求类型等信息。
3、 Request:记录请求的元数据和请求内容信息。
4、 RequestResponse:记录请求的元数据、请求内容信息、响应内容信息。
另外一旦启用了这个参数,日志审计也不会按照之前每条审计日志记录两行信息了。日志审计记录在不同的阶段会记录不同的信息,其中包括:
1、 RequestReceived阶段:在这个阶段,审计处理程序收到请求后立即生成日志审计事件。
2、 ResponseStarted阶段:在这个阶段,响应标头被发送出去了,但是响应内容还没有被发送,此日志审计记录在长时间运行的响应时会生成。
3、 ResponseComplete阶段:在这个阶段,一旦响应内容被发送出去了,那么就会生成日志审计记录。
4、 Panic阶段:当有错误发生时,会生成日志审计记录。
新特性例子
1、 下面的例子是日志审计策略配置文件的配置信息,表示按照Metadata级别记录所有请求信息:
rules: - level: Metadata
2、 下面的例子是日志审计策略配置文件的配置信息,表示不对用户system:kube-proxy在endpoints和services两种类型资源上的信息进行审计。
rules: - level: None users:["system:kube-proxy"] verbs: ["watch"] resources: - group: "" #core API group resources:["endpoints", "services"]
3、 下面的例子是日志审计策略配置文件的配置信息,表示审计表空间kube-system中configmaps资源类型的请求。
rules: # Log the request body ofconfigmap changes in kube-system. - level: Request resources: - group: "" #core API group resources:["configmaps"] # This rule only appliesto resources in the "kube-system" namespace. # The empty string"" can be used to select non-namespaced resources. namespaces:["kube-system"]
4、 下面的例子是设置审计处理方式
--audit-webhook-config-file=/etc/kubernetes/audit-webhook-kubeconfig --audit-webhook-mode=batch
使用batch模式,向/etc/kubernetes/audit-webhook-kubeconfig文件中配置的服务端发送日志审计信息。
本文转自中文社区-Kubernetes1.7 新特性:日志审计变化
Kubernetes1.7 新特性:日志审计变化相关推荐
- C# 10 新特性 —— 命名空间的变化
C# 10 新特性 -- 命名空间的变化 Intro C# 10 针对命名空间做了一些改变,主要是 Global Usings 和 File-scoped Namespace,我们前面分享的示例其实也 ...
- Kubernetes1.7新特性:支持绕过docker,直接通过containerd管理容器
背景情况 从Docker1.11版本开始,Docker依赖于containerd和runC来管理容器,containerd是控制runC的后台程序,runC是Docker公司按照OCI标准规范编写的一 ...
- kubernetes1.4新特性:支持两种新的卷插件
背景介绍 在Kubernetes中卷的作用在于提供给POD持久化存储,这些持久化存储可以挂载到POD中的容器上,进而给容器提供持久化存储. 从图中可以看到结构体PodSpec有个属性是Volumes, ...
- Kubernetes1.6新特性-不回收静态POD
一.静态POD介绍 在Kubernetes中有一个DaemonSet类型的POD,这种类型的POD可以在某个节点上长期运行,这种类型的POD就是静态POD. 静态POD直接由某个节点上的kubelet ...
- Kubernetes1.5新特性(一):Kubelet API增加认证和授权能力
2019独角兽企业重金招聘Python工程师标准>>> 背景介绍 在Kubernetes1.5中,对于kubelet新增加了几个同认证/授权相关的几个启动参数,分别是: 认证相关参数 ...
- Kubernetes1.4新特性前瞻:设置JOB执行计划
(一) 核心概念 Kubernetes在新版中会新增了一个设置JOB执行计划的功能,在1.3中已经可以初见端倪了,从进度上来看会在1.4版本中进行发布,下面我们先睹为快. Kubernetes通过这 ...
- PHP 7.0+新特性
php7.0至php7.3的新特性和一些变化 PHP7.0 PHP7.0新特性 1. 组合比较符 (<=>) 组合比较符号用于比较两个表达式.当$a小于.等于或大于$b时它分别返回-1.0 ...
- 【PHP】PHP7新特性
PHP7新特性 PHP7.0 PHP7.0新特性 PHP7.0 变化 PHP7.1 PHP7.1新特性 PHP7.1变化 PHP7.2 PHP7.2新特性 PHP7.2变更 PHP7.3 PHP7.3 ...
- HTML5新特性(新元素、更强大的forms、整合的API)
文章目录 HTML5新特性 新元素 Forms变化 Integrated API HTML5新特性 编写html5文档时,你最先注意到的新特性是文档类型声明: <!DOCTYPE HTML> ...
最新文章
- 零售行业SAP项目 --- SAP顾问向大数据转型的契机
- stata安装_Stata自带的代码编辑器太丑了,那为何不使用Jupyter Notebook?
- MYSQL如何导出存储过程和触发器?
- Java好学吗 没基础能学会吗
- PHP底层运行原理初探
- 谈谈我对Promise的理解
- Unity 分离贴图 alpha 通道实践
- 第九十三期:带你聊聊 Java 并发编程之线程基础
- MySQL 优化 —— WHERE 子句优化
- ashx获取input file 文件_前端战五渣学前端——FileReader预览本地文件
- 操作自定义属性、H5自定义属性
- graphpad饼状图_Graphpad Prism 堆叠图
- 墙壁绘画机器人 ||arduino processing
- 什么是用户代理样式表
- 南工院计算机答辩,人工智能与计算机学院举行“智能之星”评选答辩会
- backtrader最大的坑:没有内置处理涨跌停板
- 华为软件迁移实践微认证题库
- CURSOR 的用法
- 大数据——Flink dataStream 中窗口函数的使用
- Java 使用Virtual Serial Port Driver及Modsim32进行modbus-rtu协议模拟(从机)并使用java当做主机(Maven项目)进行从机信息获取及修改
热门文章
- Linux取消挂载,删除用户及其目录
- BLE - LINK LAYER SPECIFICATION
- c/c++头文件之string.h、cstring与string的区别
- [转]影响Cache的几个HTTP头信息
- 在线OPML美化格式化工具
- TensorFlow 2.0开发者测试版来啦,正式版推出指日可待
- Android Studio 完美解决 “Android SDK Manager 无法更新“、 ”connection error” 的问题...
- 《Using Docker》书评和与作者Adrian Mouat的问答
- 如何激活Microsoft Office 2010?
- AWK 高端大气上档次