【云安全】云原生-K8S(四)安全问题分析
Kubernetes(K8S)因其强大的容器编排能力成为了云计算和微服务架构的首选,但同时也带来了复杂的安全挑战。本文将概述K8S的主要安全问题,帮助安全工程师理解潜在威胁,并采取相应的防护措施。
K8S 攻击面概览
下面两张图总结了 K8S 集群架构中可能存在的安全问题,并在第一张K8S 集群基础架构图中直观标出了潜在的攻击点。


下面是K8S组件存在隐患的默认端口:
| 组件名称 | 默认端口 |
|---|---|
| api server | 8080/6443 |
| dashboard | 8001/30000+/自定义 |
| kubelet | 10250/10255 |
| etcd | 2379 |
| kube-proxy | 8001 |
| docker | 2375 |
| kube-scheduler | 10251 |
| kube-controller-manager | 10252 |
Kubernetes (K8s) 的安全问题主要来源于不安全的配置,尤其是未授权访问,另外就是配置的泄露。K8s 作为一个复杂的容器编排系统,涉及多个组件和配置文件,如果没有良好的安全控制和严格的配置管理,可能会引发各种安全风险。
一、API Server 未授权访问
API Server 是 Kubernetes 集群的核心管理接口,所有资源请求和操作都通过 kube-apiserver 提供的 API 进行处理。默认情况下,API Server 会监听两个端口:8080 和 6443。如果配置不当,可能会导致未授权访问的安全风险。
8080 端口默认情况下不启用,该端口不需要认证和授权检查。如果意外暴露(v1.20以下版本),攻击者可以直接访问集群资源,导致未授权访问。--insecure-port 和 --insecure-bind-address 参数已经被 废弃,在 Kubernetes v1.20+ 版本中它们已经无法正常使用,尤其是 --insecure-port,只能被设置为 0,否则会导致 API Server 启动失败。
6443 端口默认启用,并且要求认证。如果配置错误,例如将 `system:anonymous` 用户绑定到 `cluster-admin` 用户组,攻击者可能绕过认证,获得集群管理员权限,造成未授权访问。
具体分析文章:【云安全】云原生- K8S API Server 未授权访问-CSDN博客
二、Kubectl Proxy 不安全配置
kubectl proxy 的作用是将 Kubernetes API Server 暴露给本地网络或客户端,允许你通过本地代理与 Kubernetes 集群进行交互。具体来说,kubectl proxy 可以暴露以下内容:
1、Kubernetes API Server
暴露的内容:kubectl proxy 允许你通过代理访问 Kubernetes API Server,进行集群管理和操作。这包括访问集群资源(如 Pods、Services、Deployments、ConfigMaps 等),执行命令(例如 kubectl get、kubectl apply)。
风险:如果没有配置适当的认证和授权,任何可以访问代理端口的用户都可以通过它进行操作,甚至执行恶意行为。即导致了“API Server未授权访问”
漏洞复现:
kubectl proxy --port=8080 --address=0.0.0.0 --accept-hosts='.*' &#验证,查看进程
ps aux | grep kubectl | grep -v grep#关闭
kill <PID>
典型的API Server未授权访问页面,具体分析见上文“API Server 未授权访问”

