k8s是分布式集群管理工具,k8s作用是容器编排
1、安全机制核心:API server。API server作为整个集群内部通信的中介,也是外部控制的入口,所有的安全机制都是围绕api sserver来进行设计的。请求api server资源要满足3个条件:认证、鉴权、准入机制。三个条件都通过才能在k8s中创建资源
2、认证anthentcation方式
(1)http token:通过token识别合法用户。token是一个很长、很复杂的字符串,字符串是用来表达客户的一种方式,每一个token对应一个用户名,用户名存储在api server能够访问的文件中,客户端发起请求时,http header中包含token,token对应到api server,api server对应到用户名存储文件,解码查看是否对应用户名,验证通过可访问集群
(2)http base:用户名+密码的验证方式。用户名和密码都是通过base64进行加密,加密完成的字符串存储在http request的header Atuthorization中,发送给服务端。服务端收到加密字符串,解码后获取用户名和密码,验证通过,登录成功
(3)https证书:这是最严格、最严谨的方式。基于CA根证书签名的客户端身份进行验证
3、认证的访问类型
(1)k8s组件对api server的访问(kubelet、kube-proxy)
(2)pod对api server的访问(pod、coredns、dashborad)
4、安全性说明
(1)controller namnger、scheduler与api server在一台服务器,可以直接使用api server的非安全端口进行访问
(2)kubectl、kubelet、kube-proxy都是通过api server的https证书进行双向验证,都是用6443端口进行验证
5、签发证书的方式
(1)手动签发(二进制部署是手动签发证书。CA签发:把证书匹配到每个对应组件,然后访问6443即可)
(2)自动签发(kubeadm是自动签发证书。kubelet第一次访问api server使用token,一旦token通过后,controller manager会为kubelet生成一个证书,以后都是通过证书访问)
6、kubec