容器服务 集群审计 - 用户指南
VIEW CONTENTS
摘要: 说明日志服务CLS为容器服务TKE产生的所有审计、事件数据提供免费服务至2021年6月1日。请选择自动创建日志集,或在已有日志集中选择自动创建日志主题。活动详情请参见 ...
点击领取2000元阿里云代金券,付款抵现金用,云服务器69元/年限时抢>>>    点击咨询成为阿里云VIP客户享永久折扣>>>
点击领取2860元腾讯云代金券,付款抵现金用云服务器88元/年限时抢>>>    点击成为腾讯云VIP客户享永久折扣优惠>>>
点击进入华为云最新优惠活动现场>>>    点击成为华为云VIP客户享永久折扣优惠>>>
说明

日志服务 CLS 为容器服务 TKE 产生的所有审计、事件数据提供免费服务至2021年6月1日。请选择自动创建日志集,或在已有日志集中选择自动创建日志主题。活动详情请参见 TKE 容器服务审计与事件中心日志免费说明。

简介

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

功能优势

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

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

阅读审计日志

{
"kind":"Event",
"apiVersion":"audit.k8s.io/v1",
"level":"RequestResponse",
"auditID":0a4376d5-307a-4e16-a049-24e017******,
"stage":"ResponseComplete",
// 发生了什么
"requestURI":"/apis/apps/v1/namespaces/default/deployments",
"verb":"create",
// 谁发起的
"user":{
  "username":"admin",
    "uid":"admin",
    "groups":[
      "system:masters",
      "system:authenticated"
    ]
},
// 从哪里发起
"sourceIPs":[
  "10.0.6.68"
],
"userAgent":"kubectl/v1.16.3 (linux/amd64) kubernetes/ald64d8",
// 发生了什么
"objectRef":{
  "resource":"deployments",
  "namespace":"default",
  "name":"nginx-deployment",
  "apiGroup":"apps",
  "apiVersion":"v1"
},
// 结果是什么
"responseStatus":{
  "metadata":{
  },
  "code":201
},
// 请求及返回具体信息
"requestObject":Object{...},
"responseObject":Object{...},
// 什么时候开始/结束
"requestReceivedTimestamp":"2020-04-10T10:47:34.315746Z",
"stageTimestamp":"2020-04-10T10:47:34.328942Z",
// 请求被接收/拒绝的原因是什么
"annotations":{
  "authorization.k8s.io/decision":"allow",
  "authorization.k8s.io/reason":""
}
}

TKE 集群审计策略

审计级别(level)

和一般日志不同,kuberenetes 审计日志的级别更像是一种 verbose 配置,用来标示记录信息的详细程度。一共有4个级别,可参考以下表格内容:

参数 说明
None 不记录。
Metadata 记录请求的元数据(例如:用户、时间、资源、操作等),不包括请求和响应的消息体。
Request 除了元数据外,还包括请求消息体,不包括响应消息体。
RequestResponse 记录所有信息,包括元数据以及请求、响应的消息体。

审计阶段(stage)

记录日志可以发生在不同的阶段,参考以下表格内容:

参数 说明
RequestReceived 一收到请求就记录。
ResponseStarted 返回消息头发送完毕后记录,只针对 watch 之类的长连接请求。
ResponseComplete 返回消息全部发送完毕后记录。
Panic 内部服务器出错,请求未完成。

TKE 审计策略

TKE 默认收到请求即会记录审计日志,且大部分的操作会记录 RequestResponse 级别的审计日志。但也会存在如下情况:

  • get、list 和 watch 会记录 Request 级别的日志。
  • 针对 secrets 资源、configmaps 资源或 tokenreviews 资源的请求会在 Metadata 级别记录。

以下请求将不会进行记录日志:

  • system:kube-proxy 发出的监视 endpoints 资源、services 资源或 services/status 资源的请求。
  • system:unsecured 发出的针对 kube-system 命名空间中 configmaps 资源的 get 请求。
  • kubelet 发出的针对 nodes 资源或 nodes/status 资源的 get 请求。
  • system:nodes 组中的任何身份发出的针对 nodes 资源或 nodes/status 资源的 get 请求。
  • system:kube-controller-managersystem:kube-schedulersystem:serviceaccount:endpoint-controller 发出的针对 kube-system 命名空间中 endpoints 资源的 get 和 update 请求。
  • system:apiserver 发出的针对 namespaces 资源、namespaces/status 资源或 namespaces/finalize 资源的 get 请求。
  • 对与 /healthz*/version/swagger* 匹配的网址发出的请求。

操作步骤

开启集群审计

注意:

  • 开启集群审计功能需要重启 kube-apiserver ,建议不要频繁开关。
  • 独立集群会占用 Master 节点约1Gib本地存储,请保证 Master 节点存储充足。
  1. 登录 腾讯云容器服务控制台。
  2. 选择左侧导航栏中的【集群运维】>【功能管理】,进入【功能管理】页面。
  3. 在“功能管理”页面上方选择地域,单击希望开启集群审计的集群右侧的【设置】。如下图所示:
  4. 在弹出的“设置功能”窗口,单击“集群审计”功能右侧的【编辑】。
  5. 勾选【开启集群审计】,选择存储审计日志的日志集和日志主题,推荐选择【自动创建日志主题】。
  6. 单击【确定】即可开启集群审计功能。

路过

雷人

握手

鲜花

鸡蛋

相关阅读

2021-9-15 15:04| 发布者: xtyly| 查看: 40| 评论: 0



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )