别再给运维发“集群管理员”了:Kubernetes 最小权限这事,真不是形式主义

简介: 别再给运维发“集群管理员”了:Kubernetes 最小权限这事,真不是形式主义

别再给运维发“集群管理员”了:Kubernetes 最小权限这事,真不是形式主义

先说一句容易得罪人的大实话:
90% 的 Kubernetes 集群,权限设计是“摆设级别”的。

我见过太多现场是这样的👇

  • 新同事第一天入职
    👉「给他个 cluster-admin,省事」
  • 外包要排查问题
    👉「临时给个管理员,回头再收」
  • CI/CD 跑不起来
    👉「算了,直接给全权限」

结果就是——
权限越给越大,锅却越背越多。

这篇文章,我不打算背书式讲 RBAC 定义,而是站在一个真被权限坑过的运维视角,聊三件事:

  1. Kubernetes 权限到底在控制什么
  2. RBAC / ABAC 到底“真身”是什么
  3. 最小权限到底该怎么一步步落地

一、先统一一个认知:K8s 权限 ≠ 登录权限

很多人一说权限,脑子里是:

“能不能进集群?”

但在 Kubernetes 里,真正的问题是:

进来以后,你能干什么?

K8s 权限控制的本质是这三件事:

  • 对什么资源(Pod / Deployment / Secret)
  • 能做什么动作(get / list / create / delete)
  • 在什么范围(namespace / cluster)

所以你看到的那一长串:

verbs / resources / apiGroups

不是花里胡哨,是权力的拆解清单


二、RBAC 和 ABAC,到底谁在干活?

1️⃣ RBAC:你现在 99% 在用的那个

RBAC(Role-Based Access Control)说白了就一句话:

你是谁 → 你属于什么角色 → 你能干什么

Kubernetes 官方主推,生态成熟,工具齐全。

典型对象只有四个:

  • Role
  • ClusterRole
  • RoleBinding
  • ClusterRoleBinding

举个最常见的例子:
👉 只读 Pod 的权限

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pod-reader
  namespace: dev
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list"]

一句人话翻译:

在 dev 命名空间里,只能看 Pod,不能动。


2️⃣ ABAC:存在感很低,但你可能“间接用过”

ABAC(Attribute-Based Access Control)不是靠角色,而是靠属性规则

  • 用户名
  • 资源类型
  • 命名空间
  • 请求动作

它的配置通常是 JSON 策略文件,比如:

{
   
  "user": "ci-bot",
  "namespace": "dev",
  "resource": "pods",
  "readonly": true
}

但说句实在的:

ABAC 更像 Kubernetes 的“前朝遗老”

  • 不好维护
  • 不好审计
  • 不好动态变更

👉 结论很明确:生产环境,主用 RBAC,ABAC 了解即可。


三、为什么“最小权限”这么难落地?

不是你不想,而是现实真的很残酷。

❌ 困难一:没人知道“到底需要什么权限”

你问开发:

“你这个服务需要什么权限?”

他通常会说:

“能跑就行。”

但 Kubernetes 不接受这种模糊回答。


❌ 困难二:调试成本太高

权限太小的典型症状:

Error from server (Forbidden)

然后你开始:

  • 加一个 verb
  • 再试
  • 再 Forbidden
  • 最后一怒之下:给 cluster-admin

❌ 困难三:历史包袱太重

很多集群:

  • 一开始就是 admin
  • 后面业务叠加
  • 再想收权,已经不敢动了

四、真正可落地的“最小权限设计法”

下面这套方法,是我这几年反复验证过的。

🧠 核心思想:权限不是一次性设计的,是“跑出来的”


Step 1:先拆身份,而不是拆权限

别一上来就写 Role。

先问三个问题:

  • 这是 还是 程序
  • 长期账号 还是 临时任务
  • 运维 / 开发 / CI 哪一类?

我自己的原则:

人 ≠ 程序
CI ≠ 人
运维 ≠ 开发


Step 2:从“只读”开始,而不是“能跑”

给任何新身份,第一版永远是只读

verbs:
- get
- list
- watch

为什么?

看不见系统,就谈不上安全操作。


Step 3:通过审计日志“反推”权限

这是很多人忽略的神器👇

kube-apiserver --audit-log-path=/var/log/k8s-audit.log

从 audit log 里,你能看到:

  • 对什么资源
  • 做了什么
  • 被拒绝还是允许

👉 这才是真实需求,而不是猜。


Step 4:按 namespace 切,而不是全局切

大部分业务根本不需要 ClusterRole。

优先:

  • Role
  • RoleBinding
  • Namespace 隔离
kind: RoleBinding
metadata:
  name: dev-reader-binding
  namespace: dev
subjects:
- kind: User
  name: dev-user
roleRef:
  kind: Role
  name: pod-reader

五、我个人最反感的三种权限“坏味道”

