跳到主要内容

Kubernetes 审计

Kubernetes审计(Audit)是Kubernetes集群中用于记录和监控集群活动的重要功能。通过审计日志,管理员可以追踪谁在何时对集群资源执行了什么操作。这对于安全分析、合规性检查以及故障排查至关重要。

什么是Kubernetes审计?

Kubernetes审计是一种机制,用于记录对Kubernetes API服务器的所有请求。这些请求包括创建、更新、删除资源等操作。审计日志可以帮助管理员了解集群中的活动,识别潜在的安全威胁,并确保符合合规性要求。

审计日志通常包含以下信息:

  • 请求者:执行操作的用户或服务账户。
  • 操作:执行的API操作(如createupdatedelete)。
  • 资源:操作的资源类型(如PodDeployment)。
  • 时间戳:操作发生的时间。
  • 结果:操作是否成功。

如何配置Kubernetes审计?

要启用Kubernetes审计,需要在API服务器上配置审计策略和审计后端。审计策略定义了哪些事件需要记录,而审计后端则决定了日志的存储位置。

1. 创建审计策略文件

审计策略文件是一个YAML文件,定义了哪些事件需要记录。以下是一个简单的审计策略示例:

yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
# 记录所有级别的请求
- level: Metadata

在这个示例中,level: Metadata表示记录所有请求的元数据。你可以根据需要调整策略,例如只记录特定资源的操作。

2. 配置API服务器

在Kubernetes API服务器的启动参数中,添加审计策略和审计后端的配置。以下是一个示例:

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

在这个示例中,--audit-policy-file指定了审计策略文件的路径,--audit-log-path指定了审计日志的存储路径。

3. 查看审计日志

审计日志通常以JSON格式存储。你可以使用cattail命令查看日志内容:

bash
tail -f /var/log/kubernetes/audit.log

以下是一个审计日志的示例:

json
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Metadata",
"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": {
"code": 201
},
"requestReceivedTimestamp": "2023-10-01T12:34:56.789Z",
"stageTimestamp": "2023-10-01T12:34:56.790Z"
}

在这个日志中,你可以看到用户admindefault命名空间中创建了一个名为my-pod的Pod。

实际应用场景

场景1:安全审计

假设你怀疑某个用户未经授权删除了集群中的资源。通过审计日志,你可以追踪到该用户的所有操作,并确认是否发生了未经授权的删除操作。

场景2:合规性检查

在某些行业(如金融、医疗),合规性要求必须记录所有对敏感资源的操作。通过配置审计策略,你可以确保所有相关操作都被记录,并满足合规性要求。

总结

Kubernetes审计是确保集群安全和合规性的重要工具。通过配置审计策略和审计后端,你可以记录和监控集群中的所有活动。审计日志不仅有助于安全分析,还能帮助管理员进行故障排查和合规性检查。

附加资源

练习

  1. 在你的Kubernetes集群中启用审计功能,并配置一个简单的审计策略。
  2. 创建一个Pod,并查看审计日志中是否记录了该操作。
  3. 尝试删除一个Pod,并确认审计日志中是否记录了删除操作。

通过以上练习,你将更好地理解Kubernetes审计的工作原理和应用场景。