• Python大数据教程:Kerberos是如何做身份认证的?


    在大数据领域,安全永远是一个绕不开的话题。

    对于一个简单安装上线的 hadoop 集群,我们可以认为有如下安全隐患:

    如,可以人为的添加一个客户端节点,并以此假冒的客户端来获取集群数据。对于一个假冒的客户端节点,成功加入集群就能够伪装 datanode 让得到 namenode 指派的任务和数据。创建一个HDFS账户,就可以得到 hadoop 文件系统的最高权限。Kerberos 主要用来做网络通讯中的身份认证,帮助我们高效、安全的识别访问者。那么 Kerberos 是如何做身份认证的呢?

    我们来看一个现实中的例子:

    小明要去电影院观看一场电影

    那么对于这样一个流程来说就有:

    1. 前期需求,确定了自己想要看什么电影,位于哪个影院,什么时间后使用自己的账户密码登录票务中心。

    2. 购票机制,通过付费(发送请求)来让小明从未授权的影院访问者变成被授权访问的状态。

    3. 验票机制,验证票据持有者的身份,和票务中心核对验证票据的合法性、时间、以及访问的位置。

    4. 观看电影,一切验证通过后得到想要的内容。

    5. 再次观看,需要重新购票走流程。

    那么对于这样一个例子,相信大家应该都很好理解。 Kerberos的认证流程基本上和上述的例子差不多,我们来对上述例子进行一个转换一一对应:

     发送请求,表明要访问什么服务,使用自己的密码来对请求进行加密
     验证身份后,得到一个ticket(票据)
     服务提供者和Kerberos进行通讯验证ticket的合法性、有效期
     验证通过提供服务
     超出ticket的有效期后再次访问需要重新申请
    
    • 1
    • 2
    • 3
    • 4
    • 5

    基于这样一个转换,我们可以得到一个关键信息: Kerberos 的身份认证其实是基于 ticket 来完成 的,就像看电影是基于电影票来进行验证的一样。 那么我们客户端,想要访问某些服务,最主要的是得到一张 ticket.

    理解了上述的概念之后,来看一下具体的 Kerberos 的执行流程:

    Kerberos 的执行流程在这里插入图片描述

    在如上的流程里有如下关键字:

    1. KDC (秘钥分发中心), KDC (也就是 Kerberos Server )提供提供 AS 和 TGS 两个服务

    ① AS: authorization server , 授权服务,对于上面流程1,提供初始授权认证,用户表明需求并使用密码对请求进行加密,AS用提供的密码对请求进行解密后得到请求内容,返回给用户一个TGT(ticket granting tickets)(用一个秘钥加密)

    ② 用户得到TGT后使用TGT去访问TGS( Ticket Granting Server ),TGS验证TGT后(使用秘钥解密)返回一个Ticket给用户

    1. 用户(图中John),得到ticket后去访问server,server收到ticket和KDC进行验证,通过后提供服务

    如上是一个典型的Kerberos运行流程,对于 hadoop 的授权认证来说,就是把server换为具体的服务,如 namenode resourcemanager 等想要访问 namenode (也就是 hdfs )需要拿到对应 hdfs 的 ticket 才可以访问

  • 相关阅读:
    模型压缩与量化
    Leetcode—5.最长回文子串【中等】
    【Spring框架】爆gan两万六千字,助你通关IoC和DI
    KdMapper扩展实现之REALiX(hwinfo64a.sys)
    [论文阅读]MVF——基于 LiDAR 点云的 3D 目标检测的端到端多视图融合
    Elixir-Basic types 之 Binaries、strings、charlist
    老板:公司系统太多,能不能实现账号互通?
    安装angular脚手架
    左右手切换工具xmouse v1.2版本发布
    230. 二叉搜索树中第K小的元素
  • 原文地址:https://blog.csdn.net/cz_00001/article/details/126370196