说点主观的。

🚫 1. cluster-admin 当万能钥匙

这不是效率,这是技术债炸弹


🚫 2. CI/CD 用人的 kubeconfig

程序 ≠ 人
程序应该有自己的 ServiceAccount。


🚫 3. 权限没人敢删

“这个 Role 不知道谁在用,先留着吧。”

然后一留就是三年。


六、说点心里话:权限设计,其实是在保护你自己

很多人觉得:

“搞最小权限,麻烦。”

但我真心说一句掏心窝子的:

权限不是防黑客的,更多是防“自己人误操作”的。

真正出过事故的运维都懂:

  • 删错 namespace
  • 改错 Secret
  • apply 到了 prod

那一刻你会无比庆幸:

“还好当时没给他删除权限。”


七、结尾送你一句我很喜欢的话

系统的成熟度,不是看功能有多强,而是看“不能做什么”有多清晰。

Kubernetes 最小权限,不是一次性工程,而是一个持续收敛的过程

慢一点,保守一点,
但每一步,都是在给未来的自己减压。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
3月前
|
运维 Kubernetes 安全
镜像不干净,容器跑得再稳也白搭:我在生产环境踩过的镜像安全那些坑
镜像不干净,容器跑得再稳也白搭:我在生产环境踩过的镜像安全那些坑
94 5
镜像不干净,容器跑得再稳也白搭:我在生产环境踩过的镜像安全那些坑
|
2月前
|
运维 Kubernetes Go
别再靠人肉运维了:Kubernetes Operator 才是运维自动化的终极形态
别再靠人肉运维了:Kubernetes Operator 才是运维自动化的终极形态
122 6
|
2月前
|
消息中间件 运维 监控
Kafka 最佳实践:分区策略、重试、幂等生产者
Kafka 最佳实践:分区策略、重试、幂等生产者
181 3
|
2月前
|
运维 Kubernetes 监控
K8s 管理平台怎么选?Rancher、OpenShift、kOps、EKS、GKE —— 运维视角下的真相对比
K8s 管理平台怎么选?Rancher、OpenShift、kOps、EKS、GKE —— 运维视角下的真相对比
275 17
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
53_多模态LLM:图像理解的新范式
在人工智能技术快速发展的今天,单一模态的语言模型已经无法满足日益复杂的应用需求。2025年,多模态大型语言模型(MLLM)的崛起标志着AI技术进入了一个新的发展阶段,特别是在图像理解与文本生成的结合方面取得了突破性进展。本文将深入剖析多模态LLM的技术原理、架构设计、性能评估及实际应用案例,探讨视觉-语言融合技术如何重塑AI应用的边界,以及在未来发展中面临的挑战与机遇。
|
7月前
|
Ubuntu 安全 小程序
服务器版本的CentOS和Ubuntu哪个更适合你?
但是以上的比较并不说明Ubuntu是不稳定的或者是不安全的,只是以上比较过程中,在稳定性方面Ubuntu稍微逊色了一点。由于Ubuntu在个人桌面电脑的使用率远远高于CentOS,用Ubuntu搭建服务器,如果遇到什么问题,寻找解决方案相对比较容易,这让Ubuntu在选择方面更优于CentOS。如果你是一个初学者,那么毫无疑问Ubuntu是更适合的选择。如果你正在经营自己的公司,在这两者之间,CentOS会更好一些。
|
6月前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
883 0
|
9月前
|
机器学习/深度学习 SQL 数据采集
大数据行业权威认证盘点:这些证书让你的简历更受大厂青睐
这些认证不仅能够为求职者提供有力的能力证明,更能帮助HR快速识别符合岗位要求的技术人才。对于希望进入大数据领域的从业者来说,选择适合自身职业规划的认证,将大大提升职业竞争力。
|
11月前
|
SQL 大数据 数据库
RocketMQ实战—1.订单系统面临的技术挑战
本文详细分析了一个订单系统的设计与技术挑战。首先,介绍了订单系统的整体架构、业务流程及负载情况,包括电商购物流程、核心和非核心业务流程,以及真实生产中的负载压力。接着,探讨了系统面临的主要技术问题:支付后发券、发红包等操作导致性能下降;退款流程复杂且易失败;与第三方系统耦合带来的不稳定;大数据团队直接查询数据库影响性能;秒杀活动时数据库压力剧增等。最后,通过放大100倍压力的方法,梳理了高并发下的技术挑战,如核心链路优化、后台线程补偿机制、第三方系统解耦、数据获取方式改进等,为订单系统的优化提供了全面的参考。
RocketMQ实战—1.订单系统面临的技术挑战
|
机器学习/深度学习 算法 开发工具
【YOLOv8量化】普通CPU上加速推理可达100+FPS
【YOLOv8量化】普通CPU上加速推理可达100+FPS
2359 0