当前位置: 首页 > article >正文

K8s安全加固清单:从RBAC到数据加密的实战指南

在云原生时代Kubernetes 已成为容器编排的事实标准但默认配置下的 K8s 并不安全。一次错误的 RBAC 权限配置、一个暴露的 etcd 端口、或者一个特权模式的 Pod都可能成为攻击者的入口。本文从认证授权、Pod 安全、网络隔离、数据加密四个维度整理一份可直接落地的加固清单。一、RBAC最小权限是铁律RBAC基于角色的访问控制是 K8s 权限管理的核心。很多人图省事给 ServiceAccount 直接绑定cluster-admin角色这在测试环境可以但生产环境等于裸奔。最小权限原则的正确做法是先定义应用实际需要的权限再精确授予。以下是一个典型前端应用只读场景的 Role 示例apiVersion:rbac.authorization.k8s.io/v1kind:Rolemetadata:namespace:defaultname:frontend-read-onlyrules:-apiGroups:[]resources:[configmaps,secrets]resourceNames:[app-config,db-credentials]# 精确到具体资源名verbs:[get,list]如果你需要跨命名空间授权使用RoleBinding本命名空间或ClusterRoleBinding集群级别。ClusterRoleBinding要格外谨慎绑定的cluster-admin角色要确认 subject 只能是必要的 ServiceAccount不要用system:authenticated这种通配符apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRoleBindingmetadata:name:monitoring-readersubjects:-kind:ServiceAccountname:prometheusnamespace:monitoringroleRef:kind:ClusterRolename:cluster-monitoring-viewapiGroup:rbac.authorization.k8s.io建议定期用kubectl auth can-i --list --assystem:serviceaccount:ns:sa检查每个 ServiceAccount 的实际权限清理无用绑定。二、Pod Security Standards别让容器拥有不该有的能力K8s 从 1.25 起将 Pod Security Policy 替换为 Pod Security StandardsPSS通过命名空间标签定义三个级别的安全策略privileged最高权限、baseline最低要求、restricted生产推荐。将命名空间标记为restricted级别apiVersion:v1kind:Namespacemetadata:name:productionlabels:pod-security.kubernetes.io/enforce:restrictedpod-security.kubernetes.io/enforce-version:latestpod-security.kubernetes.io/warn:restrictedpod-security.kubernetes.io/warn-version:latestrestricted策略会强制要求禁止特权模式、禁止以 root 运行、只允许受控的 capabilities、必须使用只读根文件系统。例如一个合法的 non-root 容器 Pod specsecurityContext:runAsNonRoot:truerunAsUser:10000seccompProfile:type:RuntimeDefaultallowPrivilegeEscalation:falsereadOnlyRootFilesystem:truecapabilities:drop:-ALL如果你需要在 Pod 中挂载特定 capabilities比如CAP_NET_BIND_SERVICE用于绑定低端口要逐个声明而非全部放开capabilities:add:-NET_BIND_SERVICEdrop:-ALL三、网络策略默认拒绝按需放行K8s 网络模型默认是全通行的同一集群内的 Pod 可以自由互相访问。攻击者一旦拿到某个 Pod往往能横向渗透到整个集群。解决方案是给每个命名空间设置默认拒绝规则再按需放行。默认拒绝所有入站流量apiVersion:networking.k8s.io/v1kind:NetworkPolicymetadata:name:default-deny-ingressnamespace:productionspec:podSelector:{}policyTypes:-Ingress放行 Web 层访问后端服务apiVersion:networking.k8s.io/v1kind:NetworkPolicymetadata:name:allow-web-to-apinamespace:productionspec:podSelector:matchLabels:app:api-serveringress:-from:-podSelector:matchLabels:app:web-frontendports:-protocol:TCPport:8080需要注意的是网络策略需要有 CNI 插件支持才能生效Flannel 默认不支持推荐使用 Calico、Cilium 或 WeaveNet。四、Secrets 管理别把敏感信息明文存放Kubernetes Secrets 默认只是 Base64 编码未经加密存储在 etcd 中任何有 etcd 访问权限的人都能直接读取。最小化处理是开启 Secrets 的加密apiVersion:apiserver.config.k8s.io/v1kind:EncryptionConfigurationresources:-resources:-secretsproviders:-aescbc:keys:-name:key1secret:base64-encoded-32-byte-key-identity:{}# 回退provider不能删然后在 kube-apiserver 启动参数中指定配置--encryption-provider-config/etc/kubernetes/enc/encryption-config.yaml生产环境中更推荐使用外部 Secrets 管理方案HashiCorp Vault通过 CSI 驱动挂载、AWS Secrets Manager EKS IAM Roles for Service Accounts、或者 Mozilla SOPS 配合 KMS 加密。这类方案的优势在于 Secrets 不会出现在 K8s API 层审计日志也更完整。日常使用中还要注意不要用kubectl create secret generic时直接暴露明文用--from-literal或--from-file不要在 Pod 环境变量中引用 Secrets 而是使用 volume 挂载这样重启才能感知变更。五、etcd 加密护住 K8s 的数据心脏etcd 存储了 K8s 整个集群的状态数据包括 Secret、RBAC 配置、Pod 定义等。一旦 etcd 被攻破攻击者就拿到了整个集群。etcd 加密是最后一道防线。开启 etcd 数据加密静态加密# 生成一个 32 字节的加密 key注意是原始字节不是 base64 字符串ENCRYPTION_KEY$(head-c32/dev/urandom|base64)# 写入 encryption configcat/etc/kubernetes/enc/encryption-config.yamlEOF apiVersion: apiserver.config.k8s.io/v1 kind: EncryptionConfiguration resources: - resources: - secrets providers: - aescbc: keys: - name: key1 secret:${ENCRYPTION_KEY}- identity: {} EOF同时确保 etcd 的通信也是 TLS 加密的启动参数大致如下etcd\\--cert-file/etc/kubernetes/pki/etcd/server.crt\\--key-file/etc/kubernetes/pki/etcd/server.key\\--client-cert-authtrue\\--trusted-ca-file/etc/kubernetes/pki/etcd/ca.crt\\--listen-client-urlshttps://127.0.0.1:2379etcd 数据目录的磁盘加密也不能忽视生产环境建议用 LUKS 或云厂商的加密磁盘防止物理磁盘泄露导致的数据暴露。加固检查清单以下是生产级 K8s 集群上线前必须通过的检查项kube-apiserver 开启--anonymous-authfalse禁止匿名访问kube-apiserver 开启--authorization-modeRBAC,Nodekube-apiserver 关闭不爱用的服务端口如 kubelet HTTPS API 不暴露在外网etcd 仅监听本地或通过安全网络访问不对外网暴露 2379/2380 端口所有命名空间设置了 Pod Security Standards 标签ServiceAccount 不绑定 cluster-admin遵循最小权限Secrets 开启静态加密aescbc 或更好的 KMS 插件etcd 通信使用 TLS不使用 insecure 模式网络策略至少在关键命名空间production、data启用默认拒绝定期审计日志kubectl get events --all-namespaces --watch安全加固不是一次性工程而是持续运营的过程。建议配合 Falco 做运行时威胁检测配合 OPA Gatekeeper 做策略即代码Policy-as-Code用自动化工具保障每次部署都不违背安全基线。防守的深度取决于攻击者的投入成本。做好这些基础加固足以让大多数自动化扫描工具和初级攻击者止步。

