通过日志可以达到以下目标:
Master节点开启日志审计,API Server配置文件的目录是/etc/kubernetes/manifests/kube-apiserver.yaml
配置 | 说明 |
---|---|
audit-policy-file | 审计日志配置策略文件,文件路径为:/etc/kubernetes/audit-policy.yml。 |
audit-log-path | 审计日志输出路径为/var/log/kubernetes/kubernetes.audit。 |
audit-log-maxsize | 单个审计日志最大内存为100 MB。 |
audit-log-maxbackup | 审计日志最大分片存储10个日志文件。 |
audit-log-maxage | 审计日志最多保存期为7天。 |
参数 | 说明 |
---|---|
None | 不记录。 |
Metadata | 记录请求的元数据(例如:用户、时间、资源、操作等),不包括请求和响应的消息体。 |
Request | 除了元数据外,还包括请求消息体,不包括响应消息体。 |
RequestResponse | 记录所有信息,包括元数据以及请求、响应的消息体。 |
记录日志可以发生在不同的阶段,参考以下表格内容:
参数 | 说明 |
---|---|
RequestReceived | 一收到请求就记录。 |
ResponseStarted | 返回消息头发送完毕后记录,只针对 watch 之类的长连接请求。 |
ResponseComplete | 返回消息全部发送完毕后记录。 |
Panic | 内部服务器出错,请求未完成。 |
Master节点机器,审计配置策略文件的目录是/etc/kubernetes/audit-policy.yml
,内容如下
说明
kube-proxy
watch请求,kubelet
和system:nodes
对于节点的get请求,kube组件在kube-system
下对于endpoint的操作,以及API Server
对于Namespaces
的get请求等不作审计。/healthz*
,/version*
及/swagger*
等只读URL不作审计。目前公司对于Kubernetes集群使用有严格限制,不允许用户登录容器或对容器执行命令,如果有用户执行命令时需要立即给出告警,并希望告警时能够显示用户登录的具体容器、执行的命令、操作人、事件ID、时间、操作源IP等信息
为防止恶意攻击,需要监控内网访问的次数以及失败率,若访问次数到达一定阈值(10次)且失败率高于一定阈值(50%)则立即告警,并希望告警时能够显示用户的IP所属区域、操作源IP、是否高危IP等信息。