授权

授权有很多种模式,最常见的有

  • AlwaysAllow:即只要认证通过,API请求就正常返回

  • AlwaysDeny:即使认证通过,也无权限

  • RBAC

  • 等等

在这里面,最重要的就是RBAC的授权策略,本节将详细地介绍。

RBAC中有四个重要的资源对象:RoleClusterRoleRoleBindingClusterRoleBinding

Role与ClusterRole是对k8s中资源的操作权限的集合,Role是命名空间级别的,ClusterRole是集群级别的。

下面是一个Role的例子

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

它所对应的API就是

GET /api/v1/namespaces/user-a/pods/<pod>
GET /api/v1/namespaces/user-a/pods

下面是一个RoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: pod-reader
  namespace: user-a
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: pod-reader 
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: user-a

Last updated

Was this helpful?