相关文章:

K8s安全加固清单:从RBAC到数据加密的实战指南

在云原生时代,Kubernetes 已成为容器编排的事实标准,但默认配置下的 K8s 并不安全。一次错误的 RBAC 权限配置、一个暴露的 etcd 端口、或者一个特权模式的 Pod,都可能成为攻击者的入口。本文从认证授权、Pod 安全、网络隔离、数据加密四个维…...

【LangGraph 状态持久化(Checkpoint)详解】学习笔记

目录 什么是状态持久化? 持久化方案对比 内存持久化:MemoryPersistence SQLite 持久化:SqlitePersistence Agent 多轮对话持久化:AgentPersistence get_state 与 get_state_history 详解 总结对比 1. 什么是状态持久化&…...

题解:学而思编程 3或5的倍数

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

3个关键步骤:如何为视频下载工具扩展新平台支持

3个关键步骤:如何为视频下载工具扩展新平台支持 【免费下载链接】yt-dlp-gui Windows GUI for yt-dlp 项目地址: https://gitcode.com/gh_mirrors/yt/yt-dlp-gui 为开源视频下载工具添加第三方平台支持是开发者面临的常见挑战。yt-dlp-gui作为Windows平台上广…...

CherryUSB嵌入式USB协议栈终极指南:从入门到精通

