k8s的权限
来自博客:25-k8s集群中-RBAC用户角色资源权限_权限 资源 角色-CSDN博客
一.RBAC概述(基于角色的访问控制)
1.图解
用户:
1.user
2.serviceAccount
3.Group
用户角色
1.Role:局部资源角色
2.clusterRole:全局资源角色额
角色绑定:
1.RoleBinding
2.ClisterRolebinding
2.集群默认的角色
kubectl get clusterrole | grep -v systemadmin:主要用于授权命名空间所有读写的权限
cluster:admin超级管理员,有集群所有权限
edit:允许对大多数对象进行读写操作,不允许查看或者修改角色,角色绑定
view:允许对命名空间大多数对象进行读写,不允许查看角色,角色绑定
二.用户的创建流程
1.用户的创建
(1)ssl流程介绍
实际上k8s中的根证书在kubeadmin部署的时候,以及自动生成了,k8s是模拟ca机构,给自己办法证书,也验证自己,所以证书中有私钥,公钥等;
本质上讲,k8s的用户就是一个文件,该文件在当前登陆用户的家目录下;这个文件config,就代表我是谁;但角色和权限信息在其他位置
ls ./kube/config
(2)生成用户证书
一个用户一个证书,这个用户证书,即使用来生成用户文件的(也就是家目录下的config)
(3)生成kubecongi用户授权文件
有了这个授权文件,就像鱼拥有了一个用户
但是还没有任何权限,无法使用
2.创建角色和规则
通过资源清单的方式,创建角色和规则
角色:
role:局部资源角色
clusterole:全局资源角色
规则:这角色的权限,能使用 什么资源,不能使用什么资源
kubectl api-resource
kubectl get role
3.角色的绑定
根据角色的不同,对应不同绑定资源清单的编写
rolebinding
clusterbinding
只要角色和用户绑定完成,RBAC的整个流程就结束了
我们创建成功一个带有特定权限的用户,就可以分发给同事进行使用
4.把创建好的文件,发送给同事就可以使用了
kubectl get pod --kubeconfig=xinjizhiwa.kubeconfig:指定使用的集群认证配置文件将文件拷贝到 ./kube/config下就不用指定文件位置了
5.流程总结
6.用户组
只要拥有了用户组,我们创建用户的时候,签名中“O”字段,与用户组名相同,那么创建出来的用户,就拥有了用户组的权限,就不在需要配置角色、绑定了;方便了很多;
7.serviceAccount:集群内部资源权限
#这里就是sa账号,指定sa的名称,请确认该账号是有权限访问K8S集群的哟!
serviceAccountName: py02