Kubernetes API Server 认证机制深度解析
在云原生架构中,Kubernetes 已成为容器编排的事实标准。但很多团队在部署完集群后,对 API Server 的认证授权机制理解不深,导致权限配置混乱甚至安全隐患。
洹拓科技在为多家企业做云原生改造时,发现一个普遍现象:大家都在用 RBAC,但真正理解”为什么这么配”的人不多。今天我们就从 API Server 的认证流程讲起,把这套机制彻底拆开。
API Server 请求的三道关卡
当一个 kubectl 命令或 API 调用到达 API Server 时,会依次经过三个阶段:
认证(Authentication):你是谁?
API Server 支持多种认证方式:
- X.509 客户端证书
- Bearer Token(ServiceAccount Token、OIDC Token)
- Basic Auth(已废弃,别用)
- Webhook Token 认证
生产环境推荐用 OIDC 对接企业统一身份系统,或者用 ServiceAccount Token 给 Pod 授权。
鉴权(Authorization):你能干什么?
通过认证后,API Server 检查你是否有权限执行这个操作。主流方案是 RBAC(基于角色的访问控制),通过 Role 和 RoleBinding 定义权限边界。
准入控制(Admission Control):你干的事合不合规?
即使有权限,某些操作可能被准入控制器拦截。比如 PodSecurityPolicy 禁止特权容器,或者自定义 Webhook 校验资源配额。
RBAC 的四个核心字段
很多团队配 RBAC 时靠”抄作业”,但真正理解这四个字段,才能配出既安全又好维护的策略:
apiVersion: rbac.authorization.k8s.io/v1 |
apiGroups:资源所属的 API 组。核心资源(Pod、Service)是空字符串 "",扩展资源(Deployment)是 "apps"。
resources:具体资源类型。可以细到 pods/log,也可以粗到 pods/*。
verbs:允许的操作。get、list、watch 是只读,create、update、delete 是读写。
namespace:Role 是命名空间级别的,ClusterRole 是集群级别的。生产环境建议最小权限原则,别动不动就给 ClusterAdmin。
审计日志:事后追溯的关键
很多团队忽略审计日志,直到出事才后悔。API Server 的审计日志可以记录谁在什么时间做了什么操作:
apiVersion: audit.k8s.io/v1 |
建议对 Secret、ConfigMap 等敏感资源开启 RequestResponse 级别审计,其他资源用 Metadata 级别就够了。
洹拓科技的实践建议
在为新乡本地多家企业做云原生改造时,我们总结了三条经验:
别用 default ServiceAccount:每个应用创建独立的 ServiceAccount,配合 RBAC 精细授权。
定期审计权限:用
kubectl auth can-i --list检查实际权限,清理过期授权。开启审计日志:至少保留 90 天,对接 SIEM 系统做异常检测。
Kubernetes 的安全不是一蹴而就的,需要从认证、授权、审计三个维度持续加固。洹拓科技为辉县及新乡全域的企业提供云原生安全评估与加固服务,欢迎联系我们。
新乡洹拓科技有限公司
地址:河南省新乡市辉县市金城百货四楼
电话:400-829-9957
业务:软件开发 | 云服务 | AI 解决方案 | 支付设备布放