RBAC
发表于:2025-11-24 | 分类: 学习

Kubernetes 中所有的 API 对象,都保存在 Etcd 里。可是,对这些 API 对象的操作,却一定都是通过访问 kube-apiserver 实现的。其中一个非常重要的原因,就是你需要 APIServer 来帮助你做授权工作

在 Kubernetes 项目中,负责完成授权(Authorization)工作的机制,就是 RBAC:基于角色的访问控制(Role-Based Access Control)。

RBAC有三个基本概念:

  1. Role:角色,它其实是一组规则,定义了一组对 Kubernetes API 对象的操作权限。
  2. Subject:被作用者,既可以是“人”,也可以是“机器”,也可以使你在 Kubernetes 里定义的“用户”。
  3. RoleBinding:定义了“被作用者”和“角色”的绑定关系。
Role

Role 本身就是一个 Kubernetes 的 API 对象,

Subject

“被作用者”需要通过 RoleBinding 来实现。RoleBinding 对象里定义了一个 subjects 字段,即“被作用者”。它的类型是 User,即 Kubernetes 里的用户。

Kubernetes 里的“User”,也就是“用户”,只是一个授权系统里的逻辑概念。它需要通过外部认证服务,比如 Keystone,来提供。或者,你也可以直接给 APIServer 指定一个用户名、密码文件。那么 Kubernetes 的授权系统,就能够从这个文件里找到对应的“用户”了。

有一个 roleRef 字段,通过这个字段RoleBinding 对象就可以直接通过名字,来引用定义的 Role 对象,从而定义了“被作用者(Subject)”和“角色(Role)”之间的绑定关系。

Kubernetes的ServiceAccount 也可以作为权限分配的一个方式,并且更为常用

上一篇:
Operator工作原理
下一篇:
Kubernetes编程范式