00:00
大家好,欢迎大家继续收看上硅谷的Linux云计算视频,我是汪老师。那我们已经给我们大家讲了我们集训中的很多的一些功能了,对吧,但是从头到尾没有给我们提到安全性相关的一些东西。对于我们企业级的生态软件来说,安全性肯定是至关重要的,对吧?那也是我们必须要追求的一件事情。好,那在这张呢,我们的主要的任务就是带大家去看一下我们的K8S的安全机制,以及怎么去实现所谓的权限的分离分割,好那今天的主要内容呢,我们会分为这么几个部分给大家去讲解,第一个就是我们的K8S的一个集群的机制的一个说明,安全的一个机制说明,那以及它的安全的三个部分,认证健全和整容控制。好那我们先从第一个方面去给大家去说,我们先看一下我们的。机制说明K8S作为一个分布式的集群管理工具,保证集群的安全性是一个重要的任务。IPSSO式集群内各个组件通信的中介,也是外部控制的入口,所以K8S的安全机制基本上就是围绕保护IPSO来设定的。那K8S使用了认证、健全、准入、控制三个部分来保证IP的安全。
01:23
那我们之前给大家说过这个概念对吧,就是嗯,IPSO是我们整个K8S集群中非常重要的一个组件,它的安全性,它的稳定性也间接的决定了我们整个K8S集群的鲁棒型,对吧?好,那在这里我们会发现不管是用户还是我们的pod。那都会去访问到我们的IPSO,那间接的去访问到所谓的etcd这些组件,对吧?好,那中间呢,需要经过三个大模块,也就是我们K8集群中的认证健全和我们的准入控制,它是一道选择题,那由我们的管理员去决定你到底要选择何种类型的机制去使用。
02:06
当然发展到今天为止呢,我们也有相对完善的一些,呃,相当于是默认的这么一些策略,那它可以保证我们整个集群呢,更安全,更稳定,更高效,对吧?那所以一般来说我们都会选择这些拈,那接下来呢,我们就一个一个带大家去看一下,我们先从第一部分认证去说起,好。那对于认证来说呢,说白了来说,就是当我们的。当我们的一些用户或者是我们的pod去访问到IPO的时候,来进行一个身份的识别,这就是我们所谓的认证。在K8S中呢,认证分分为我们的好几种,第一种是htp token的方式,认证的方式通过一个token,或者理解为通过一个字符串,对吧?去识别合法的用户,那比如1234就是我的合法用户,那除此以外都不是合法的,那如果有人拿一个1234过来认证的话,我就认为他是一个合法用户,对吧,很好理解。
03:10
那的认证是有一个很长的特殊编码方式,并且很难以模仿的字符串,说白了来说就是足够长,足够复杂,对吧?好,来表达客户端的一种方式,Token是一个很长很复杂的字符串,每一个token对应一个用户名,存储在IPSSO能访问的文件中。也就是这种存储方式,它并不是存储在我们的etcd中,而是一个文件中,所以它的安全性可想而知,对吧?好,当客户端发起ipi调用请求的时候,需要在HTP,也就头部信息里放入我们token,那这样的话。我们的ipi在收到收到你的请求,会分析你的hi里面到底有没有这个token,那如果有的话,并且匹配到对应的用户的话,那就会有对应用户的一些权限认证通过。
04:00
好,这是第一种方案,第二种方案叫认证,通过我们的用户名加密码的方案进行认证,那用户名加密码用我们的BEST64,那这个算法我们之前见过,对吧?它是一种加密算法,但是很好解密对吧?好进行编码后的字符串放在APP的request中的。Has。域理发送给我们的。服务器,服务器收到后进行编码,也就是解码获取我们的用户名、户密码。那这样的话,我们的服务器呢,就知道你的用户名和密码,确定成功以后,判断我们的整个环境中到底有没有这个用户以及密码,人人通过,否则拒绝对吧?好,这两种其实都不太安全,原因是什么呢?它都是给了我们的。服务器认证了我们的客户端的机会,但是客户端根本没有认证服务器,也就意味着服务器可以认证客户端,它是否是一个合理的,合法的,但是客户端不知道你这个服务器到底是不是真的,万一是一个假的呢?这也不是不可能,对吧?并且像第一种放在文件中不安全,第二种用户密码的机制太费劲,对吧?那有没有一个更合理的,并且能够双向认证的机制呢?
05:22
当然有。RTPS证书的认证机制,好在我们整个的K8域中呢,我们会签署一个C更证书,所有节点的证书都是以这个根证书去签发出来的子证书,那并且它实现的是一个HTPS的双向认证,我们之前在给大家讲hps的时候,我们就一般在上面写了几个大致叫单向认证,对吧?好在K8S中呢,它的所有节点的访问实现的是一个双向认证。那认证过程呢?如下图。这是一个IPS的认证过程,对吧。
06:02
双向的认证过程好。首先。我们的客户端会向我们的C,当前K820服务器中的C,对吧?这是一个COC去申请证书,然后以及下发证书,服务器端也要申请和下发,需要注意一下,也就是IPO也会有自己的证书以及私钥,客户端也会有自己的证书以及私钥,好然后呢,当我们的客户端想去访问到服务器的时候,我们需要去发送证书进行认证,服务器端也会返回自己的证书给我们的客户端进行认证,那说白了这是一个双向认证。全部认证通过以后,再通过我们的随机密钥进行加密,进行所谓的发送数据。那这个跟我们之前FPS单向加密,其实就是相当于重来了一遍,倒过来重来了一遍,对吧,好。需要认证的节点。在这里大家也可以看得到。不管是我们的组件。
07:02
比如我们的control。或叫etcd还是我们的light pro,它都需要访问到对应的我们的IPSSO,那既然需要访问到的话,他们之间就需要进行一个加密以及pod,有的也需要去访问到我们的IPS server,比如我们的code DNS,对吧?比如我们dash,像这种组件,它也需要访问到我们的IPSO进行数据的获取,那也就意味着它也需要对IPO有一个双上认证的这么一个证书存在。好,那这是我们需要认证的一些节点,并且我们从刚才的说法中大家也能听得明白了,就是在这三种类型选择点,基本上现在企业我们都会选择第三种,因为前两种安全性确实没有第三种高,对吧?第三种已经是一个非常非常这么一个呃,稳定的这么一个机制了,毕竟我们全世界的网站都在使用HTPS加密方式,以此获得这么一个安全性的提升,对吧,好。
08:07
并且我们的K8S它都是通过我们的。I协议进行所谓的CS结果的开发,所以IPS是一个非常的加密方案,没有之一。好,刚才我们说到了,有很多组件需要去访问到IPSO,难道真的是所有的组件都需要跟我们的IPSO进行IPS加密的交互吗?我们都知道加密的交互是一个消耗资源的过程,对吧?如果是有一些不必要的消耗的话,那对于我来说就没有什么意义。那我们可以看一下。对于我们的control manage,对于我们的S了,也就是这两个组件对吧?好,它是在我们的K8S的组件的本身去进行跟IPSO进行交互的,那在这种情况下,因为它是处于同一台机器,所以直接使用IPSO的非端非安全端口访问即可。
09:02
也就是回访问本机的回环接口即可访问到我们的IPSSO是一个非安全的端口,也就是没有一个双向的IPS帧书的加密,当然当然我们可以在我们的K8SMA节点去启用关闭我们的非安全端口,那这样的话就不得已必须要访问我们的hps加密的这么一个端口,对吧?是可以去设置的,当然这里要不要设置自己去判断对吧?因为本地访问已经没有什么所谓的安全性可言了,访问回源接口嘛,你再搞个证书加密,其实已然已经没有必要了,好,那下一个cooper control。命令行管理工具。他们的访问的IPSO呢,是一个远程的访问过程,对吧,远程的访问过程,所以呢,他就必须要需要我们的的双向认证,这样的话安全性才有提升,对吧,防止第三方人称的攻击好。
10:02
证书的颁发,手动颁发有两种和自动颁发。手动颁发是通过K8S集群的CA进行签证签证,那自动签发首次访问IPSSO的时候使用核认证,通过后CTR manage会为生成一个证书,以后的访问都是证书做认证了,也就是最开始的时候,我们这些组件之间的沟通是一个手动的过程,当我们的库拉访问我们IP s word的时候,它会自动颁发证书,这是不同组件之间的颁发证书的一个策略问题。当然我们的集群安装的方式是Co I DM的安装方式,所以我们根本没有涉及到手中签发都是自动完成的,对吧?CU com呢?是我们需要给大家解释另一个这么一个关键字。这里面呢,它是一个文件类型对吧,里面包含了我们的集群的参数,比如我们的CE证书和IPSO的地址,也就你可以理解为这是一个呃,认证函,里面包含了你怎么去访问服务的信息,以及你的认证信息都会在我们的库卡文件之中。
11:12
好客户端参数上面生成的证书和C集群的contactt信息,比如集群叫什么,以及你的用户名。好库是逐渐通过启动指定不同的Co con文件可以切换到不同的集群,也就是Co con文件,它既是一个集群的描述,也是一个集群认证信息的这么一个填充好它会让我们在加盟下去创建一个隐藏目录,对吧,我们过来看一下,然后里面呢,会拷贝一个文件,并且并且赋予对应的身份。其实这个文件就是我们的库文件。我稍一稍等一下。
12:05
好,CD到当前的隐藏的库文件中,这里会有个count这个文件看到了吗?这是我们的client key对吧?我们的客户端的私钥证书,然后呢,我们当前的用户名,然后呢,当前的集群对吧?是什么集群看的类型是卡菲类型,以及我们的售后服务器的地址信息,好,以及我们的class的这么一个认证的这么一个信息。在这里都会有体现,对吧?这就是一个我们的完整的卡飞格文件,包含了我们的集群的访问方式以及认证信息等等。好,第二个关键性名词呢,是我们的sa,好,那sa是什么呢?我们之前也给大家说过,Sa就是我们的po中的容器跟我们的IPSO进行交互认证的这么一个这么一个关键指标,对吧?好,那为什么要使用SE呢?不是使用我们之前向我们的组件之间访问使用的双向认证呢?证书双向认证呢?原因是这里也说了,炮的创建和销毁是动态的。
13:13
动态的含义就是可能我现在啪创建出来十几个,几十个,几百个炮弹。那如果你必须要采用我们所谓的IPS证书认证的过程,你需要去验出来几十个、几百个证书。然后呢,并且这个炮会随时销毁,销毁完了以后,这些证书相当于就废掉了。那这个过程是非常消耗资源的,对吧?如果你每次创建一个pod需要新建一个证书,那这对集群的压力也太大了。所以给他了一种可以循环认证的这么一个机制,就是我们的sa,也就account,那它解决的就是我们的pod跟我们的IP访问的问题。那当然它也是一组文件,包含了我们的cell,包含了名的命,命名空间等一些重要信息,对吧?好,那底下也说了,我们的secret呢,是sa的关系,与sa的关系,我们之前在讲到secret的时候,是不是见到其中有一种叫做sa,对吧?好,K8S设置一种资源对象叫两类。
14:14
另一种是我们的sa,也就是STEM token,对吧,我们的服务的访问的这么一个token,另一种呢,是我们的保存自定义密码的信息的,对吧?好,Ton呢,Service account呢中包含三个部分token。CT和namepa to是IP,是使用IP签CR签名的GWT用于访问IP端认证,那这底下呢,也给大家说了什么叫GWT。叫Jason web talkn是为了网络应用环境间传递声命而执行的一种基于Jason的开放标准。该token被设计为紧凑且安全的,特别适用于分布式在内的单点登录场景。GWT的视频一般被用于身份提供者和服务提供者之间进行传递被认证的身份信息,以便从资源服务器获取资源,也可以增加一些额外的其他业务逻辑所必须包含的声明。该talkn也可以被直接用于认证,也可以被加密。
15:23
也就意味着对于我们这种服务的访问呢,是有token进行所谓的。嗯。进行我们的所谓的传递我们的私钥信息,密钥信息,并且因为我们的C证书,它是一个C厂上是一个私有的,对吧,是我们整个K8S集群中私有的,所以对于我们的认证方来说,你需要给他提供一个我们的K8S中的CC的CRT更正书,那这样的话,他才能拿这个更正书去认证我们的K8S的IPO发过来的证书,对吧,判断是不是真正的证书。好,Namespace标识我们的作用的域名空间好。
16:06
那我们之前呢,也给大家看到了我们的一个secret,并且我们之前给大家说过一个信息,就是在每一个名称空间中呢,都会有个自己自定义的这么一个。我们可以过来看一下酷个C啊G,感恩个sixteen。好。比如我们进入我们的。Q CTR eec,然后呢,我们的炮的名称杠,It杠杠,没有加名空间对吧,顾个S好杠I杠杠,并加了SH好,进来以后这里也说了对吧,它会在我们的下的secret下的我们的Co IO下,我们过来看一下CAD进来CAD的s account。
17:06
好,RS我们看一下跟的证书namespace对吧,以及token,那cut ton你可以看到一个详细信息对吧?好,那这个呢,是我们的sa,也是我们pod认证到IPSO的这么一个标准,好那。这就是我们的一个所谓的在K8S集群运动这么一个认证关系了,也就意味着其实我们最终总结出来的就是对于我们的整个K8S集群认证来说,它采用的是IPS的这么一种认证方式,并且它是一个双向认证方式,好,那如果是我们的系统的一些组件想去访问我们的K8SIPSO。分两种,一个是我们的本机组件,比如control manage s了,它默认会访问一个非安全加密端口,那如果是其他的一些远程访问的组件,需要进行IPS的双向认证,这是组件和IPO之间的认证关系。
18:07
如果是pod想访问的话,必须要借助到我们的sa,对吧?Sa account,那在这里呢也会有说明,认证方案分两种,Port和K组件,那如果是我们light,通过我们的安全加密对吧?如果是我们的city啊,这种我们需要手动颁发它的证书。好,有证书以后我们可以通过我们的库con去访问至我们的IP。如果是pod的话,需要去通过sa访问到我们的,也就是我们的token,去访问到我们的IPS,对吧,这就是一个认证的完整流程,好。
我来说两句