跳到主要内容

Kubernetes 审计日志

Kubernetes审计日志(Audit Logs)是Kubernetes集群中记录所有API请求和响应的日志。这些日志可以帮助管理员监控集群中的活动,识别潜在的安全问题,并满足合规性要求。本文将详细介绍Kubernetes审计日志的概念、配置方法以及实际应用场景。

什么是Kubernetes审计日志?

Kubernetes审计日志记录了所有对Kubernetes API服务器的请求和响应。这些日志包括请求的来源、请求的内容、响应的状态码以及请求的时间戳等信息。通过审计日志,管理员可以追踪谁在什么时候对集群做了什么操作。

审计日志的主要用途包括:

  • 安全监控:识别未经授权的访问或异常行为。
  • 故障排查:帮助诊断集群中的问题。
  • 合规性:满足监管机构对日志记录的要求。

配置Kubernetes审计日志

要启用Kubernetes审计日志,需要在API服务器的配置文件中添加审计策略和日志后端。以下是一个简单的审计策略配置示例:

yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
users: ["system:anonymous"]
verbs: ["get", "list", "watch"]
resources:
- group: ""
resources: ["pods"]
- level: RequestResponse
users: ["admin"]
verbs: ["create", "update", "delete"]
resources:
- group: ""
resources: ["secrets"]

在这个策略中:

  • level 定义了日志的详细程度,可以是 NoneMetadataRequestResponse
  • users 指定了哪些用户的请求需要被记录。
  • verbs 指定了哪些操作需要被记录。
  • resources 指定了哪些资源需要被记录。

接下来,需要在API服务器的启动参数中指定审计策略文件和日志后端:

bash
--audit-policy-file=/etc/kubernetes/audit-policy.yaml
--audit-log-path=/var/log/kubernetes/audit.log

审计日志的格式

审计日志通常以JSON格式存储,每条日志记录包含以下字段:

json
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "12345678-1234-1234-1234-123456789012",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/default/pods",
"verb": "create",
"user": {
"username": "admin",
"groups": ["system:authenticated"]
},
"sourceIPs": ["192.168.1.1"],
"objectRef": {
"resource": "pods",
"namespace": "default",
"name": "my-pod",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 201
},
"requestReceivedTimestamp": "2023-10-01T12:34:56Z",
"stageTimestamp": "2023-10-01T12:34:57Z"
}

实际应用场景

场景1:监控敏感操作

假设你希望监控所有对 secrets 资源的创建、更新和删除操作。你可以配置审计策略如下:

yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: RequestResponse
users: ["*"]
verbs: ["create", "update", "delete"]
resources:
- group: ""
resources: ["secrets"]

这样,所有对 secrets 的操作都会被详细记录,包括请求和响应的内容。

场景2:排查故障

假设你发现某个Pod无法启动,你可以通过审计日志查找与该Pod相关的所有操作:

bash
grep "my-pod" /var/log/kubernetes/audit.log

这将帮助你快速定位问题所在。

总结

Kubernetes审计日志是监控和记录集群活动的强大工具。通过合理配置审计策略,你可以确保集群的安全性和合规性。本文介绍了如何配置审计日志、日志的格式以及实际应用场景。

附加资源

练习

  1. 配置一个审计策略,记录所有对 configmaps 资源的操作。
  2. 使用审计日志排查一个Pod创建失败的原因。
提示

在配置审计日志时,确保日志文件的大小和保留策略,以避免磁盘空间被耗尽。