0
点赞
收藏
分享

微信扫一扫

服务器生信环境配置脚本

一、RBAC概述

1,k8s集群的交互逻辑(简单了解)

        我们通过k8s各组件架构,知道各个组件之间是使用https进行数据加密及交互的,那么同理,我们作为“使用”k8s的各种资源的使用者,也是通过https进行数据加密的;

        k8s通过我们家目录下的证书来判断我们是谁?通过证书内容来认定我们的权限;

用户证书的位置

2,k8s的安全架构(简单了解)

3,RBAC用户授权的逻辑(重要)

用户/主题Topic

        1,User

        2,SerciceAccount

        3,Group

用户角色:

        1,Role:局部资源角色

        2,ClusterRole:全局资源角色

角色绑定:

        1,RoleBinding

        2,ClusterRoleBinding

4,查看现有的集群默认角色

二、流程介绍

1,用户的创建流程

        本质上讲,在k8s系统中,用户,就是一个文件,这个文件在当前登录用户的家目录下;

这个文件config,就代表“我”是谁;

        这里面并没有角色、权限信息,角色和权限信息,在其他位置;

        所以,要创建用户,就是要创建这个文件;

        那么如何创建这个文件呐?

· ssl流程介绍

        知道了ssl原理,https请求过程,我们就了解了,ssl的安全机制;

        实际上k8s当中“根证书”早就生成好了,在我们kubeadm部署的时候,就自动帮我们生成了;

        k8s是模拟ca机构,给自己颁发证书,自己验证自己,所以,整数中有私钥、公钥等;

· 生成用户证书

        一个用户一个证书,这个用户证书,就是用来生成,用户文件的(也就是家目录下的config)

· 生成kubeconfig用户授权文件

        有了这个授权文件,我们就拥有了一个用户了;

        但是,还没有任何权限,还无法使用;

2,创建角色和规则

        通过资源清单的方式,创建角色和规则;

        角色就是:

        规则就是:这个角色的权限;能使用什么资源、不能使用什么资源,,,,

3,角色与用户的绑定

        根据角色的不同,创建资源清单,对应不同的绑定资源清单的编写;

        只要角色和用户绑定完成,那么,RBAC的整个流程就结束了;

        我们就成功创建了一个带有特定权限的用户;就可以分发给“同事”进行使用了;

4,逻辑流程的总结

三、RBAC创建初体验

1,创建用户【user】

· 生成用户ssl证书

        以往我们使用openssl的工具命令生成证书,比较繁琐,本次学习,我给大家介绍一个证书生成工具,叫做cfssl证书生成工具;

1,上传/下载cfssl证书生成工具

cfssl工具百度网盘地址:

链接:https://pan.baidu.com/s/1gDRQuxekvgInplLkpjvhQw?pwd=f31x 
提取码:f31x

或者去github地址下载:Releases · cloudflare/cfssl · GitHub

2,解压cfssl工具压缩包
3,删除压缩包,将cfssl文件改名

        为什么改名?为了便于使用~如果你不嫌费力,可以不改~

4,将cfssl文件编程全局命令

        将这三个文件,移动到/usr/local/bin目录下,编程全局命令~

5,给cfssl执行文件加执行权限
6,编辑cfssl工具的生成用户ssl证书的配置文件

        根证书

        客户端验证签名证书

7,使用cfssl工具生成用户的ssl证书

参数解释:

查看证书

至此,我们用户的ssl证书申请完毕了;

· 生成用户kubeconfig文件

1,编辑生成kubeconfig文件的执行脚本
2,执行生成kubeconfig用户文件的执行脚本

        正式生成用户

查看生成的kubeconfig用户文件

拓展知识:也可以使用config资源清单编写生成用户kubeconfig文件

此时使用这个用户,取查看pod,会提示你没有权限,因为咱们还没有创建、绑定角色;

至此,我们用户“xinjizhiwa”就创建完成了;

2,创建角色编写规则

· 编辑角色资源清单

        上述内容中,我们知道,角色有两种,一种是全局角色ClusterRole,另一种是局部角色Role;

        我们先创建一个局部的Role角色作为学习;

· 创建角色

查看角色

至此,用户和角色及规则都创建成功了;

3,绑定用户与角色

· 编辑绑定资源清单

· 创建绑定资源

4,测试用户

协议个pod资源,使用用户“xinjizhiwa”创建,发现创建不了,提示权限不够;

因为,我们在创建角色规则的时候,只给了删除、和查看的能力,没有给create创建能力;

因为我们有default默认名称空间的查看、删除权限,所以我们可以进行查看;

测试查看功能

测试删除功能

到此,普通用户的创建、角色绑定、角色配置就学习完毕了;

四、其他节点使用用户登录操作k8s

        我们有了用户文件,将用户文件发送给“同事”,同事直接使用这个文件,就可以按照绑定的规则,操作k8s资源了;

1,模拟将用户文件发给同事

        比如,同事正在使用k8s233,我们把用户文件发给他

2,同事在k8s233使用用户文件操作k8s资源

3,操作资源不指定文件,默认指定设置

五、用户组Group案例

1,用户组的概念

2,创建用户组Group

· 编辑cfssl证书请求文件

· 生成用户组证书

再次声明,你创建的是用户、还是用户组,取决于你的证书名称选择的签名字段,选择的是CN还是o;

· 编辑脚本生成用户组kubeconfig用户组文件

· 执行脚本生成用户组文件

3,创建角色、绑定用户组

· 编辑资源清单

· 创建用户组kubeconfig文件

此时,我们就拥有了xinjizhiwa-group这个用户组了;

4,创建用户加入用户组

· 创建用户

生成用户证书

· xjzw用户加入用户组

1,编辑生成kubeconfig用户文件的执行脚本
2,执行脚本

5,测试用户是否拥有用户组的权限

总结,只要拥有了用户组,我们创建用户的时候,签名中“O”字段,与用户组名相同,那么创建出来的用户,就拥有了用户组的权限,就不在需要配置角色、绑定了;方便了很多;

六、基于【服务账号serviceaccount】授权

        serviceaccount用户,简称sa资源,用于自动化程序的用户创建;

        创建sa用户,就不需要使用证书来创建了,它是k8s集群中的一个资源,sa资源;

1,创建sa资源

· 声明式创建

查看sa服务账号

· 响应式创建

查看sa用户

2,授权python程序对k8s-API的访问权限

· 创建用户

· 创建角色

· 绑定sa账号和角色

3,部署一个python的pod资源

4,进入pod中执行python代码

至此,关于k8s的RBAC的学习,就此结束;

举报

相关推荐

0 条评论