恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

【Kubernetes从入门到精通】第55篇:SecurityContext——容器安全配置的“三件套“,别让你的容器“裸奔“成root

  • 首页
  • 资讯中心
  • /
  • 【Kubernetes从入门到精通】第55篇:SecurityContext——容器安全配置的“三件套“,别让你的容器“裸奔“成root

相关资讯

STL转STEP快速上手指南:用stltostp一条命令完成格式转换 2026/8/19 15:01:09
不想在Photoshop和AI绘图之间来回切换?这款免费AI插件的完整上手实录 2026/8/19 15:01:09
英飞凌TLD5098EL汽车LED驱动方案:从设计到EMC的实战解析 2026/8/19 15:01:09

最新资讯

计算机毕业设计之基于PythonWeb的球探系统设计与实现
CodeWhisperer 生成代码引发 CI 崩溃后,我重新思考了机器学习入门工具链
基于树莓派PICO W的微型空气质量监测站:从传感器到Web服务器全解析
嵌入式开发入门:skiiiD开发板与按钮模块的通用连接与编程指南
ncmdump零基础实战指南:5分钟把网易云NCM音乐轻松转成MP3
从模糊意图到精确规格:基于基准测试与交互式智能体的需求工程实践

今日推荐

Windows 安卓应用安装终极方案:5分钟上手免费APK安装器,三步告别模拟器
WarcraftHelper 魔兽争霸3优化实战指南
抖音批量下载实战手册:用douyin-downloader把6小时手工劳动压缩到15分钟

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

【Kubernetes从入门到精通】第55篇:SecurityContext——容器安全配置的“三件套“,别让你的容器“裸奔“成root

