基本概念

对于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

其中
user有外部与内部之分,ServiceAccount是集群外部的用户
authority是角色所领有的权限,包含对资源的应用,以及最根本的增删改查等动作。
角色是两者之间的桥梁,通过rolebinding与user分割,并领有本人的命名空间。
同时,为了不便用户应用所有的权限,设计了CLusterRole

后续

在实现受权之后,还应通过准入管制(admision control),其成果相似于filter

准入控制器(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...