K8s API Server 暴露面
Kubernetes 的 API Server 是整个集群的控制面入口,默认端口为 6443。若放开匿名认证,或对外暴露且没有前置身份认证,访问方就能读取集群版本、命名空间、Pod、服务与配置对象;凭借这些信息可进一步定位镜像仓库、内部服务地址与凭据来源,风险接近集群接管。检查围绕三件事:匿名认证配置、基于角色的访问控制绑定是否过宽,以及证书与端口暴露面。托管集群与自建集群的暴露面不同,以实际网络可达范围为准。
基本信息
| 控制面端口 | 6443 为 API Server,另有配套组件端口 |
|---|---|
| 核查项 | 匿名认证配置、角色绑定范围、证书与暴露方式 |
| 暴露信号 | 无凭据请求即可返回版本或资源列表 |
| 处置方向 | 关闭匿名访问、最小权限绑定、管理面网络隔离 |
典型使用场景
- 自建集群:为便于运维把 API 暴露到办公网或公网
- 仪表盘与工具:面板或客户端配置了宽泛的集群级权限
- 服务账号滥用:Pod 内的服务账号令牌权限过大,容器被突破后直达控制面
- 多云对接:外部平台为纳管集群而持长期高权限凭据
- 配套端口:节点组件与管理面板的可达性常被遗漏
只读检查示例
只读检查示例
curl -sk --max-time 5 https://10.0.30.5:6443/version
curl -sk --max-time 5 https://10.0.30.5:6443/api/v1/namespaces
# 能返回数据即说明匿名可访问;记录响应状态与返回内容范围后停止
# 不执行创建、修改、删除类请求,也不读取密钥对象的具体内容暴露面与风险
| 形态 | 判定依据 | 风险后果 |
|---|---|---|
| 匿名可读资源列表 | 无凭据请求返回命名空间等数据 | 集群结构泄露,可定位薄弱服务 |
| 角色绑定过宽 | 服务账号或用户具备集群级权限 | 一处应用漏洞即可操作整个集群 |
| 管理面暴露 | 办公网或公网可达控制面端口 | 凭据被窃取的概率显著上升 |
| 配套组件暴露 | 面板与节点组件可达 | 常绕过控制面权限直接操作节点 |
集群内禁止任何写操作:创建或修改资源会直接影响业务负载,只做读请求与配置核查。
托管集群的控制面通常由云厂商统一防护,自建集群需要自行保证隔离;评估结论要写清是哪种形态。