3. 证书轮换基础:TLS证书、ServiceAccount 、OIDC证书在Kubernetes中的生命周期
在Kubernetes集群中,证书与令牌是身份验证与传输加密的基石。理解TLS证书、ServiceAccount 和OIDC证书的生命周期,是评估成本与安全风险的前提。证书过期或轮换不当,轻则导致API Server拒绝连接,重则引发服务中断与审计违规。
3.1 三类证书/令牌的核心职责
| 类型 | 用途 | 签发者 | 默认有效期 | 轮换触发条件 |
|---|---|---|---|---|
| TLS证书 | API Server与kubelet、etcd、kube-controller-manager之间的双向TLS加密 | 集群CA(kubeadm默认自签) | 1年(kubeadm) | 证书过期前90天(kubeadm自动轮换)或手动更新 |
| ServiceAccount | Pod内应用访问API Server的身份凭证(JWT) | Controller(API Server内置) | 无过期(v1.21前)/ 1年(v1.21+ TokenRequest API) | Pod重启、手动删除、绑定ServiceAccount变更 |
| OIDC证书 | 外部身份提供者(如Azure AD、Okta)签发的ID ,用于用户登录集群 | 外部OIDC Provider | 由Provider定义(通常1小时~24小时) | 过期后刷新(依赖refresh_)或Provider证书轮换 |
成本视角: TLS证书轮换频率直接影响控制面组件的CPU与网络开销;ServiceAccount 的自动轮换(v1.22+默认开启)会小幅增加API Server的签名负载;OIDC证书依赖外部Provider,轮换失败可能导致整个集群用户无法认证,引发运维人力成本激增。
3.2 TLS证书生命周期
Kubernetes控制面组件之间通过TLS证书建立信任。以kubeadm部署的集群为例,证书生命周期包含四个阶段:
- 签发(Issuance): 集群初始化时,kubeadm生成自签CA,并为API Server、kubelet、etcd、kube-controller-manager、kube-scheduler签发独立证书。
- 使用(Usage): 各组件启动时加载证书文件,建立加密通道。证书文件通常存储在
/etc/kubernetes/pki/目录下。 - 监控(Monitoring): kube-controller-manager内置的
CSRApprovingController监控kubelet证书到期;kubeadm的kubeadm certs check-expiration命令可查看所有证书剩余时间。 - 轮换(Rotation): kubeadm v1.15+支持自动轮换控制面证书(需启用
--cert-dir和--rotate-certificates);kubelet证书由RotateKubeletServerCertificate特性门控控制。
3.3 ServiceAccount 生命周期
ServiceAccount 是Pod内应用访问API Server的默认凭证。Kubernetes v1.22+默认启用 BoundServiceAccountTokenVolume 特性,生命周期发生重大变化:
- 传统(v1.21及之前): 存储在Secret中,永不过期。轮换需要手动删除Secret并重启Pod,安全风险高。
- Bound (v1.22+): 使用TokenRequest API生成,默认有效期1年,自动挂载到Pod的
/var/run/secrets/kubernetes.io/serviceaccount/。Pod重启时自动获取新。 - 轮换触发条件:
- Pod被删除并重新创建(Deployment滚动更新)
- 过期(默认1年,可通过
--service-account-max--expiration调整) - 手动调用TokenRequest API获取新
成本影响: Bound 的自动轮换减少了运维手动操作,但TokenRequest API的签名操作会消耗API Server的CPU资源。在拥有10,000+ Pod的集群中,轮换峰值时API Server的CPU使用率可能上升5%~8%。Kubecost可以通过
kubecost-metrics 采集TokenRequest API的调用频率,帮助定位异常签名负载。
3.4 OIDC证书生命周期
OIDC证书用于集群外部用户身份认证。当用户通过 kubectl 或Dashboard访问集群时,OIDC Provider签发ID ,API Server使用OIDC证书验证签名。
| 阶段 | 描述 | 轮换方式 | 对集群的影响 |
|---|---|---|---|
| Provider证书轮换 | OIDC Provider(如Azure AD)更新其签名证书 | Provider自动轮换,需同步更新API Server的 --oidc-ca-file |
证书不匹配 → 所有OIDC用户认证失败 |
| ID 过期 | 用户持有的JWT 超过有效期(通常1小时) | 客户端使用refresh_获取新ID | 过期 → 用户需要重新登录 |
| Refresh 过期 | 长期凭证过期(通常24小时~90天) | 用户重新进行OAuth2授权流程 | 用户无法自动刷新,需要手动重新认证 |
3.5 证书轮换的成本与安全权衡
证书轮换频率直接影响集群的运维成本与安全风险。Kubecost策略评审需要关注以下指标:
- 轮换频率: 过于频繁(如每天轮换TLS证书)会增加控制面CPU负载与网络开销;过于稀疏(如3年不轮换)则面临证书泄露风险。
- 自动轮换覆盖率: 使用kubeadm自动轮换 + Bound 的集群,运维人力成本降低约70%;手动轮换的集群需要额外安排维护窗口。
- 监控缺失成本: 未部署证书过期监控(如
cert-manager或kubelet-csr-approver)的集群,平均每年发生1~2次证书过期事件,每次恢复耗时2~4小时,折合人力成本约$500~$2000。
审计要点: 在Kubecost的
Assets 视图中,检查控制面节点的CPU使用率是否在证书轮换窗口出现异常峰值;在 Network 视图中,观察API Server的请求延迟是否在轮换期间升高。这些指标直接反映证书轮换对集群成本的影响。