k8s API Server认证管理

Kubernetes集群中所有资源的访问和变更都是通过Kubernetes API Server的REST API来实现的,所以集群安全的关键点就在于如何识别并认证客户端身份(Authentication)以及随后访问权限的(Authorization)

Kuernetes 提供3种级别的客户端身份认证方式:

  1. HTTPS证书认证:基于CA根证书签名的双向数字证书认证方式
  2. HTTP Token认证:通过一个Token来识别合法用户
  3. HTTP Base认证:通过用户名+密码的方式验证

HTTPS证书认证原理:

这里需要有一个CA证书,CA是PKI系统中通信双方都信任的实体,被称为可信第三方(Trusted Third Party,TTP).

CA作为第三方的重要条件之一就是CA的行为具有否认性。CA证书证实他人的公钥信息,证书上有CA的签名。

用户如果因为信任证书而有了损失,则证书可以作为有效的证据用于追究CA的法律责任。

证书中绑定了公钥数据和相应私钥拥有着的身份信息,并带有CA的数字签名;证书中也包含了CA的名称、以便于依赖方找到CA的公钥,验证证书上的数字签名。
CA认证的具体步骤如下:

  1. HTTPS通信双方的服务器端向CA机构申请证书,CA机构是可信的第三方机构,它是一个公认的权威的企业,也可以是企业自身.
  2. HTTPS通信双方的客户端向CA机构申请证书,CA机构发根证书、客户端证书及私钥给申请者
  3. 客户端向服务器发起请求,服务器下发服务证书给客户端.客户端收到证书通过私钥解密证书,并利用服务器端证书中的公钥认证证书信息比较证书里的消息.如果一直则认可身份
  4. 客户端发送客户端证书给服务器端,通过私钥解密证书,获得客户端证书公钥,并用该公钥认证证书信息,确认客户端是否合法
  5. 客户端通过随机密钥加密信息,并发送加密后的信息给服务端. 服务端和客户端协商好后,客户端会产生一个随机的密钥,客户端通过协商好的加密方案,加密该随机密钥,并发送该随机密钥到服务器,服务器收到密钥后,双方通信的所有内容都通过该随机密钥加密.

上述是双向认证SSL协议的具体通信过程,这种情况要求服务器和用户双方都有证书.

HTTP Token 认证原理

HTTP Token的认证用一个很长的特殊编码方式的并且难以被模仿的字符串—Token来表明客户身份的一种方式.

Token是一个很复杂的字符串,此外每个Token对应一个用户名,存储在API Server能放问的一个文件中.

当客户端发起API调用请求时,需要在HTTP Header里放入Token,API Server就可以识别合法用户和非法用户了.

HTTP Base认证

HTTP Base认证就是将"用户名+冒号+密码"用BASE64位算法进行编码后的字符串放在HTTP Request中的Header Authorization域里发送给服务端,服务端收到后进行解码,获取用户名和密码,然后进行用户身份的鉴权工程

猜你喜欢

转载自blog.csdn.net/zhangshaohuas/article/details/107686403