【k8s系列】k8s架构(二)(认证)

基本概念
关于k8s的认证,首先我们应该清楚密码学中的对称加密和非对称加密
对称加密中,双方持有相同的密钥
非对称加密中,双方持有一个密钥对,加密时使用公钥,解码时使用私钥
k8s中的service是对外提供的服务,同时服务间也需要进行通信等一系列操作,因此有必要在通信时做好安全措施。
由于非对称加密的加密算法较为复杂,对称加密的安全性又不够高,故service在通信时先使用非对称加密发送密钥,再使用密钥进行对称加密,这也是大名鼎鼎的SSL/TLS协议
公钥在使用前需要经过CA认证
k8s中的认证与授权
认证 外部访问:例如:kubectl访问ApiServer。ApiServer一般是一个集群的标准入口,集群中有常见的组件scheduler,controlmanger,etcd等都需要通过ApiServer与外部对接
1.客户端证书认证(TLS双向认证)
2.BearerToken
内部访问:例如集群内部的pod需要访问ApiServer。
3.ServiceAccount:包括namespace,token,ca三部分组成,通过挂载存储于pod的目录中
授权 k8s中的授权方式包括三种:ABAC,WebHook,RBAC。其中RBAC是kubernetes1.6引入的,也是我们需要重点了解的。
RBAC(Role Based Access Control)分为三层架构:user,role与authority
【k8s系列】k8s架构(二)(认证)
文章图片

其中
user有内部与外部之分,ServiceAccount是集群内部的用户
authority是角色所拥有的权限,包括对资源的使用,以及最基本的增删改查等动作。
角色是两者之间的桥梁,通过rolebinding与user联系,并拥有自己的命名空间。
同时,为了方便用户使用所有的权限,设计了CLusterRole
后续 在完成授权之后,还应通过准入控制(admision control),其效果类似于filter
【【k8s系列】k8s架构(二)(认证)】准入控制器(Admission Controller)位于 API Server 中,在对象被持久化之前,准入控制器拦截对 API Server 的请求,一般用来做身份验证和授权。
深入学习:SSL/TLS协议https://zhuanlan.zhihu.com/p/...
https://www.cnblogs.com/wqbin...
RBAC与ServiceAccounthttps://zhuanlan.zhihu.com/p/...
admision control参考https://jimmysong.io/kubernet...

    推荐阅读