背景概念

出于安全方面的考虑,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新特性:日志审计变化的更多相关文章

  1. [置顶] Kubernetes1.7新特性:支持绕过docker,直接通过containerd管理容器

    背景情况 从Docker1.11版本开始,Docker依赖于containerd和runC来管理容器,containerd是控制runC的后台程序,runC是Docker公司按照OCI标准规范编写的一 ...

  2. [置顶] Kubernetes1.7新特性:新增自动伸缩条件和参数

    一.核心概念 Horizontal Pod Autoscaling,简称HPA,是Kubernetes中实现POD水平自动伸缩的功能.云计算具有水平弹性的特性,这个是云计算区别于传统IT技术架构的主要 ...

  3. [置顶] kubernetes1.7新特性:新增StorageOS卷插件和Local持久存储

    背景介绍 在Kubernetes中卷的作用在于提供给POD存储,这些存储可以挂载到POD中的容器上,进而给容器提供存储. 从图中可以看到结构体PodSpec有个属性是Volumes,通过这个Volum ...

  4. [置顶] kubernetes1.7新特性:PodDisruptionBudget控制器变化

    背景概念 在Kubernetes中,为了保证业务不中断或业务SLA不降级,需要将应用进行集群化部署.通过PodDisruptionBudget控制器可以设置应用POD集群处于运行状态最低个数,也可以设 ...

  5. kubernetes1.5新特性跟踪(续)

    Kubernetes发布历史回顾 Kubernetes 1.0 - 2015年7月发布 Kubernetes 1.1 - 2015年11月发布 Kubernetes 1.2 - 2016年3月发布 K ...

  6. kubernetes1.5新特性跟踪

    Kubernetes发布历史回顾 Kubernetes 1.0 - 2015年7月发布 Kubernetes 1.1 - 2015年11月发布 Kubernetes 1.2 - 2016年3月发布 K ...

  7. kubernetes1.4新特性:增加新的节点健康状况类型DiskPressure

    背景资料 在Kubernetes架构图中可以看到,节点(Node)是一个由管理节点委托运行任务的worker. 它能运行一个或多个Pods,节点(Node)提供了运行容器环境所需要的所有必要条件,在K ...

  8. kubernetes1.4新特性(一):支持sysctl命令

    sysctl是一个允许改变正在运行中的Linux系统内核参数的接口.可以通过sysctl修改Linux系统内核中的TCP/IP 堆栈和虚拟内存系统的高级选项,而且不需要重新启动Linux系统,就可以实 ...

  9. [置顶] kubernetes1.8发布跟踪

    一.Kubernetes发布历史回顾 1.        Kubernetes 1.0 - 2015年7月发布 2.        Kubernetes 1.1 - 2015年11月发布 3.     ...

随机推荐

  1. 深度学习笔记(一):logistic分类【转】

    本文转载自:https://blog.csdn.net/u014595019/article/details/52554582 这个系列主要记录我在学习各个深度学习算法时候的笔记,因为之前已经学过大概 ...

  2. Pomelo热更新刷新handler和remote 以及 pomelo使用bearcat进行热更新

    一. 开启 原生 pomelo 的hotreload支持 pomelo版本: 2.2.5 , 编辑脚本 app.js 加入如下代码 //全局配置 app.configure('production|d ...

  3. 【转载】JExcelApi(JXL)学习笔记

    在公司的项目中,有excel生成.导出的需求,因此学习了用JXL读写excel,做个简单的笔记,以供参考.      实现用java操作excel的工具,一般用的有两个:一个是JXL,另一个是apac ...

  4. LVS-net

    一.LVS基本情况 lvs:Linux Virtual Server,是一种负载均衡集群,其主要是由工作在内核的ipvs与用户空间的命令行工具ipvsadm组成.支持TCP,UDP,AH,EST,AH ...

  5. brpc编译运行

    自百度开源brpc后就一直在关注,看了下brpc都源码,感觉大牛写的果然不一样,由于之前我做c++游戏服务器开发,所以主要看了下网络底层代码,收益颇多,果然一天不学习就要落伍. 现在主要和大家说下我编 ...

  6. maven下载与配置环境变量

    1.打开maven官网下载 http://maven.apache.org/download.cgi 下载 解压(这里博主放在D盘下) 2.配置环境变量 验证是否配置成功 3.本地仓库配置

  7. (转)SQL Server中的索引结构与疑惑

    说实话我从没有在实际项目中使用过索引,仅知道索引是一个相当重要的技术点,因此我也看了不少文章知道了索引的区别.分类.优缺点以及如何使用索引.但关于索引它最本质的是什么笔者一直没明白,本文是笔者带着这些 ...

  8. 在Eclipse中快速添加main方法

    方法一: 在创建类时自动添加,勾选“public static void main(String[]   args)” 方法二: 输入main之后按"alt+/"组合键,选择如图所 ...

  9. HDU - 59562016ACM/ICPC亚洲区沈阳站I - The Elder 树上斜率优化dp

    题意:给定上一棵树,然后每条边有一个权值,然后每个点到 1 的距离有两种,第一种是直接回到1,花费是 dist(1, i)^2,还有另一种是先到另一个点 j,然后两从 j 向1走,当然 j 也可以再向 ...

  10. MyBatis的返回参数类型

    MyBatis的返回参数类型分两种 1. 对应的分类为: 1.1.resultMap: 1.2.resultType: 2 .对应返回值类型: 2.1.resultMap:结果集 2.2.result ...