CherryUSB嵌入式USB协议栈终极指南:从入门到精通 【免费下载链接】CherryUSB CherryUSB is a tiny and beautiful, high performance and portable USB host and device stack for embedded system with USB IP 项目地址: https://gitcode.com/gh_mirrors/ch/Cher…...

2025最权威的降AI率方案实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 随着人工智能技术迅猛地发展,它在学术研究领域的应用越发深入,对高等…...

Claude代码生成Token预算管理实战:成本控制与智能优化策略

1. 项目概述与核心价值最近在折腾大模型应用开发,特别是围绕Claude这类顶尖的代码生成模型时,一个绕不开的痛点就是成本控制。模型调用是按Token计费的,而一个复杂的代码生成任务,动辄消耗成千上万个Token,账单不知不觉…...

Verilog行为级建模:从initial/always到阻塞非阻塞赋值的核心语法解析

1. 项目概述:从“连线”到“行为”的思维跃迁刚接触数字电路设计的朋友,可能都是从画原理图、连逻辑门开始的。但当你面对一个需要处理复杂时序、包含状态机或者有算法逻辑的模块时,光靠门级网表来描述,那工程量简直让人头皮发麻。…...

Spring boot相关

1. ● 问题1:为什么扫描的是 com.example.demo 包?因为主入口类在这个包下。 com.example.demo …...

Transformer在CV领域的新秀:拆解TransWeather如何用‘天气查询’一招解决多任务难题

Transformer在CV领域的新秀:拆解TransWeather如何用‘天气查询’一招解决多任务难题 计算机视觉领域正经历一场由Transformer架构引领的革命。从最初的图像分类任务到如今的复杂场景理解,Transformer以其强大的全局建模能力不断刷新着各项基准。而在天气…...

如何用KLOGG在5分钟内成为日志分析高手

如何用KLOGG在5分钟内成为日志分析高手 【免费下载链接】klogg Really fast log explorer based on glogg project 项目地址: https://gitcode.com/gh_mirrors/kl/klogg 你是否曾在海量日志文件中迷失方向?面对数十GB的日志数据,传统的grep命令显…...

Codex 杀进 Chrome!接管了我的浏览器后,我在摸鱼

家人们,Codex 这次真的往普通电脑工作流里钻了。 OpenAI 已经宣布,Codex 现在可以直接在 macOS 和 Windows 的 Chrome 中运行。 它可以和 Chrome 里的应用、网站配合得更好,还能在后台标签页之间并行运行,不会一直占用你的键盘鼠标…...

SQL如何提取分组中的第一条记录_使用ROW_NUMBER定位数据

ROW_NUMBER() 是最稳的分组取首行解法,需在子查询或CTE中按PARTITION BY分组、ORDER BY排序,外层筛选rn1;GROUP BY配MIN(id)易导致数据错乱,且无ORDER BY时顺序不保证;须建联合索引覆盖分组与排序字段,并注…...

Android Studio中文界面完整解决方案:从语言障碍到高效开发

Android Studio中文界面完整解决方案:从语言障碍到高效开发 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack AndroidSt…...

python 中的进制

进制是数值的表示方式,Python 原生支持二进制、八进制、十进制、十六进制,并提供了丰富的进制转换功能。一、进制表示方式1. 四种进制的字面量# 十进制(默认) dec 42 print(dec) # 42# 二进制:0b 或 0B 前缀 b…...

