4. K8s集群安全加固

学习目标:掌握 API Server、etcd、审计日志、节点四大防护面的核心安全措施,能应对面试中的架构级与配置级追问。

📊 知识结构:K8s集群安全加固四大支柱

支柱核心措施关键配置/工具
API Server 安全RBAC、TLS双向认证、匿名请求禁用、准入Webhook--authorization-mode=RBAC,Webhook
--client-ca-file
etcd 加密传输层TLS + 静态数据加密(EncryptionConfiguration)--peer-client-cert-auth
--experimental-encryption-provider-config
审计日志启用Audit Policy,记录敏感操作,集中存储--audit-policy-file
--audit-log-path
节点安全CIS基准、Pod安全标准(PSA)、最小权限kube-bench、PodSecurity admission
K8s集群安全加固面试回答框架 集群安全加固 API Server 安全 RBAC + 准入Webhook TLS双向 + 禁用匿名 etcd 加密 传输TLS + 静态加密 审计日志 分层策略 + 日志归档 节点安全 CIS基准 + PodSecurity ✏️ 面试时按此四层逐一展开,先总后分,体现系统性

🔖 面试问答卡片

💬 面试问题:如何对 Kubernetes API Server 进行安全加固?请列举至少五项关键措施。

🎯 考察点:是否理解 API Server 作为集群网关的风险;是否熟悉 RBAC、TLS、Webhook 等生产级配置。

📐 回答框架:四层防护:认证(TLS双向+令牌)→ 授权(RBAC+Webhook)→ 准入控制(PodSecurity + OPA)→ 网络隔离(外部访问策略)。

✍️ 示例回答:首先启用 TLS 双向认证并关闭匿名请求;其次严格配置 RBAC,遵循最小权限原则;第三部署准入控制器(如 PodSecurity、OPA);最后通过 NetworkPolicy 限制入站流量,并对敏感操作启用审计日志。

❓ 可能追问:“RBAC 与 Webhook 授权如何优先级处理?”“集群外访问 API Server 的最佳实践?”

⚠️ 避坑提醒:别只答 RBAC,面试官期望看到“按层递进”的防御深度;不要忘记禁用匿名请求(--anonymous-auth=false)。

💬 面试问题:如何确保 etcd 的通信和存储安全?请具体说明配置步骤。

🎯 考察点:是否理解 etcd 是集群的“命根子”;是否清楚传输层与静态层两种加密方式。

📐 回答框架:传输层:启用 --peer-client-cert-auth 和 --client-cert-auth,使用独立的 CA。静态层:创建 EncryptionConfiguration 资源,指定 provider 为 aescbc 或 kms,并注意 key 轮换。

✍️ 示例回答:在 etcd 启动参数中设置 --cert-file 和 --key-file 开启 TLS;Client/Peer 均启用客户端证书认证。然后通过 EncryptionConfiguration 将 etcd 中的 Secrets 用 AES-CBC 加密,注意提前备份解密密钥。

❓ 可能追问:“EncryptionConfiguration 支持哪些 provider?如何做 key 轮换?”“etcd 加密对性能的影响?”

⚠️ 避坑提醒:强调“传输与静态双重加密”,避免只答 TLS;不要忽略 EncryptionConfiguration 中资源的 regex 匹配;key 轮换需要重启 API Server。

💬 面试问题:Kubernetes 审计日志如何配置和管理?节点安全加固的核心原则是什么?

🎯 考察点:审计日志的启停、策略分层、日志持久化;节点安全的 CIS 基准、PodSecurity 标准。

📐 回答框架:审计日志:创建 AuditPolicy(Metadata/Request/RequestResponse 等级)→ 挂载到 API Server → 输出到本地或外部存储。节点安全:运行 kube-bench 检查 → 应用 PodSecurity 准入 → 最小化节点所装组件。

✍️ 示例回答:审计日志:通过 --audit-policy-file 指定策略,对敏感操作(Secret/Pod exec)记录 RequestResponse 级别,并接入日志系统(如 ES)。节点安全:定期执行 CIS 扫描,禁用非必要 daemon,设置 PodSecurity 标准为 restricted。

❓ 可能追问:“如何避免审计日志吞掉磁盘?”“PodSecurity 与 OPA 有什么区别?”

⚠️ 避坑提醒:审计日志回答要点出“避免记录大量无关请求”,使用 Metadata 级别;节点安全不要只说“更新”,要提具体配置项如 AppArmor、seccomp。
📝 课后自检清单:
  • ☐ 能否在一分钟内说出 API Server 四层防御模型?
  • ☐ 知道 EncryptionConfiguration YAML 中的 identity 和 aescbc 区别?
  • ☐ 能复述审计日志三种等级及其适用场景?
  • ☐ 节点安全中 PodSecurity 的 privileged/baseline/restricted 选择逻辑?