Ubuntu 与 Kubernetes 的安全性分析
一、安全边界与总体架构
- 在 Ubuntu 上运行的 Kubernetes 需要同时加固操作系统层与集群控制面/数据面,形成从主机到容器、从控制面到应用层的纵深防御。Kubernetes 的核心安全机制覆盖认证(Authentication)、授权(Authorization)、准入控制(Admission)、网络策略(NetworkPolicy)与审计(Audit),Ubuntu 提供稳定的内核与系统基线与加密能力,二者协同构成可信运行环境。
二、Ubuntu 主机层面的安全要点
- 身份与时序
- 启用NTP/chrony进行时间同步,避免因时间漂移导致证书校验、审计与调度异常。
- 网络与端口
- 使用UFW实施最小暴露面:默认拒绝入站,仅对SSH(22/TCP)、API Server(6443/TCP)、Kubelet API(10250/TCP)、etcd(2379/2380/TCP)、**DNS(53/TCP/UDP)**等必要端口按来源网段放行;如不使用 NodePort(30000–32767/TCP) 建议关闭或严格来源限制。
- 内核与容器运行时
- 按需开启桥接流量进入 iptables与IPv4 转发,满足容器网络需求;Kubernetes 要求禁用 Swap;容器运行时优先选择containerd(或符合 CRI 的受支持运行时)。
- 系统加固基线
- 保持系统与组件及时更新/补丁;仅启用必需服务与端口;对管理口与 API 访问实施来源白名单与最小权限访问控制。
三、Kubernetes 集群层面的安全要点
- 通信与身份
- 全组件启用TLS/mTLS,通过kubeadm初始化自动生成/分发证书;定期轮换证书并校验证书有效期与 SAN;对外部访问 API Server 建议使用负载均衡/反向代理 + IP 白名单。
- 认证与授权
- 默认使用X.509 客户端证书;Pod 通过ServiceAccount JWT访问 API;与OIDC集成实现企业身份联邦;采用RBAC遵循最小权限原则,避免在生产直接绑定cluster-admin。
- 准入与运行时
- 启用NodeRestriction等准入控制器;以PodSecurity(取代 PSP)设置基线/受限安全级别;通过LimitRanger/ResourceQuota约束资源;对镜像来源、签名与漏洞扫描进行治理,运行时以非 root、最小能力、只读根文件系统等降低特权。
- 网络与隔离
- 部署NetworkPolicy插件(如 Calico/Cilium),以“默认拒绝”为基线,按命名空间/工作负载精细化放行,减少东西向暴露面。
- 审计与合规
- 启用API Server 审计日志,对敏感操作(如 delete/patch)与关键主体进行记录与告警;使用CIS Kubernetes Benchmark与工具(如 kube-bench)进行配置基线核查与持续合规评估。
四、常见风险与加固对照表
| 风险场景 |
影响 |
加固要点 |
| API Server 暴露或存在不安全端口 |
未授权接管集群 |
仅开放 6443/TCP,启用 TLS;对外访问走 LB/反向代理 + IP 白名单;禁用不安全端口/参数 |
| 弱/长期有效凭据 |
横向扩散、持久化 |
证书轮换(如 90 天);短期 bootstrap token;OIDC 集中身份;RBAC 最小权限 |
| 过度宽松的 RBAC |
权限滥用、提权 |
禁用默认宽泛绑定;定期审计与回收;避免 cluster-admin 滥用 |
| 无网络隔离 |
东西向渗透 |
部署 NetworkPolicy,默认拒绝,按业务最小放行 |
| 不安全镜像/无镜像签名 |
供应链攻击 |
可信基础镜像、镜像签名验证、漏洞扫描、多阶段构建 |
| 容器逃逸/特权滥用 |
主机沦陷 |
禁止特权容器;限制 hostPath;非 root、最小能力、只读根 FS |
| 审计缺失 |
难以追溯与告警 |
启用审计日志,聚焦敏感操作与关键主体,联动告警 |
| 节点与 kubelet 暴露 |
节点被控 |
限制 10250/TCP 来源;启用 NodeRestriction;关闭只读端口(如 10255/TCP) |
| 云凭证泄露 |
云资源被控 |
避免将云密钥写入镜像/环境变量;限制 Pod 对元数据服务与宿主机敏感目录的访问 |
上述风险与对策对应 Kubernetes 的ATT&CK for Kubernetes攻防矩阵要点,以及 Ubuntu 侧的端口/防火墙/内核/运行时最佳实践。
五、面向生产的最小落地清单
- 主机层
- 启用NTP;禁用 Swap;按需开启桥接与转发;仅开放必要端口并以UFW实施白名单;系统与组件及时更新。
- 集群层
- 初始化/维护阶段启用TLS与证书轮换;对外访问 API Server 使用LB/反向代理 + IP 白名单;采用OIDC + RBAC并定期审计;以PodSecurity与准入控制约束特权与配置;部署NetworkPolicy实现默认拒绝;启用审计日志并设置关键告警;对镜像进行签名与漏洞扫描;使用kube-bench按 CIS 基线核查并闭环整改。