RBAC 授权

API Server使用以下几种授权策略,通过API Server的启动参数 --authorization-mode 设置

  • AlwaysDeny:表示拒绝所有请求。仅用于测试
  • AlwaysAllow:表示允许所有请求。如果有集群不需要授权流程,则可以采用该策略
  • Node:节点授权是一种特殊用途的授权模式,专门授权由 kubelet 发出的 API 请求
  • Webhook:是一种 HTTP 回调模式,允许使用远程 REST 端点管理授权
  • ABAC:基于属性的访问控制,表示使用用户配置的授权规则对用户请求进行匹配和控制
  • RBAC:基于角色的访问控制,默认使用该规则

RBAC(Role-Based Access Control)基于角色的访问控制,在Kubernetes 1.5 中引入,现为默认标准。
相对其他访问控制方式,拥有如下优势:

  1. 对集群中的资源和非资源均拥有完整的覆盖
  2. 整个RBAC完全由几个API对象完成,同其他API对象一样,可以用kubectl或API进行操作
  3. 可以在运行时进行操作,无需重启API Server

Kubernetes 的 RBAC 流程需要定义三个主要组件

  • Subject
  • Rule
  • Rolebinding

Subject 即 实际需要被检查的对象,包含 user (Kubernetes User Account)、service account(Kubernetes Service Account) 和 group

Rule 是一组包含了类似 CRUD 动作的列表,还包含一些kubernetes附加的功能,watch、list 和 exec。kubernetes使用 Role(Kubernetes Role & ClusterRole)来定义 Rule 的适用范围。

Send a Message