2、Kubernetes Dashboard
暴露的内容:如果你在集群中部署了 Kubernetes Dashboard,kubectl proxy 可以暴露该 Dashboard 的 Web 界面,使你能够通过浏览器访问 Dashboard。默认情况下,Dashboard 可以在 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ 访问。
风险:如果没有启用适当的认证(如 OIDC 或 RBAC),攻击者可能利用代理访问 Dashboard,并进行未授权的操作。具体分析见下文“Dashboard未授权访问”!
3、集群内的其他服务
暴露的内容:kubectl proxy 还可以访问集群中暴露的其他服务和端点。例如,通过代理,你可以访问 Kubernetes 集群中的某些 HTTP 服务,尤其是那些已通过 Kubernetes Service 暴露的服务。
风险:如果某些服务没有进行适当的身份验证或授权控制,攻击者可能利用 kubectl proxy 访问这些服务,并执行恶意操作。
4、API 扩展端点
暴露的内容:Kubernetes 支持 API 扩展,如自定义资源定义(CRDs)。kubectl proxy 允许你访问和管理这些扩展 API 端点。
风险:如果这些自定义资源没有严格的访问控制,攻击者可以通过 kubectl proxy 修改或删除重要资源。
三、etcd 未授权访问
在 Kubernetes (K8s) 中,etcd 是一个关键的分布式键值存储系统,它存储了集群的所有配置信息和状态数据。由于它存储着 K8s 集群的核心数据,因此保护 etcd 是非常重要的。以下是 etcd 未授权访问产生的原因:
1、未加密的数据传输:
默认情况下,etcd 可能会在集群中使用未加密的 HTTP 通信协议。没有加密的传输可能导致中间人攻击(MITM),攻击者可能会截获、篡改或伪造请求,进而导致敏感数据泄露。
2、未加密的数据存储:
如果 etcd 的数据存储未加密,存储在磁盘上的敏感数据(如 API 密钥、身份验证凭证等)可能会被未经授权的用户访问。如果攻击者能够访问存储卷,他们可能会窃取这些数据。
3、缺乏认证和授权:
如果 etcd 没有启用身份验证和授权机制,任何能够访问 etcd 实例的用户或进程都可以读写数据。缺乏访问控制会导致潜在的安全漏洞,攻击者可以篡改配置或获取敏感数据。
4、不安全的集群通信:
如果 etcd 集群之间的通信没有加密或者没有正确配置 TLS,集群成员之间的通信可能会受到攻击。攻击者可以伪造数据或与集群进行恶意交互。
5、未经审计的访问:
如果没有启用审计日志,etcd 可能无法记录所有对数据的访问和修改。缺乏审计日志使得追踪恶意行为变得困难,增加了诊断和响应的复杂性。
6、Etcd 服务的暴露:
如果 etcd 服务被公开在互联网上且没有妥善保护(如防火墙规则、网络隔离、身份验证等),攻击者可以直接访问 etcd,造成安全风险。
具体分析文章:【云安全】云原生- K8S etcd 未授权访问-CSDN博客
四、Kubelet 未授权访问
Kubelet未授权访问通常指的是未经过身份验证的用户或服务能够直接访问Kubelet的API,可能导致集群安全风险。Kubelet负责管理每个节点上的Pod和容器,若未授权访问未被妥善管控,攻击者可以利用此漏洞获取敏感信息或控制容器。
该问题主要是由 /var/lib/kubelet/config.yaml 以下不安全配置引起

10250端口:默认开启端口,但是需要授权
10255端口:只读端口,默认不开放,需要进行配置
具体分析文章:【云安全】云原生- K8S Kubelet 未授权访问-CSDN博客
五、kubeconfig文件泄露
kubeconfig 文件是 Kubernetes 的配置文件,kubectl 使用它来连接和与 Kubernetes 集群交互。它通常位于 ~/.kube/config 路径下,包含多个上下文、集群、用户的配置信息,用于定义 kubectl 如何与不同的集群进行通信。


kubeconfig 文件如果泄露,可能会导致攻击者获得对 Kubernetes 集群的访问权限。常见的泄露途径包括:将其上传至版本控制系统(如 GitHub)时未忽略该文件,存储在不安全的目录中,或通过不当的权限管理使得文件可被其他用户读取。攻击者可以通过 Webshell、GitHub 等方式获取到此文件,从而通过 API Server 接管整个 Kubernetes 集群,控制所有容器。kubeconfig 文件作为集群的管理凭证,包含关于集群的详细信息,如 API Server 地址、认证凭证等。如果攻击者能够访问到该文件(如办公网员工机器被入侵或文件泄露到 GitHub),他们可以直接通过 API Server 获得集群的控制权限,导致严重的安全风险和隐患。

