Kubernetes 的审计日志和采集

简介: 基础操作 一个正常运行的 Kubernetes 集群,除了利用访问控制对集群操作的许可进行限制之外,对于操作过程的跟踪审计也是比不可少的,围绕不同的实体,例如用户、节点以及各种工作负载进行观测是很有必要的。

基础操作

一个正常运行的 Kubernetes 集群,除了利用访问控制对集群操作的许可进行限制之外,对于操作过程的跟踪审计也是比不可少的,围绕不同的实体,例如用户、节点以及各种工作负载进行观测是很有必要的。Kubernetes 的 API Server 提供了审计日志支持,利用审计日志的方式对系统内的操作进行记录,这里我们可以沿用推荐的 Elastic Search + Fluentd 对审计日志进行采集存储,最终使用 Kibana 或者其他支持 ES 查询的工具对关键资源或用户进行访问跟踪。

首先要启用 API Server 的审计功能。Kubernetes 提供了四个基础参数来定义审计功能:


  • audit-log-path 启用审计日志,并将日志内容写入指定文件,“-” 代表 stdout。
  • audit-log-maxage 日志文件的最大保存天数,根据文件名中的日期进行确定。
  • audit-log-maxbackup 最多保存日志文件的数量。
  • audit-log-maxsize 最大文件尺寸,超过尺寸会被翻转。单位是 MB,缺省为 100MB。

例如:

--audit-log-path=/var/log/kubernetes/kubernetes.audit \
--audit-log-maxage=7 \
--audit-log-maxbackup=4 \
--audit-log-maxsize=10

在 Kubernetes API Server 的启动参数中加入这些开关之后,重新启动服务。

这时我们就可以看到文件/var/log/kubernetes/kubernetes.audit已经生成。利用 tail 命令看看他的结构和内容,例如请求内容是这样的:

2017-08-30T16:28:35.485818099+08:00 AUDIT: id="ebc47b7b-c4fe-4a9a-861c-d9686903cec4" ip="127.0.0.1" method="GET" user="system:apiserver" groups="\"system:masters\"" as="<self>" asgroups="<lookup>" namespace="<none>" uri="/apis/admissionregistration.k8s.io/v1alpha1/initializerconfigurations"

而响应内容格式如下:

2017-08-30T16:28:35.486131325+08:00 AUDIT: id="ebc47b7b-c4fe-4a9a-861c-d9686903cec4" response="404"

我们本文中暂时只对请求内容进行进一步解析,响应内容可以通过加入第二格式的方式进行采集。内容中的id字段,可以看作是会话 id,用于连接请求和响应。

根据上述文本内容,可以开始 Fluentd 文件的编写。请求和响应的内容都很规则,简单的正则表达式即可完成解析,例如我写的是这样的:

<source>
 type tail
 format /^(?<time>\d.*?)\s+(?<action>\w+).\s+id=\"(?<id>.*?)\"\s+ip=\"(?<ip>.*?)\"\s+method=\"(?<method>.*?)\"\s+user=\"(?<user>.*?)\"\s+groups=(?<groups>.*?)\s+as=\"(?<as>.*?)\"\s+asgroups=\"(?<asgroups>.*?)\"\s+namespace=\"(?<namespace>.*?)\"\s+uri=\"(?<uri>.*?)\"$/
 path /var/log/kubernetes/kubernetes.audit
 pos_file /var/log/audit.pos
 time_format %Y-%m-%dT%H:%M:%S.%N%z
 tag audit.response
</source>

将这一部分内容加入到 Fluentd 配置之中去,启动抓取。日志入库之后,我们就可以对指定用户或者资源进行查询,获知他的黑历史了,例如我们要查找用户admin的操作历史:

{ "query": { "match": { "user": { "query": "admin", "type": "phrase" } } } }

在 Kibana 中执行查询,会看到类似内容(如果所在集群没有该用户,可以替换为 system:apiserver等内置用户进行测试):

利用解析出的各个字段,可以比较清楚的看到什么人,在什么时间,对什么对象进行了什么操作。

高级审计

在 Kubernetes 1.7 中新增了 Advanced audit 特性(Alpha),可以对审计内容、以及后续处理进行定义。

  • 首先加入了审计策略的支持,可以使用行为,动作等条件进行限制,过滤掉无需考虑的审计内容。
  • 存储后端在日志之外,还增加了 Web Hook 的支持,可以直接将审计内容发布到指定的 Web 服务中。
本文转自中文社区- Kubernetes 的审计日志和采集
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
Kubernetes Shell Linux
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
58 0
|
30天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【2月更文挑战第29天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的提升,有效的监控和日志管理变得至关重要。本文将探讨构建高效 Kubernetes 集群监控系统的策略,以及实施日志聚合和分析的最佳实践。通过引入如 Prometheus 和 Fluentd 等开源工具,我们旨在为运维专家提供一套完整的解决方案,以保障系统的稳定性和可靠性。
|
28天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践
【2月更文挑战第31天】 在微服务架构日益普及的今天,容器编排工具如Kubernetes已成为部署、管理和扩展容器化应用的关键平台。然而,随着集群规模的扩大和业务复杂性的增加,如何有效监控集群状态、及时响应系统异常,以及管理海量日志信息成为了运维人员面临的重要挑战。本文将深入探讨 Kubernetes 集群监控的最佳实践和日志管理的高效策略,旨在为运维团队提供一套系统的解决思路和操作指南。
26 0
EMQ
|
2月前
|
JSON 安全 API
EMQX Enterprise 5.3 发布:审计日志、Dashboard 访问权限控制与 SSO 一站登录
EMQX Enterprise 5.3.0 版本已正式发布! 新版本带来多个企业特性的更新,包括审计日志,Dashboard RBAC 权限控制,以及基于 SSO(单点登录)的一站式登录,提升了企业级部署的安全性、管理性和治理能力。此外,新版本还进行了多项改进以及 BUG 修复,进一步提升了整体性能和稳定性。
EMQ
285 1
|
3月前
|
网络安全 数据安全/隐私保护
使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1【优化篇】
使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1【优化篇】
28 0
|
3月前
|
JSON NoSQL 网络安全
业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1
业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1
39 0
|
4月前
|
SQL 弹性计算 监控
构建多账号云环境的解决方案|多账号云上操作日志统一审计
操作审计(ActionTrail)是阿里云提供的云账号资源操作记录的查询和投递服务,可用于安全分析、资源变更追踪以及合规性审计等场景。企业在阿里云采用多账号的资源结构时,如何满对跨账号跨地域的云上操作日志进行统一归集留存和分析,是企业上云管云过程的必备环节。此次分享为您介绍如何使用操作审计产品进行中心化的审计,提升云上多账号操作的可控可见性,及时发现问题、响应问题,规避潜在风险。
251 0
|
4月前
|
存储 Kubernetes Cloud Native
云原生|kubernetes|apiserver审计日志的开启
云原生|kubernetes|apiserver审计日志的开启
45 0
|
4月前
|
Kubernetes Cloud Native 网络协议
云原生|kubernetes|搭建部署一个稳定高效的EFK日志系统
云原生|kubernetes|搭建部署一个稳定高效的EFK日志系统
73 0
|
存储 监控 Kubernetes
Kubernetes 日志查询分析实践
本文将介绍如何基于日志服务实现对 Kubernetes(以下简称 K8s)日志的采集以及查询分析,此外,还附带了对 Ingress、Audit 方案的简要介绍。为了方便大家通过操作来加深理解,本文提供了详细的操作步骤以及对应截图和配置代码。
1264 0
Kubernetes 日志查询分析实践