"认证",形象地理解就是"你是谁"。在上文中,用户A在发起API请求时,管理员如何道该请求是用户A发起的呢?所以,客户端在发起API请求时,必须要携带一个身份信息来表明"我是谁",Apiserver在收到请求后,需要对这个身份信息进行认证(“不是你说你是谁,你就是谁,而是我核实你是谁,你才是谁”)
在认证与授权中,有两个重要的概念:用户(USER)与用户组(GROUP)。客户端携带的身份凭证,最终会被apiserver认证为USER与GROUP。
接下来,我们介绍几种常见的认证方式。
X509客户证书
该认证方式下,客户端发起请求时需要携带一个证书,表明自已的身份。该证书必须是由apiserver的启动参数--client-ca-file
指定的CA所签发(即能够被该参数指定的CA证书文件所验证)。如果apiserver验证客户端所携带的客户证书是client-ca-file签发的,那么认证通过。
[root@k8s-uat-m01 ~]# cat /etc/kubernetes/manifests/kube-apiserver.yaml | grep ca
- --client-ca-file=/etc/kubernetes/pki/ca.crt
在客户证书文件中,会包含域名/CN