目录

 

1.了解密码学的两个概念

  2.K8S认证方式

  3.k8s鉴权机制

4.k8s的授权方式:

5.准入控制:

 6.安装方式对比(官方)

   7.滚动部署的过程:


1.了解密码学的两个概念

  •    对称加密,用用同样的密钥对数据进行加解密。

                                                                

k8s使用无证书harbor k8s客户端证书认证_k8s使用无证书harbor

  • 非对称加密,加密和解密的密钥不一样,加密的密钥称为公钥,大家都可以知道,解密的密钥称为私钥。

                                                                 

k8s使用无证书harbor k8s客户端证书认证_服务端_02

     

  • 单向认证

     网络通讯是双向的,但是安全认证不一定都是双向。大多数情况下可能都是单向的,只需要客户端确认服务端是可靠的,而服务端不管客户端是否可靠。即客户端,比如浏览器会验证服务端证书,服务端不需要客户端证书。

  • 双向认证

    双向认证相对于单向认证,即客户端需要确认服务端是否可信,服务端也需要确认客户端是否可信。双方都要验证对方的证书。
 

   HTTPS:起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包        工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于HTTP之下TCP之上的一个协议          层,是基于HTTP标准并对TCP传输数据时进行加密,所以HPPTS是HTTP+SSL/TCP的简称。在SSL更新到3.0时,IETF对SSL3.0          进行了标准化,并添加了少数机制(但是几乎和SSL3.0无差异),标准化后的IETF更名为TLS1.0(Transport Layer Security 安全传        输层协议),可以说TLS就是SSL的新版本3.1,

       SSL/TLS:(使用对称加密算法的过程)
       第一次通信的时候,客户端使用公钥加密了一个密钥,将密文的密钥发送到服务器,服务器通过自己的私钥就可以解开密文得到密钥。接下来客户端使用改密钥来加密要发送的数据,服务器因为之前收到了密钥,所以可以通过这个密钥进行解密数据,这样就是用对称加密的算法完成了,对称加密的算法的性能比非对称的好。这样的话还是存在问题,服务器给客户端返回公钥的过程被黑客截获,篡改公钥发给客户端,然后客户端加密后数据再被截获就完了。

       

k8s使用无证书harbor k8s客户端证书认证_客户端_03

      现在解决这个问题的办法就是使用CA证书加密,服务器给客户端返回公钥的时候,客户端拿到公钥就会去CA询问,这个公钥是不是合法的。如果访问网站,使用https出现红色的警告,那么这个证书就不是CA认证的,一般是自己生成的。

         

k8s使用无证书harbor k8s客户端证书认证_客户端_04

                                

k8s使用无证书harbor k8s客户端证书认证_服务端_05

       

   1.服务器向CA机构获取证书(假设这个证书伪造不了),当浏览器首次请求服务器的时候,服务器返回证书给浏览器。(证书包含:公钥+申请者与颁发者的相关信息+签名)

   2.浏览器得到证书后,开始验证证书的相关信息,证书有效(没过期等)。(验证过程,比较复杂,详见上文)。

   3.验证完证书后,如果证书有效,客户端是生成一个随机数,然后用证书中的公钥进行加密,加密后,发送给服务器,服务器用私钥进行解密,得到随机数。之后双方便开始用该随机数作为钥匙,对要传递的数据进行加密、解密。

  2.K8S认证方式

  • 客户端证书认证(TLS双向认证)

        k8s集群给自己的每个组件都颁发了ca证书,包括kubectl,然后kubectl 和k8s组件互相验证证书。看看是不是颁发。

        

k8s使用无证书harbor k8s客户端证书认证_服务器_06

  • Bearer Token
  • ServiceAccount(namespace,token,ca)用于集群内部之间的认证

  3.k8s鉴权机制

      

k8s使用无证书harbor k8s客户端证书认证_服务端_07

        

 

4.k8s的授权方式:

        授权也有三种方式,ABAC,WebHook,RBAC,前两种不掌握,因为官方默认用的第三种。用户又两种User和ServiceAccount,对应的权限也有两种。

        role的设计:

        

k8s使用无证书harbor k8s客户端证书认证_服务端_08

  

k8s使用无证书harbor k8s客户端证书认证_k8s使用无证书harbor_09

  角色如何和用户绑定呢?通过RoleBinding,角色在namespace下生效,当然有一个跨命名空间调用的角色,ClusterRole.

5.准入控制:

       认证授权完了以后还有最后一道流程,准入控制,这个流程就是一系列的小代码块,可以理解为java中一系列的过滤器。

k8s使用无证书harbor k8s客户端证书认证_服务端_10

 6.安装方式对比(官方)

  

k8s使用无证书harbor k8s客户端证书认证_服务端_11

  

k8s使用无证书harbor k8s客户端证书认证_客户端_12

Kubeadm的按转包给方式:

   7.滚动部署的过程:

   我们所管理的层面在Deployment上,RS和pPOD不需要们去管理的。当重新更新的时候会新Deployment会重新起一个RS,然后根据新的镜像起一个POD,POD健康检查通过后,然后旧的RS删除掉原来的POD,然后同样的方式更新第二个。

 

k8s使用无证书harbor k8s客户端证书认证_k8s使用无证书harbor_13

 Service与Lable:lable可以打在很多东西上,比如POD可以打标签,NODE可以打标签,Deployment也可以打标签。

k8s使用无证书harbor k8s客户端证书认证_服务器_14