跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Kubernetes审计
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Kubernetes审计 = '''Kubernetes审计(Kubernetes Auditing)'''是Kubernetes安全机制的核心组成部分,它通过记录集群中发生的所有关键操作(如API请求),帮助管理员监控、分析和排查潜在的安全问题。审计日志提供了对用户、服务账户或系统组件行为的可追溯性,是合规性检查(如GDPR、HIPAA)和事故响应的重要工具。 == 审计工作原理 == Kubernetes审计系统会捕获以下信息: * '''请求来源''':用户、服务账户或系统组件的身份 * '''操作类型''':如`create`、`delete`、`patch`等 * '''目标资源''':操作的Kubernetes资源(如Pod、Deployment) * '''请求和响应状态''':包括HTTP状态码和返回内容(可选) 审计日志以JSON格式存储,支持输出到本地文件或外部日志服务(如Fluentd、Logstash)。 === 审计策略 === 通过定义'''审计策略(Audit Policy)''',管理员可以控制记录哪些事件。策略文件使用YAML格式配置,示例: <syntaxhighlight lang="yaml"> apiVersion: audit.k8s.io/v1 kind: Policy rules: # 记录所有Namespace的删除请求 - level: Metadata verbs: ["delete"] resources: - group: "" resources: ["namespaces"] # 记录Pod变更的请求体和响应体 - level: RequestResponse resources: - group: "" resources: ["pods"] # 忽略只读操作(如get/list) - level: None verbs: ["get", "list", "watch"] </syntaxhighlight> == 配置审计日志 == 以下步骤展示如何启用审计功能: 1. 创建审计策略文件(如`audit-policy.yaml`) 2. 修改API服务器配置(通常在`/etc/kubernetes/manifests/kube-apiserver.yaml`): <syntaxhighlight lang="yaml"> spec: containers: - command: - kube-apiserver - --audit-policy-file=/etc/kubernetes/audit-policy.yaml - --audit-log-path=/var/log/kubernetes/audit.log - --audit-log-maxage=30 # 保留30天日志 </syntaxhighlight> == 日志分析示例 == 一条典型的审计日志条目如下: <syntaxhighlight lang="json"> { "kind": "Event", "apiVersion": "audit.k8s.io/v1", "stage": "ResponseComplete", "user": {"username": "admin"}, "verb": "create", "resource": {"group": "", "resource": "pods"}, "requestURI": "/api/v1/namespaces/default/pods", "responseStatus": {"code": 201}, "requestObject": { "kind": "Pod", "apiVersion": "v1", "metadata": {"name": "nginx"}, "spec": {"containers": [{"name": "nginx", "image": "nginx:latest"}]} } } </syntaxhighlight> == 实际应用场景 == === 场景1:异常操作检测 === 通过分析审计日志,可以识别异常行为模式,例如: * 同一用户在短时间内频繁删除Pod * 非工作时间段的敏感操作 === 场景2:合规性报告 === 使用工具如`kube-audit`或`Falco`生成符合SOC2或PCI-DSS标准的报告: <syntaxhighlight lang="bash"> # 使用jq工具统计操作类型 cat audit.log | jq '.verb' | sort | uniq -c </syntaxhighlight> == 高级配置 == === 日志分级 === Kubernetes支持四种审计级别: <mermaid> pie title 审计级别使用场景 "None" : 15 "Metadata" : 30 "Request" : 25 "RequestResponse" : 30 </mermaid> === 动态审计 === Kubernetes 1.15+支持'''动态审计(Dynamic Auditing)''',允许通过Webhook将日志实时发送到外部系统: <syntaxhighlight lang="yaml"> apiVersion: auditregistration.k8s.io/v1alpha1 kind: AuditSink metadata: name: custom-webhook spec: webhook: throttle: qps: 10 clientConfig: url: "https://audit-collector.example.com" </syntaxhighlight> == 数学建模 == 在日志分析中,可以使用'''香农熵(Shannon Entropy)'''检测异常行为: <math> H(X) = -\sum_{i=1}^{n} P(x_i) \log_b P(x_i) </math> 其中: * <math>P(x_i)</math>是操作<math>x_i</math>出现的概率 * 熵值突然增大可能表示异常活动 == 最佳实践 == 1. '''敏感操作全记录''':如RBAC变更、Secret访问 2. '''日志加密存储''':防止审计日志被篡改 3. '''定期归档分析''':避免存储空间耗尽 4. '''与SIEM系统集成''':如Splunk或ELK Stack == 参见 == * [[Kubernetes RBAC]] * [[Kubernetes网络策略]] * [[云原生安全模型]] [[Category:集成部署]] [[Category:Kubernetes]] [[Category:Kubernetes安全]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)