00:00
好,那接下来呢,我们先开始讲解我们数据安全当中的第一个工作,也就是用户认证啊,那刚才也看到了hioop当中的用户认证呢,我们需要使用什么协议啊,使用这个curvers协议对吧?啊OK,那接下来呢,我们先看一下这个科ver到底是怎么一回事啊,那这儿呢,有一个科S的一个介绍啊,在这儿我们先把这句话读一下。哎,是什么呢?科S是一种计算机网络认证协议啊,用来在非安全的网络当中对个人信息用安全的手段进行身份认证,那重点是不是就是认证,认证是不是就是证明自己的身份呀,对吧?就这个意思啊,那其实说白了就相当于我们之前去访问各种网站的时候,那个登录操作对不对,就是这就在在做认证啊,只不过呢,他们的协议是不一样的,OK啊,那这个科S认证协议啊,是由谁开发的呢?实际上是谁呀?是麻省理工啊,他们去开发的一套这个认证协议啊,也就MIT对吧?啊,OK啊,这个咱们了解一下啊,行,那后边的东西呢,咱们就暂时先不看了,我们接下来呢,哎,去看一看我们这个科S当中的这个几个重要的术语啊来,我们一起来看一下,那科S这个认证协议当中呢,有这样的几个比较重要的呃术语,我们需要先把这几个术语搞清楚,搞清楚之后呢,那下面呢,我们再去看一下这个科布的认证流。
01:22
程啊来咱们一起看一下啊,简这个简单了解一下就行,我们重点呢是需要学会如何使用科S认证协议去进行身份的认证,对吧?那所以这个原理的东西呢,我们大致了解一下就行啊好,我们现在先来看这个术语啊,那术语里边呢,第一个叫做KC啊,这个C的全是什么。啊,这个是什么东西呢?我们来看一下,实际上这个KDC呢,是S服务当中一个非常重要的组件啊,非常重要一个组件啊,我们是它是我们要启动的一个服务啊,那这个服务它负责干什么呢?哎,它叫做密钥分发中心啊,它重点负责什么内容,负责存储用户信息管理,发放票据。
02:08
啊,干什么用的,简单解释一下,先看第一个作用啊,存储用户信息什么意思。大家想想啊,这个科是干什么用的,是不是做认证的,那做认证的话,那我们正常情况下,你要认证是不是得输入一个账户,得输入一个密码,对不对,那这些信息它是不是得有一个地方保存呀,对吧,谁负责存储呢?就是KDC负责存储啊,OK啊,那下边还有一个啥,还有一个发放票据,这个发放票据发放的是什么票据啊,这个呢,我需要给大家解释一下啊,它发放的呢,是我们用户去访问某个服务的票据,那一会儿呢,我们在讲这个呃,科目S认证流程的时候呢,你就能看到啊,当我们的用户啊去访问一个服务的时候,你怎样才能访问呢?你得拿到这个服务的一个票据,也是相当是一个门票,你得拿到他的门票之后,你才能访问,你才能进去啊就这个意思啊,OK,那这个呢,我们一会儿再讲流程的时候啊,你就能明白了啊好,这是KDC先简单了解一下就行,那接着往下走,下边呢,有一个概念叫做real。
03:10
这个real的直译过来是什么意思啊,是域的意思,域啊就是一个范围,那这个域指的是什么域呢?我们来看一下啊,指的是curs所管理的一个领域或者是范围啊,是这样的啊,那这里边儿呢,会包括什么这个领域,其实说白了就是一系列的服务,还有一系列的用户。啊,一系列的服务和一系列的用户啊,是这样的啊,其实刚才我们在嗨度的官网上也看到了啊,就是说我们启用这个安全认证之后呢,是不是海度的所有的service,所有的服务和所有的用户都得认证啊,对不对,也就是我们hidoop这个认证呢,它不只是针对用户的,所有的服务要想正常的启动也得认证才可以啊,那所以说这个所谓的这个real呢,实际上就是科S所管理的一系列的服务,再加一系列的用户啊,这个怎么去理解,你想想啊,科S他刚才咱们说了它,它来自于什么,是不是来自于希腊神话当中那个三头犬啊,对吧?啊,一个三头犬它是不是得有一个自己的领地啊,对吧?啊,这个领地就叫做realm啊,就这个意思啊,其实还是比较形象的,对吧?啊好,我们往下走,下一个呢叫做principle,这个principle直译过来叫什么呢。
04:22
啊,其实直译过来呢,我们可以把它翻译成一个这个主体呀,啊,或者是一个账号啊等等等,你就这么理解就行啊,那一个principle到底是什么呢?我们来看一下,一个呢,指的就是他所管理的一个用户或者是一个服务。啊,是这样的啊,科所管理的一个用户或者一个服务,我们都称之为一个principle啊完了之后呢,我们可以理解为什么我们就可以理解为科S当中保存的一个账号。啊,什么意思啊,你想想啊,我们一个用户要想诶通过这个科S认证,我得有一个什么类型,是不是得有一个账号的一个密码,对不对,那一个服务我要想通过科普S认证,是不是也得有一个账号,也有一个密码啊,对吧?啊是这样的啊这个账号呢,其实指的就是谁,就是这个所谓的PROK啊,那这个账号的格式通常是什么样的呢?通常的格式是这样的,大家来看一下啊,这个账号呢,通常有这样的三部分组成啊,那简单看一下啊,它的第一和第二部分中间用什么分格,是不是用一个斜线分格呀,对吧?那第二和第三部分呢,是不是用一个呃艾特分格呀,对吧?是这样的啊OK,那这三部分分别是什么内容,我简单给大家介绍一下啊,那这个针对不同的这个账号啊,那我的这个格式呢是不一样的。
05:39
啊,那我们刚才说到了啊,这个PR呢,它可能是一个用户,也可能是一个服务,对不对,那假定啊,现在我们针对的是一个用户,如果是一个用户啊,那他的principle,那通常呢,只包含第一部分和这个第三一部分啊,你也通常只有这个primary和这个realm啊,那这个primary通常是什么内容呢?通常情况下就是我们这个用户的系统用户的名称。
06:06
什么意思啊,那比如说我现在是不是有一个艾特硅谷用户啊,对吧,那艾特硅谷用户要想有一个科S当中的这个账号,OK,那他的这个第一部分内容就是啥,他是硅谷啊,就这个意思啊,OK,那这个realm是啥呀?Realm其实是不是就是刚才我们提到的这个域啊,对吧,能理解吧,那相当于呃,这里边就是啥,我是不是就能够表明诶这个账号是这个领域当中的一个人呀,啊就这个意思啊,就这个意思啊,那这个real通常它的内容是什么呢?通常就是我们公司的这个网站的或者是网址的域名啊,比如说以咱们以F硅谷为例啊,那我们那个公司的网站是不是3w.F硅谷点com嘛,对吧,那我们这个real的名称就是啥呀。啊,就是呃,At特硅谷点com就可以,那也就是说应该是啥呀,是不是应该是at硅谷,然后来一个圈at后边再来一个啥at特硅谷点com就这个意思啊,OK啊,那这个呢,是我们用务的账号的格式啊,那如果说我们现在不是用户,是一个服务啊,那如果是一个服务的话,那我的这个账号格式通常是什么样的呢?来给大家简单说一下啊,如果是一个服务,那我们的账号呢,通翅包含这样的三个部分。
07:18
通常会包含这样的三个部分啊,那它的第一部分内容通常是啥呢?就是这个服务的服务名,比如说举个例子啊,Data not进程,进程是不是HDFS当中一个服务啊,对吧?OK,那你这个第一部分内容可以是啥呢?啊,就是data notde啊,或者说你这个其实不是固定的,你可以随便起,我可以叫data note,我也可以叫啥呀,我也可以写简写,比如说我写一个DN啊,这是不是也可以表示是data note呀,对吧,通常就是一个服务名啊OK,那第二一部分内容通常是啥呢。通常是这个服务所在的主机名啊,为什么是主机名,你想一想啊,你比如说就以data note为例,我们是不是每台节点都有一个data note,对不对,那你每台节点的data note服务是不是得区分开呀,对吧?那所以说第二部分内容,我们通常诶给它写一个啥呀,写一个主机名,比如说海度款102上面的data note进程,那就是啥啊,比如就是data note,然后斜线还都和102啊,就这意思啊,OK,那再继续往下走,后边是不是还有一个按上,那这个real也是啥呀,通常情况下也是我们这个公司的这个,呃,这个网站的一个域名啊,这块呢,大家理解一下就行了啊OK啊啊,那这个呢,就是咱们这个所谓的principle,其实就是curs当中的账号啊,那现在呢,我们就把它的格式给他讲完了啊,那刚才提到了,我们说用户通常情况下,它是不是只需要第一部分和第三部分就够了呀?啊,但是不是说我第二部分不能有,第二部分能不能有呢。
08:40
也能有啊,其实也能有啊,只不过通常情况下呢,我们不写啊,那也就是说我们这这样的一个这个principle呢,实际上是什么样的,第一部分和第三部分是必须得有的,对不对,那第二部分呢。相当于是可选的是可选的啊,这个其实就是一个账户的名称啊,OK,这些东西呢,大家也不用刻意的去记,等我们后续呢,呃,会去给每个用户以及每个服务去创建对应的CS主体,当时创建的时候大家就能感受出来了啊好,那接着往下走,下一个呢,还有一个非常重要的概念叫做k tab。
09:15
K,实际上说白了是一个什么东西,它就是一个文件,什么文件呢?叫做密钥文件啊,密钥文件里面存储的是啥呢?啊,你可以理解为就是加密之后的密码啊,就是这么个东西。啊,OK,那它是干什么用的呢?啊,就是用来做认证的,大家想一想啊,我们假如说在科S当中啊,有了一个自己的账户,有了自己的一个密码之后啊,那你是不是需要去进行所谓的登录操作呀,对吧?那登录的时候是不是得输用户名,得输密码是这个道理吧?啊那我们在客当中去进行这个认证或者登录操作的时候呢,我们有两种方式,一种方式是通过输入密码啊进行认证,也就是正常的输用户名,输密码,这个是不是可以证明自己的身份呀,对吧?那还有另外一种方式,另外一种方式干什么呢?
10:01
哎,就是哎,输入用户名,再给他指明一个密钥文件的路径,哎也是能够登录的,大家能理解吧?啊,那这个k tab呢,指的就是谁?指的就是我们用来认证的那个k type文件,就是那个密钥文件啊是这样的OK啊那什么什么情况下我们需要使用密码去认证,那什么情况下我们是需要去使用这个k tab文件去认证呢?这个其实大家可以思考一下。什么时候用密码,什么时候用K。比如举个例子啊,比如说以我们普通的用户为例,那你说我们普通的用户,那我去进行认证的时候,我是不是用密码是比较方便的呀,为啥?那我输入用户名,那他是不是会让我交互的去输入一个啊这个密码啊,对吧?啥意思?就是我输入用户名之后,他是不是会给我提呃,弹出来一个输入框对吧,让我去输入密码,OK,那对于我们用户来说,是不是密码认证是比较方便的,对吧?但是呢,对于我们某些服务来说,刚才提到了服务是不是也得认证,比如说我举个例子,Hi doop当中的data note进程,他启动的时候是不是也得进行认证,对不对?那你说他认证的时候,他给他弹一个这个交互式的输入密码的这个窗口,他能输吗?
11:09
它是输不进去啊,对吧?啊,那所以这个时候就得怎么办,诶是不是就可以使用这个钥文件啊,对吧?比如说我们在HDFS的配置文件当中,指明它的账号,指明他的密钥文件所在的路径,那他启动的时候是不是就自动完成的这个认证操作了呀,就是这个意思啊,那这就是用用密码认证和用k type密钥文件认证的一个区别啊好了啊,那科S当中的这几个术语我们就讲完了啊好,那术语讲完了之后,那我们就具备了一定的理论基础了啊,那接下来我们再去看一下这个科S的认证原理。啊,那我们现在把这个打开一起看一下啊。哎,这个PPT有点慢啊,咱们稍微等一下。来咱们看一下这个,呃,简单的认证原理,诶,这个有点慢啊,我开一个PPT吧啊。
12:02
好,已经打开了啊好,那现在大家看一下啊呃,我现在以什么为例啊,我现在呢,以我们的客户端去访问HDFS这个服务为例,去讲解一下科波S认证原理啊,那现在看到两部分内容,下面这个指的是啥?是不是就是我们high当中的HDFS啊,对吧?那上面这个小电脑指的是啥呀?啊,就是我们的客户端啊,就是客户端,那正常情况下我们要想访问hfs文件系统,你需要怎么做呀,是不是需要输入一个什么hi豆FS-S反一个斜线,那这样一来是不是就能看这个文件的这个内容了呀,对吧?啊是这样的啊,那如果说我们现在没有启用啊这个cors安全认证,那现在我是不是直接就能得到结果是这个道理吧,但是当我们启用这个科普的安全认证之后,那你说你这个操作还能够执行成功吗?就不能了啊,他就会告诉你,你没有进行认证,你无权访问啊,是这样的啊OK,那接下来呢,我要想访问我就得怎么办,要想访问是不是得先经过认证才能访问对不对,那到底它是怎么样的一个认证流程呢?我们接下来一起看一下啊,首先我们先看这儿啊,这个东西就是啥,就是我们刚才提到那个所谓的KDC,这个KDC呢,实际上就是我们科当中当中的一个非常非常重要的一个服务,哎,我们的认证呢,都是通过谁来做的?
13:17
是不是通过它来做的呀,对吧?OK啊,那接下来呢,我们简单看一下这个KDC它的呃结构是什么样的啊,这个KDC里边呢,分呃包含这样的三个重要的组件,三个重要组件我们逐个看一下啊先看第一个as as是什么呀?全称是authentication server啊,它叫做什么呢?叫做认证服务器。啊,那就是说我们用户要想证明自己的身份,你找的就是谁,找的就是KDC当中的as啊,就这个东西啊,那接下来再往下看,下边是不是还有一个database database是不是叫做数据库啊,对吧?数据库里边存储的是什么?存储的就是各用户以及各服务的principle,那前面咱们提到了,我们用户要想经过科认证,你必须得有一个科S当中的账号才行,对吧?这个账号就是啥?是不是就是这个没错吧?啊,那这个principle信息存哪了?就存在它这个数据库当中。
14:11
啊,是这样的啊好,那接下来我们继续往下走,下面还有一个TGS。TES,它的传承是什么呢?是t grant server t grant server叫什么意思?他直译过来是不是叫做票证授权服务器啊,是这个道理吧,诶也就是他是干什么用的,其实他是干啥的。是不是发票的,是不是给某个用户或给某个东西去,呃,开一个票据啊,对吧?啊,那他发的这个票或他授予的这个票据是干什么用的呢?啊,授予的是什么票据呢。哎,其实它授予的呢,是某个服务的票据,刚才我们就提到了,我们说在认证之后啊,开启认证之后啊,那我们的用户要想访问一个服务,他是不能直接访问的,对吧,他得先干啥呢?先经过认证,认证完之后,他得拿到这个服务的票据之后,是不是才能去访问它是这个道理吧,就相当于啥是不是这个服务的一个门票啊,对吧,这个门票是谁发的。
15:10
就是这个TS法的啊,他就干这个事儿了,就是发票的啊,这个咱们理解一下啊啊,那现在这几个组件我们大致呢,就呃熟悉了,那熟悉完之后呢,我们看一下它到底是如何工作的啊啊首先我们先看第一步,第一步的时候我们需要先干啥,客户端需要先干啥呀,是不是需要先进行认证,得先进门证明自己的身份,对吧?那一般情况怎么认证呢?很简单,那首先我们需要呢,在我们的客户端诶,输入一个命令,比如说就在我们的海102这个叉叉的窗口当中输入一个K以ne命令,这个K的命令呢,就相当于是我们一个登录们一一个登录命令啊,你就可以这样去理解,那你输入K以ne之后呢,哎,它会提示我们,让我们去输入啥呢?输入你的哎用户名,输入你的密码,大家说这个用户名指的就是啥。主力就啥是我们这个系统的用户名吗。
16:01
不是,是谁是科当中这个账号对不对,那也是谁就这个principle能理解吧?啊,那每个人是不是都得有一个自己的principle啊,对吧?啊,其实你输入的就是principle,那输入完PP之后,他让你输入啥密码呗,对吧,用户名密码是不是就能完成认证啊对吧?OK,那把这个信息给他之后啊,那我这个as是不是负责认证的啊,那你请求的是不是肯定是他呀,对吧?啊好,那请这个请求发送到as之后,他会干什么事呢?他是不是得去判断一下你这个用户是不是OK的对不对,那怎么去判断呀?他是不是得访问一下database,看一看你这个用户是不是合法的,对不对,如果这个认证通过,诶,那我就让你继续访问,如果认证不通过,我是不是直接给你拒绝呀,对吧,就这个意思啊,OK,那假如说现在我们认证的这个用户呢,是合法的,假如说是合法的啊,OK,那这时候呢,A as,也就这个authentication serve,它会给我们的客户端返回一个TT。啊,这个TT是什么东西?你看我画的那个形状像一个啥呀?
17:01
这是不是就是一个票,对不对,它也是一个票据,也是一个TK,只不过这个T叫什么呢?它叫做TK grant TK。Ticket ticket什么叫做ticket grand ticket啊?其实就是申请票据的票据。什么叫申请票据的票据呢?就是用来申请票据的一个票据啊,有点绕对吧?哎,那他申请的票据应该是什么票据,你要想我最终要干啥,我最终是不是要访问这个服务,对吧?他其实申请票据的票据,他要申请的票据是谁?就是这个服务的票据。能理解吧,但是我这个服务的票据,票据不能随便申请,你怎样才能申请,你得有我这个TT我才能给他,能理解吧,这就是所谓的TT,也就什么呀,也就是申请票据的票据啊,就有点绕啊,咱们理解一下啊,OK,好,那现在我假如说已经认证通过了,那这个as是会给他返回一个这样的TGT啊,对吧?OK,那客户端拿到TGT之后呢,哎,他会在他自己的这个本地缓存起来啊,会缓存起来啊,缓存起来之后,接下来是干啥呢?哎,他就会拿着这个TGT去干啥。
18:11
诶去诶访问谁去访问这个TGS,诶去访问TGSOK啊,那TGS,诶他拿到这个客户端发回来的TGT之后,他能够干什么呀?是不是能够根据这个去证明我这个请求是否合法的,对吧?如果TGT是OK的,那那就说明啥,说明这个用户他是OK的对吧?已经经过了我这个as的认证了,对不对,经过认证了之后我就得干啥,我是不是就得给他发一个票,相当于放行啊,对吧?啊是这样的,如果不安全,如果你这个T不对,那我干啥直接拒绝啊,就这个意思,OK啊好,那假定说现在我们TES已经拿到了一个合法的TGT,那答到他之后,你说接下来他要干啥?他会直接返回一个票据吗?不会的,他也会去干啥呀,也会去数据库里边查一下什么东西,查一下这个服务的这个相关信息,因为在我们的科目当中,不光用户需要认证服务,是不是也得认证,对不对,他也会去查一下服务的相关信息啊,如果这个服务也是OK的话,没有问题,那这时候他会怎么做呀,他才会给我们的客户端去发送这个所谓的server TK,这其实就是我们那个用户最终期望得到的啥呀,那个所谓的门票对吧?OK啊,那假定现在我们客户端已经拿到这个门票了,他拿到门票之后就可以干啥了。
19:29
是不是就可以去访问HTFS呢,对吧,你注意我这儿是不是已经通了呀,对吧?啊,那之后呢,这个HTFS诶跟我们的客户端就能够进行这个交互了,OK啊,那这个呢,就是科S认证的一个基本原理啊,是这样的啊啊那这块咱们把视频停一下。
我来说两句