发布时间:2026/8/19 15:01:09
【Kubernetes从入门到精通】第55篇:SecurityContext——容器安全配置的“三件套“,别让你的容器“裸奔“成root 上一篇【第54篇】ServiceAccount——Pod的身份证下一篇【第56篇】NetworkPolicy安全实战——零信任网络架构的K8s实现摘要前面聊了谁能访问集群RBAC、“Pod的身份”ServiceAccount。但就算身份管得再严如果容器本身以root运行、还能改系统、还能写根文件系统——那一旦被入侵攻击者几乎能为所欲为。SecurityContext就是给容器降权的配置。它分两档Pod级对所有容器生效和Container级对单个容器生效优先级更高。核心三件事别用root跑、只给必要的Linux能力、根文件系统设为只读。这篇文章把SecurityContext的核心配置拆开讲再顺带提一下AppArmor/SELinux/seccomp这三个运行时保镖。一、Pod级 vs Container级1.1 两层配置【SecurityContext 的两层结构】 Pod.spec.securityContext (Pod级) ├── runAsUser: 1000 ├── runAsGroup: 3000 ├── fsGroup: 2000 └── 对所有容器生效(除非容器级覆盖) ├── container[0].securityContext (容器级) │ ├── runAsUser: 2000 ← 覆盖Pod级 │ └── privileged: false │ └── container[1].securityContext └── (没配 → 继承Pod级) 优先级容器级 Pod级 默认(通常root)要点Pod级和容器级可同时配容器级优先级更高。一般做法是Pod级设一个全局基线比如runAsNonRoot容器级针对特殊需求微调。两者都没配时容器默认以root跑——这是最危险的状态。二、核心三件套2.1 第一件runAsUser / runAsNonRoot别用rootapiVersion:v1kind:Podmetadata:name:non-root-podspec:securityContext:runAsNonRoot:true# 强制非root(UID≠0)runAsUser:1000# 指定运行用户runAsGroup:3000# 指定主组fsGroup:2000# 卷的属组(让Pod能读写挂载卷)containers:-name:appimage:nginx【为什么不用root这么重要】 容器里是root ≠ 宿主机是root (有namespace隔离) 但是 • root在容器里能干很多事(mount/改配置) • 如果容器有特权或capability泄漏 → root直接威胁宿主机 • 很多提权漏洞利用都依赖已经是root → 用非root跑即使被入侵破坏范围也小得多2.2 第二件capabilities最小化Linux能力Linux把root的特权拆成了几十个能力(capabilities)。默认容器会拿到一堆但多数用不上。securityContext:capabilities:drop:-ALL# 先全部丢弃add:-NET_BIND_SERVICE# 只加回需要的(比如绑80端口)# 常见需要的capability:# NET_BIND_SERVICE: 绑1024以下端口# CHOWN: 改文件属主# SYS_TIME: 改系统时间能力作用建议ALL所有能力❌ 默认应dropNET_BIND_SERVICE绑低端口✅ 常用SYS_ADMIN大量系统操作❌ 极危险几乎不给SYS_PTRACEptrace调试❌ 可被用来注入2.3 第三件readOnlyRootFilesystem只读根fssecurityContext:readOnlyRootFilesystem:true# 根文件系统只读# 那要写临时文件怎么办挂emptyDirvolumes:-name:tmpemptyDir:{}volumeMounts:-name:tmpmountPath:/tmp# 只能写这里要点只读根文件系统是防落地攻击的利器——攻击者即使拿到shell也没法往根fs写后门脚本、改二进制。需要写的地方用emptyDir/hostPath单独挂。三件套非root 最小capability 只读根fs是生产容器安全的最低基线。三、privileged——最危险的一个开关3.1 千万别随便开【privileged: true 有多可怕】 privileged: true 的容器 • 拥有宿主机的几乎所有capability • 能访问宿主机的所有设备 • 能mount宿主机文件系统 • 能逃逸到宿主机(只要有稍许配置失误) 典型用途只有网络插件(Calico/Cilium)、存储插件 (CSI node)、监控agent等系统组件才需要 ⚠️ 业务容器开privileged 给攻击者发宿主机万能钥匙# 错误示范(业务容器千万别这样)securityContext:privileged:true# ❌❌❌# 正确用具体capability代替securityContext:capabilities:add:[NET_ADMIN]# 只给需要的四、运行时保镖AppArmor / SELinux / seccomp4.1 三个更底层的防护【SecurityContext 之上的运行时三保镖】 ┌─────────────────────────────────────────────┐ │ seccomp (系统调用过滤) │ │ • 限制容器能调用哪些syscall │ │ • 挡掉危险的(如mount/ptrace/reboot) │ │ • K8s内置: RuntimeDefault / localhost / Unconfined│ ├─────────────────────────────────────────────┤ │ AppArmor (应用级MAC) │ │ • 更细的文件/网络访问控制 │ │ • 用profile定义能力白名单 │ ├─────────────────────────────────────────────┤ │ SELinux (强制访问控制) │ │ • 给进程和文件打label按label控制访问 │ │ • RHEL/CentOS系默认启用 │ └─────────────────────────────────────────────┘# seccomp 配置 (最常用挡syscall)apiVersion:v1kind:Podmetadata:name:seccomp-podannotations:seccomp.security.alpha.kubernetes.io/pod:runtime/default# runtime/default 用容器运行时的默认seccomp profile(挡掉危险syscall)spec:containers:-name:appimage:nginx# 进阶用自定义localhost profile# seccomp.security.alpha.kubernetes.io/pod: localhost/profile-name4.2 一张表总结SecurityContext核心字段字段推荐值作用runAsNonRoottrue禁止root运行runAsUser非0指定UIDprivilegedfalse禁止特权容器readOnlyRootFilesystemtrue根fs只读allowPrivilegeEscalationfalse禁止提权capabilities.dropALL丢弃所有capcapabilities.add按需加回必要capseccompProfileRuntimeDefault默认syscall过滤要点SecurityContext是容器自身的铠甲。最低基线四件套——runAsNonRoot: trueallowPrivilegeEscalation: falsereadOnlyRootFilesystem: truecapabilities.drop: [ALL]。seccomp用RuntimeDefault挡危险syscall性价比极高。这些配合PSA的restricted标准能自动强制。本篇小结SecurityContext是容器的降权铠甲分Pod级和Container级两档。核心三件事别用rootrunAsNonRoot、最小capabilitydrop ALL再加需、根fs只读。privileged开关是宿主机逃逸的最大隐患业务容器绝对别开。再往深一层有seccomp/AppArmor/SELinux三个运行时保镖seccomp的RuntimeDefault最易用、性价比最高。这些和PSA的restricted标准配合能自动把裸奔容器挡在集群门外。下一篇我们把NetworkPolicy真正用到安全实战里——搭建零信任网络。上一篇【第54篇】ServiceAccount——Pod的身份证下一篇【第56篇】NetworkPolicy安全实战——零信任网络架构的K8s实现

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号