审计记录

简介

TKEStack 集群审计是基于 Kubernetes Audit 对 kube-apiserver 产生的可配置策略的 JSON 结构日志的记录存储及检索功能。本功能记录了对 kube-apiserver 的访问事件,会按顺序记录每个用户、管理员或系统组件影响集群的活动。

功能优势

集群审计功能提供了区别于 metrics 的另一种集群观测维度。开启 TKEStack 集群审计后,会在集群里的 tke 命名空间下生成 tke-audit-api 的 Deployment,Kubernetes 可以记录每一次对集群操作的审计日志。每一条审计日志是一个 JSON 格式的结构化记录,包括元数据(metadata)、请求内容(requestObject)和响应内容(responseObject)三个部分。其中元数据(包含了请求的上下文信息,例如谁发起的请求、从哪里发起的、访问的 URI 等信息)一定会存在,请求和响应内容是否存在取决于审计级别。通过日志可以了解到以下内容:

  • 集群里发生的活动
  • 活动的发生时间及发生对象。
  • 活动的触发时间、触发位置及观察点
  • 活动的结果以及后续处理行为

阅读审计日志

  1. {
  2. "kind":"Event",
  3. "apiVersion":"audit.k8s.io/v1",
  4. "level":"RequestResponse",
  5. "auditID":0a4376d5-307a-4e16-a049-24e017******,
  6. "stage":"ResponseComplete",
  7. // 发生了什么
  8. "requestURI":"/apis/apps/v1/namespaces/default/deployments",
  9. "verb":"create",
  10. // 谁发起的
  11. "user":{
  12. "username":"admin",
  13. "uid":"admin",
  14. "groups":[
  15. "system:masters",
  16. "system:authenticated"
  17. ]
  18. },
  19. // 从哪里发起
  20. "sourceIPs":[
  21. "10.0.6.68"
  22. ],
  23. "userAgent":"kubectl/v1.16.3 (linux/amd64) kubernetes/ald64d8",
  24. // 发生了什么
  25. "objectRef":{
  26. "resource":"deployments",
  27. "namespace":"default",
  28. "name":"nginx-deployment",
  29. "apiGroup":"apps",
  30. "apiVersion":"v1"
  31. },
  32. // 结果是什么
  33. "responseStatus":{
  34. "metadata":{
  35. },
  36. "code":201
  37. },
  38. // 请求及返回具体信息
  39. "requestObject":Object{...},
  40. "responseObject":Object{...},
  41. // 什么时候开始/结束
  42. "requestReceivedTimestamp":"2020-04-10T10:47:34.315746Z",
  43. "stageTimestamp":"2020-04-10T10:47:34.328942Z",
  44. // 请求被接收/拒绝的原因是什么
  45. "annotations":{
  46. "authorization.k8s.io/decision":"allow",
  47. "authorization.k8s.io/reason":""
  48. }
  49. }

前提条件

Installer 安装页面的控制台安装的第5步中,如下图所示,已经开启平台审计功能,并配置好 ElasticSearch:

查看审计

  1. 登录 TKEStack
  2. 切换至【平台管理】控制台,选择 【运维中心】->【审计记录】,查看审计列表:

4.2.8.3. 审计记录 - 图1

参考

TKEStack 关于审计的相关配置:

  1. # kube-apiserver 地址:/etc/kubernetes/manifests/kube-apiserver.yaml
  2. --audit-policy-file=/etc/kubernetes/audit-policy.yaml # 审计策略
  3. --audit-webhook-config-file=/etc/kubernetes/audit-api-client-config.yaml # 指定 Webhook backend 的配置文件
  4. # 获取 TKEStack 审计组件的详细信息
  5. kubectl describe deploy -ntke tke-audit-api
  6. # 获取 TKEStack 审计的相关配置
  7. kubectl describe cm -ntke tke-audit-api