Kubernetes 源码 (14) Api Server 认证机制 4

Submitted by Lizhe on Wed, 07/15/2020 - 10:50

RBAC 授权插件将用户角色作为决定用户是否能执行操作的关键因素。

主体 ( 人、sa 或者 group ) 和 一个或者多个 role 关联,每个 role 被允许在特定的资源上执行特定的 动作

如果一个用户有多个角色,他们可以做任何角色允许的动作。

 

RBAC 通过创建 四种 特定的 Kubernetes 资源来完成

Role 和 ClusterRole

它们指定了在资源上可以执行哪些动作

RoleBinding 和 ClusterRoleBinding 

它们将上述角色绑定到特定的 用户、组 或者 sa 上

之前我们使用过

kubectl create clusterrolebinding permissive-binding --clusterrole=cluster-admin --group=system:serviceaccounts:lizhe

意思是 创建了一个 名为 permissive-binding 的 类型是  clusterrolebinding  的绑定 到 clusterrole ,绑定的对象是一个组 该组作用域为 lizhe namespace


 

 

RoleBinding与ClusterRoleBinding

RoleBinding
RoleBinding可以将同一namespace中的subject(用户)绑定到某个具有特定权限的Role下,则此subject即具有该Role定义的权限。

ClusterRoleBinding
ClusterRoleBinding在整个集群级别和所有namespaces将特定的subject与ClusterRole绑定,授予权限。

 

Role与ClusterRole

Role
Role对象只能用于授予对某一namespace中资源的访问权限。

ClusterRole
ClusterRole对象可以授予整个集群范围内资源访问权限, 也可以对以下几种资源的授予访问权限:

  • 集群范围资源(例如节点,即node)
  • 非资源类型endpoint(例如”/healthz”)
  • 跨所有namespaces的范围资源(例如pod,需要运行命令kubectl get pods --all-namespaces来查询集群中所有的pod)