k8安全机制
-
<李> Kubernetes的安全框架李>
<李>传输安全,认证,授权,准入控制李>
<李>使用RBAC授权,我们作为一个用户如何去授权不同的同事去访问集群的权限,比如开发同的事,可以访问哪个资源,哪个命名空间,测试同事可以访问哪些,通过这方面我们怎么去限制。李>
一、美丽的安全框架
?访问k8集群的资源需要过三关:认证,鉴权,准入控制
?普通用户若要安全访问集群API服务器,往往需要证书,令牌或者用户名+密码;Pod访问,比如入口控制器Ui的仪表盘都需要ServiceAccount,主要是让这个容器能够访问这个API,也就是所有的交互都是通过API的,这可能通过一个人去通过kubectl去交互,也有可能你的程序去调用API,但这些都是需要授权的
?k8安全控制框架主要由下面3个阶段进行控制,每一个阶段都支持插件方式,通过API服务器配置来启用插件。
-
<李>认证认证李>
<李>授权鉴权李>
<李>允许控制准入控制李>
<代码>说在前面的话,也就是每个阶段都是插件化的设计,可以自己开发插件,把这些集成到步骤里面,来实现相关的访问控制,这样的话你就不需要去修改原有的代码去增加了,所以k8设计原则有很多都是以扩展性去设计的,都尽可能的让用户自定义一些东西,集成到里面。代码>
接下来看一张图,这是访问API经历的一些阶段
这些都是Apiserver去提供的,也支持不同的功能,来完成相关的处理的,相关的认证,再往下就是API内置有三层的授权,第一层就是认证,第二层就是鉴权,第三层就是准入控制,然后通过之后就可以访问相关的资源了,这些资源都是从ETCD中去调用的,一些存储状态的信息
传输安全:
现在美丽都已经改成https进行访问,也就是不管你是kubeadm部署还是二进制部署,他都是建议你使用https进行全栈的通信,告别8080人,使6443年用
认证:
API收到用户发送的请求之后,他会先认证,认证它这边有三个可以做到
三种客户端身份认证:
?HTTPS证书认证:基于CA证书签名的数字证书认证,也就是美丽,CA签出来的证书可以作为你客户端访问携带的证书,它会帮你认证,这是一种方式,从这个证书里面去提取你有没有权限去访问。
?HTTP牌认证:通过一个令牌来识别用户。
?HTTP基础认证:用户名+密码的方式认证,这是基于HTTP自身的一个认证,不过这个很少人去用,因为安全系数比较低。
第一关就是标识你是用哪个证书进来的,还是令牌标识进来的,看看我这里是不是可信任的,看看我这个令牌我这里有没有相关的授权,也就是我这里有没有这个令牌,如果没有就不允许通过,然后下面就不会再进行了,如果通过的话,就比如本地已经创建这个令牌了,有的话就给你放行,进行下一个判断,也就是第二关授权。
授权:
RBAC(基于角色的访问控制,基于角色的访问控制):负责完成授权(授权)工作,也就是会查看你的访问符不符合权限,所以它会在这个地方去给你判断,如果你来的这个身份,虽然有这个身份,但是没有这个权限访问这个资源,也会不允许你通过。
授权的资源有很多类型的支持
Kubernetes进阶之基于RBAC授权安全框架