4. K8s集群安全加固
📊 知识结构: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 |
🔖 面试问答卡片
💬 面试问题:如何对 Kubernetes API Server 进行安全加固?请列举至少五项关键措施。
🎯 考察点:是否理解 API Server 作为集群网关的风险;是否熟悉 RBAC、TLS、Webhook 等生产级配置。
📐 回答框架:四层防护:认证(TLS双向+令牌)→ 授权(RBAC+Webhook)→ 准入控制(PodSecurity + OPA)→ 网络隔离(外部访问策略)。
✍️ 示例回答:首先启用 TLS 双向认证并关闭匿名请求;其次严格配置 RBAC,遵循最小权限原则;第三部署准入控制器(如 PodSecurity、OPA);最后通过 NetworkPolicy 限制入站流量,并对敏感操作启用审计日志。
❓ 可能追问:“RBAC 与 Webhook 授权如何优先级处理?”“集群外访问 API Server 的最佳实践?”
💬 面试问题:如何确保 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 加密对性能的影响?”
💬 面试问题: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 有什么区别?”
- ☐ 能否在一分钟内说出 API Server 四层防御模型?
- ☐ 知道 EncryptionConfiguration YAML 中的 identity 和 aescbc 区别?
- ☐ 能复述审计日志三种等级及其适用场景?
- ☐ 节点安全中 PodSecurity 的 privileged/baseline/restricted 选择逻辑?