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 system


admin:主要用于授权命名空间所有读写的权限
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