MongoDB副本集在网络闪断后如何快速恢复_重连机制与心跳超时(electionTimeoutMillis).txt

...

从账单明细看Taotoken按Token计费模式的实际支出情况

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从账单明细看Taotoken按Token计费模式的实际支出情况 在模型应用开发与测试阶段,成本控制是团队普遍关心的问题。固定套…...

路由器市场新机遇:从硬件到场景化解决方案的演进

1. 项目概述:一个被低估的“家门口”战场聊到路由器,很多人的第一反应可能是“运营商送的”、“能用就行”。确实,在过去很长一段时间里,家用Wi-Fi设备是一个典型的“黑盒”产品,用户对其性能、功能和体验的感知非常模…...

3个步骤彻底告别电脑风扇噪音:Windows平台最精细的风扇控制解决方案

3个步骤彻底告别电脑风扇噪音:Windows平台最精细的风扇控制解决方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHu…...

Visual C++运行库终极解决方案:一站式修复所有Windows程序依赖问题

Visual C运行库终极解决方案:一站式修复所有Windows程序依赖问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否经常遇到"缺少msvcp140.…...

CentOS 8 安装 Docker 超详细教程

CentOS 8 安装 Docker 超详细教程 适用于 CentOS 8 / CentOS Stream 8,从零开始直到运行第一个容器。 一、准备工作 1. 检查系统版本 cat /etc/redhat-release看到 CentOS Linux release 8.5.2111 或 CentOS Stream release 8 即可继续。 2. 卸载旧版本 Docker …...

Mac用户必看:彻底解决NTFS读写难题的终极免费方案

Mac用户必看:彻底解决NTFS读写难题的终极免费方案 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management for NT…...

智能家电语音交互核心技术:从麦克风阵列到语义理解的易用性设计

1. 项目概述:从“鸡肋”到“刚需”的智能语音交互几年前,当智能家电刚开始搭载语音模块时,很多用户的第一反应是“新鲜”,第二反应可能就是“鸡肋”。唤醒词不灵敏、指令识别率低、稍微带点口音就听不懂,更别提在嘈杂环…...

明日方舟MAA助手:如何用5分钟自动化你的每日游戏任务

明日方舟MAA助手:如何用5分钟自动化你的每日游戏任务 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitc…...

MAA明日方舟自动辅助工具终极指南:一键解放双手的智能解决方案

MAA明日方舟自动辅助工具终极指南:一键解放双手的智能解决方案 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: htt…...

Display Driver Uninstaller (DDU) 终极指南:显卡驱动彻底清理解决方案

Display Driver Uninstaller (DDU) 终极指南:显卡驱动彻底清理解决方案 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-driv…...

机器人研发选3D打印还是CNC精密打样?

在机器人(尤其是人形机器人、协作机器人)的研发初期,工程师经常面临一个技术选型:为了验证原型,是直接送去 3D 打印,还是找一家精密零件加工厂做 CNC 打样?这个选择不仅关乎打样费用的支出&…...

Crustocean/conch:云原生容器化应用构建与部署的自动化工具箱

1. 项目概述与核心价值最近在折腾一个很有意思的项目,叫“Crustocean/conch”。光看这个名字,你可能觉得有点摸不着头脑,又是“甲壳海洋”又是“海螺”的。其实,这是一个非常典型的、由开发者社区驱动的开源项目命名风格&#xff…...

3分钟搞定Figma中文界面:设计师必备的终极汉化方案

3分钟搞定Figma中文界面:设计师必备的终极汉化方案 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 面对Figma满屏的英文界面感到困扰吗?专业术语看不懂、操作按钮…...

YOLOv8花生种子霉变识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)

摘要 本文基于YOLOv8目标检测算法,构建了一套火焰烟雾检测系统,并对两类目标(有火/烟、无火/烟)进行了训练与评估。实验使用自建数据集,共包含训练集248张、验证集77张、测试集42张。实验结果表明,模型在测…...