具体分析文章:【云安全】云原生- K8S kubeconfig 文件泄露-CSDN博客
六、Dashboard未授权访问
面板安装教程:【云安全】云原生-K8S(三) 安装 Dashboard 面板-CSDN博客
漏洞复现
通过以下命令编辑deployment
kubectl -n kubernetes-dashboard edit deployment kubernetes-dashboard
将以下配置添加到args字段中
- --enable-skip-login
这样就可以在登录界面点击跳过登录进dashboard

将默认的Kubernetes-dashboard绑定cluster-admin,拥有管理集群管权限
kubectl create clusterrolebinding dashboard-1 --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:kubernetes-dashboard
访问Kubernetes 仪表盘,出现了跳过按钮,点击跳过进入dashboard

创建恶意POD

总结
K8S提供了强大的容器编排能力,但同时也带来了诸多安全风险,尤其是未授权访问风险。至于其他web安全通用问题(如XSS、SQL注入等)和容器特有的安全问题(如镜像漏洞、容器隔离性问题等),虽然对K8s来说也是需要关注的,但从K8s本身的架构和配置角度来说,确实更多的是与配置相关的安全问题。如果你有任何关于K8S安全的疑问或想深入了解具体攻击手法,欢迎在评论区讨论!
相关文章:
【云安全】云原生-K8S(四)安全问题分析
Kubernetes(K8S)因其强大的容器编排能力成为了云计算和微服务架构的首选,但同时也带来了复杂的安全挑战。本文将概述K8S的主要安全问题,帮助安全工程师理解潜在威胁,并采取相应的防护措施。 K8S 攻击面概览 下面两张…...
Cloud之快照存储(Cloud Snapshot Storage)
Cloud之快照存储 一、什么是快照 1. 快照的定义 快照(Snapshot)是一种记录某一时刻数据状态的技术。在计算机存储和虚拟化环境中,快照能够将文件系统或虚拟机的状态保存下来,以便以后能够回溯到某一特定时间点。快照通常用于备…...
cs106x-lecture11(Autumn 2017)-SPL实现
打卡cs106x(Autumn 2017)-lecture11 (以下皆使用SPL实现,非STL库,后续课程结束会使用STL实现) 1、diceRolls Write a recursive function named diceRolls accepts an integer representing a number of 6-sided dice to roll, and output all possibl…...
负载均衡集群( LVS 相关原理与集群构建 )
目录 1、LVS 相关原理 1.1、LVS集群的体系结构以及特点 1.1.1 LVS简介 1.1.2 LVS体系结构 1.1.3 LVS相关术语 1.1.4 LVS工作模式 1.1.5 LVS调度算法 1.2 LVS-DR集群介绍 1.2.1 LVS-DR模式工作原理 1.2.2 LVS-DR模式应用特点 1.2.3 LVS-DR模式ARP抑制 1.3 LVS – NA…...
【分布式】Hadoop完全分布式的搭建(零基础)
Hadoop完全分布式的搭建 环境准备: (1)VMware Workstation Pro17(其他也可) (2)Centos7 (3)FinalShell (一)模型机配置 0****)安…...
基于Java+Swing+Mysql实现人事管理信息系统
基于JavaSwingMysql实现人事管理信息系统 一、系统介绍二、功能展示1.用户登陆2.用户注册3.员工信息添加、删除4.员工信息查询、修改5.部门管理6、员工考核 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 系统功能:用户登陆、用户注册、员工信息添加、…...
DeepSeek与ChatGPT:会取代搜索引擎和人工客服的人工智能革命
云边有个稻草人-CSDN博客 在众多创新技术中,DeepSeek和ChatGPT无疑是最为引人注目的。它们通过强大的搜索和对话生成能力,能够改变我们与计算机交互的方式,帮助我们高效地获取信息,增强智能服务。本文将深入探讨这两项技术如何结合…...
企业级RAG开源项目分享:Quivr、MaxKB、Dify、FastGPT、RagFlow
企业级 RAG GitHub 开源项目深度分享:Quivr、MaxKB、Dify、FastGPT、RagFlow 及私有化 LLM 部署建议 随着生成式 AI 技术的成熟,检索增强生成(RAG)已成为企业构建智能应用的关键技术。RAG 技术能够有效地将大型语言模型ÿ…...
js基础知识总结
1、js数据类型有哪些?存储区别 js基础类型及引用类型存储区别代码示例如下: // 基本数据类型 let a 10; let b a; // b 是 a 的一个副本 b 20; // 修改 b 不会影响 …...
LearnOpenGL——高级OpenGL(下)
教程地址:简介 - LearnOpenGL CN 高级数据 原文链接:高级数据 - LearnOpenGL CN 在OpenGL中,我们长期以来一直依赖缓冲来存储数据。本节将深入探讨一些操作缓冲的高级方法。 OpenGL中的缓冲本质上是一个管理特定内存块的对象,它…...
vue脚手架开发打地鼠游戏
游戏设计: 规划游戏的核心功能,如场景、随机出现的地鼠、计分系统、游戏时间限制等。简单设计游戏流程,包括开始界面、游戏进行中、关卡设置(如不同关卡地鼠出现数量、游戏时间等)、关卡闯关成功|失败、游戏结束闯关成…...
uniapp 连接mqtt
1:下载插件 npm install mqtt 2:创建 mqtt.js /* main.js 项目主入口注入实例 */ // import mqttTool from ./lib/mqttTool.js // Vue.prototype.$mqttTool mqttTool/* 使用范例见 /pages/index/index.vue */ // mqtt协议:H5使用ws/wss APP-…...
EX_25/2/19
1. 封装一个 File 类,用有私有成员 File* fp 实现以下功能 File f "文件名" 要求打开该文件 f.write(string str) 要求将str数据写入文件中 string str f.read(int size) 从文件中读取最多size个字节,并将读取到的数据返回 析构函数 …...
Breakout Tool
思科 CML 使用起来还是很麻烦的,很多操作对于习惯了 secure crt 或者 putty 等工具的网络工程师都不友好。 Breakout Tool 提供对远程实验室中虚拟机控制台与图形界面的本地化接入能力,其核心特性如下: Console 访问:基于 Telnet…...
【大模型】DeepSeek:AI浪潮中的破局者
【大模型】DeepSeek:AI浪潮中的破局者 引言:AI 新时代的弄潮儿DeepSeek:横空出世展锋芒(一)诞生背景与发展历程(二)全球影响力初显 探秘 DeepSeek 的技术内核(一)独特的模…...
Kafka 简介
Kafka 简介 Apache Kafka 是一个开源的分布式流处理平台,广泛应用于实时数据流处理、日志管理、消息传递等场景。Kafka 最初由 LinkedIn 开发,并于 2011 年捐献给 Apache 软件基金会。 Kafka 的设计目标是高吞吐量、低延迟和高可用性,它能够…...
什么是掉期(Swap)?——金融衍生品的关键工具(中英双语)
什么是掉期(Swap)?——金融衍生品的关键工具 引言 掉期(Swap) 是金融市场中最重要的衍生品之一,它允许两方交换未来的现金流,以优化融资成本、规避利率或汇率风险,甚至进行投机交易…...
深入解析 Vue 项目中的缓存刷新机制:原理与实战
目录 前言1. Demo2. 知识拓展 前言 在 Vue 项目中,缓存通常用于存储用户信息、角色权限、系统设置等,以提高页面加载速度并减少 API 请求 这里使用 web-storage-cache 作为封装的本地存储工具,支持 localStorage 和 sessionStorage 方式存储…...
【C++】 Flow of Control
《C程序设计基础教程》——刘厚泉,李政伟,二零一三年九月版,学习笔记 文章目录 1、选择结构1.1、if 语句1.2、嵌套的 if 语句1.3、条件运算符 ?:1.4、switch 语句 2、循环结构2.1、while 语句2.2、do-while 语句2.3、 for 循环2.4、循环嵌套…...
【异常错误】pycharm debug view变量的时候显示不全,中间会以...显示
异常问题: 这个是在新版的pycharm中出现的,出现的问题,点击view后不全部显示,而是以...折叠显示 在setting中这么设置一下就好了: 解决办法: https://youtrack.jetbrains.com/issue/PY-75568/Large-stri…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
