一、简介:
RBAC 使⽤ rbac.authorization.k8s.io API Group 来实现授权决策,允许管理员通过 Kubernetes API 动态配置策略,要启⽤ RBAC ,需要在 apiserver 中添加参数 --authorization-mode=RBAC ,
如果使⽤的 kubeadm 安装的集群,1.6 版本以上的都默认开启了 RBAC ,可以通过查看 Master 节点上 apiserver 的静态 Pod 定义⽂件:
$cat /etc/kubernetes/manifests/kube-apiserver.yaml --authorization-mode=Node,RBAC ...
二、Role示例
下面是一个位于 "default" 名字空间的 Role 的示例,可用来授予对 pods 的读访问权限
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: default name: pod-reader rules: - apiGroups: [""] # "" 标明 core API 组 resources: ["pods"] verbs: ["get", "watch", "list"]
查看所有的role:kubectl get role
三、ClusterRole 示例
下面是一个 ClusterRole 的示例,可用来为任一特定名字空间中的 Secret 授予读访问权限, 或者跨名字空间的访问权限(取决于该角色是如何绑定的):
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: # "namespace" 被忽略,因为 ClusterRoles 不受名字空间限制 name: secret-reader rules: - apiGroups: [""] # 在 HTTP 层面,用来访问 Secret 对象的资源的名称为 "secrets" resources: ["secrets"] verbs: ["get", "watch", "list"]