Kubernetes中system:unsecured用户是什么?为何有控制平面请求?
Kubernetes
system:unsecured 用户相关说明 基本定义
- 该用户是Kubernetes内置的特殊身份,仅和API Server的
--insecure-port(默认端口为8080)绑定,该端口默认仅监听本地回环地址127.0.0.1 - 所有发往该不安全端口的请求,都会被API Server自动识别为
system:unsecured用户,默认同时归属system:unsecured组和system:authenticated组 - 该用户默认绑定了
cluster-admin集群角色,拥有集群最高权限,请求不会经过TLS校验,也不会触发其他身份认证插件的校验逻辑
适用场景
- 仅用于控制平面本地调试场景:比如运维人员直接登录API Server所在节点,无需配置认证证书即可直接调用Kubernetes API做调试操作
- 部分1.20以前的老旧版本Kubernetes,部分控制平面组件(如kube-scheduler、kube-controller-manager)默认走本地8080端口和API Server通信,也会产生该用户身份的请求
请求合理性判断
- 若集群版本为1.20之前,且控制平面组件未调整通信配置,出现该用户的内部请求属于正常情况
- 若对应请求为API Server节点本地的调试操作产生,属于合理场景
- 非上述两种场景,尤其是请求来源为非控制平面节点甚至公网时,属于异常情况,需要立即排查风险
相关注意事项
Kubernetes 1.20版本开始已默认禁用
--insecure-port参数,1.24版本直接移除了该参数,官方明确禁止生产环境开启该不安全端口
- 生产环境必须显式将API Server的
--insecure-port参数设置为0,关闭不安全端口,避免出现未授权访问、本地提权等安全风险 - 若观测到非本地来源的
system:unsecured请求,需第一时间排查API Server端口配置,确认是否有端口被意外暴露到公网或集群非信任网段 - 不要为
system:unsecured用户额外绑定权限,也不要基于该用户身份配置任何业务侧的API调用逻辑
内容的提问来源于stack exchange,提问作者rehna
相关产品推荐
相关产品推荐

