Kubernetes进阶之基于RBAC授权安全框架

  

k8安全机制

  
      <李> Kubernetes的安全框架李   <李>传输安全,认证,授权,准入控制李   <李>使用RBAC授权,我们作为一个用户如何去授权不同的同事去访问集群的权限,比如开发同的事,可以访问哪个资源,哪个命名空间,测试同事可以访问哪些,通过这方面我们怎么去限制。   
  

一、美丽的安全框架

  

?访问k8集群的资源需要过三关:认证,鉴权,准入控制
?普通用户若要安全访问集群API服务器,往往需要证书,令牌或者用户名+密码;Pod访问,比如入口控制器Ui的仪表盘都需要ServiceAccount,主要是让这个容器能够访问这个API,也就是所有的交互都是通过API的,这可能通过一个人去通过kubectl去交互,也有可能你的程序去调用API,但这些都是需要授权的

  

?k8安全控制框架主要由下面3个阶段进行控制,每一个阶段都支持插件方式,通过API服务器配置来启用插件。

  
      <李>认证认证   <李>授权鉴权李   <李>允许控制准入控制李   
  

<代码>说在前面的话,也就是每个阶段都是插件化的设计,可以自己开发插件,把这些集成到步骤里面,来实现相关的访问控制,这样的话你就不需要去修改原有的代码去增加了,所以k8设计原则有很多都是以扩展性去设计的,都尽可能的让用户自定义一些东西,集成到里面。

  

接下来看一张图,这是访问API经历的一些阶段
 Kubernetes进阶之基于RBAC授权安全框架“> <br/>从上面kubectl, API, UI,访问的是k8sAPI,美丽的API提供了很多的接口<br/> <img src=

  

这些都是Apiserver去提供的,也支持不同的功能,来完成相关的处理的,相关的认证,再往下就是API内置有三层的授权,第一层就是认证,第二层就是鉴权,第三层就是准入控制,然后通过之后就可以访问相关的资源了,这些资源都是从ETCD中去调用的,一些存储状态的信息

  

传输安全:
现在美丽都已经改成https进行访问,也就是不管你是kubeadm部署还是二进制部署,他都是建议你使用https进行全栈的通信,告别8080人,使6443年用

  

认证:
API收到用户发送的请求之后,他会先认证,认证它这边有三个可以做到
三种客户端身份认证:

  

?HTTPS证书认证:基于CA证书签名的数字证书认证,也就是美丽,CA签出来的证书可以作为你客户端访问携带的证书,它会帮你认证,这是一种方式,从这个证书里面去提取你有没有权限去访问。
?HTTP牌认证:通过一个令牌来识别用户。
?HTTP基础认证:用户名+密码的方式认证,这是基于HTTP自身的一个认证,不过这个很少人去用,因为安全系数比较低。

  

第一关就是标识你是用哪个证书进来的,还是令牌标识进来的,看看我这里是不是可信任的,看看我这个令牌我这里有没有相关的授权,也就是我这里有没有这个令牌,如果没有就不允许通过,然后下面就不会再进行了,如果通过的话,就比如本地已经创建这个令牌了,有的话就给你放行,进行下一个判断,也就是第二关授权。

  

授权:
RBAC(基于角色的访问控制,基于角色的访问控制):负责完成授权(授权)工作,也就是会查看你的访问符不符合权限,所以它会在这个地方去给你判断,如果你来的这个身份,虽然有这个身份,但是没有这个权限访问这个资源,也会不允许你通过。

  

授权的资源有很多类型的支持
 Kubernetes进阶之基于RBAC授权安全框架“> <br/>准入控制:<br/>简单讲就是开发将一些高级的功能,直接插件化的去设计,也就是准入控制器就是一个插件的集合,集合里面就有一些高级的特性,都是以插件去实现的,如果不启用这些插件的话,那你就使用不了这个功能,这也就是第三关,也就是你的请求会经过你的插件准入控制,准入控制呢会给你效验请求的实现的这个方法,到底这个插件有没有启用这一块,不过大多数的方式默认的插件都是启用的,启动之后来请求相关的资源,才会被允许,因为它启用插件了,如果没启动的话也会不通过</p>
  <p> Adminssion控制实际上是一个准入控制器插件列表,发送到API服务器的请求都需要经过这个列表中的每个准入控制器,插件的检查,检查不通过,则拒绝请求。<h2 class=Kubernetes进阶之基于RBAC授权安全框架