Hadoop Kerberos安全机制

2023-11-02

Hadoop Kerberos安全机制

1. 背景

在Hadoop1.0.0或者CDH3 版本之前, hadoop并不存在安全认证一说。默认集群内所有的节点都是可靠的,值得信赖的。用户与HDFS或者M/R进行交互时并不需要进行验证。导致存在恶意用户伪装成真正的用户或者服务器入侵到hadoop集群上,恶意的提交作业,修改JobTracker状态,篡改HDFS上的数据,伪装成NameNode 或者TaskTracker接受任务等。 尽管在版本0.16以后, HDFS增加了文件和目录的权限,但是并没有强认证的保障,这些权限只能对偶然的数据丢失起保护作用。恶意的用户可以轻易的伪装成其他用户来篡改权限,致使权限设置形同虚设。不能够对Hadoop集群起到安全保障。

在Hadoop1.0.0或者CDH3版本后,加入了Kerberos认证机制。使得集群中的节点就是它们所宣称的,是信赖的。Kerberos可以将认证的密钥在集群部署时事先放到可靠的节点上。集群运行时,集群内的节点使用密钥得到认证。只有被认证过节点才能正常使用。企图冒充的节点由于没有事先得到的密钥信息,无法与集群内部的节点通信。防止了恶意的使用或篡改Hadoop集群的问题,确保了Hadoop集群的可靠安全。

2. Hadoop 安全问题

2.1  用户到服务器的认证问题

  • NameNode,,JobTracker上没有用户认证

用户可以伪装成其他用户入侵到一个HDFS 或者MapReduce集群上。

  • DataNode上没有认证

Datanode对读入输出并没有认证。导致如果一些客户端如果知道block的ID,就可以任意的访问DataNode上block的数据

  • JobTracker上没有认证

可以任意的杀死或更改用户的jobs,可以更改JobTracker的工作状态

2.2  服务器到服务器的认证问题

  • 没有DataNode, TaskTracker的认证

用户可以伪装成datanode ,tasktracker,去接受JobTracker, Namenode的任务指派。

3. Kerberos能解决的Hadoop安全认证问题

kerberos实现的是机器级别的安全认证,也就是前面提到的服务到服务的认证问题。事先对集群中确定的机器由管理员手动添加到kerberos数据库中,在KDC上分别产生主机与各个节点的keytab(包含了host和对应节点的名字,还有他们之间的密钥),并将这些keytab分发到对应的节点上。通过这些keytab文件,节点可以从KDC上获得与目标节点通信的密钥,进而被目标节点所认证,提供相应的服务,防止了被冒充的可能性。

  • 解决服务器到服务器的认证

由于kerberos对集群里的所有机器都分发了keytab,相互之间使用密钥进行通信,确保不会冒充服务器的情况。集群中的机器就是它们所宣称的,是可靠的。

防止了用户伪装成Datanode,Tasktracker,去接受JobTracker,Namenode的任务指派。

  • 解决client到服务器的认证

Kerberos对可信任的客户端提供认证,确保他们可以执行作业的相关操作。防止用户恶意冒充client提交作业的情况。

用户无法伪装成其他用户入侵到一个HDFS 或者MapReduce集群上

用户即使知道datanode的相关信息,也无法读取HDFS上的数据

用户无法发送对于作业的操作到JobTracker上

  • 对用户级别上的认证并没有实现

无法控制用户提交作业的操作。不能够实现限制用户提交作业的权限。不能控制哪些用户可以提交该类型的作业,哪些用户不能提交该类型的作业。这些由ACL模块控制(参考)

4. Kerberos工作原理介绍

4.1  基本概念

Princal(安全个体):被认证的个体,有一个名字和口令

KDC(key distribution center ) : 是一个网络服务,提供ticket 和临时会话密钥

Ticket:一个记录,客户用它来向服务器证明自己的身份,包括客户标识、会话密钥、时间戳。

AS (Authentication Server): 认证服务器

TSG(Ticket Granting Server): 许可证服务器

4.2  kerberos 工作原理

4.2.1  Kerberos协议

Kerberos可以分为两个部分:

  • Client向KDC发送自己的身份信息,KDC从Ticket Granting Service得到TGT(ticket-granting ticket), 并用协议开始前Client与KDC之间的密钥将TGT加密回复给Client。此时只有真正的Client才能利用它与KDC之间的密钥将加密后的TGT解密,从而获得TGT。(此过程避免了Client直接向KDC发送密码,以求通过验证的不安全方式)
  • Client利用之前获得的TGT向KDC请求其他Service的Ticket,从而通过其他Service的身份鉴别

4.3 Kerberos认证过程

Kerberos协议的重点在于第二部分(即认证过程):

(1)Client将之前获得TGT和要请求的服务信息(服务名等)发送给KDC,KDC中的Ticket Granting Service将为Client和Service之间生成一个Session Key用于Service对Client的身份鉴别。然后KDC将这个Session Key和用户名,用户地址(IP),服务名,有效期, 时间戳一起包装成一个Ticket(这些信息最终用于Service对Client的身份鉴别)发送给Service, 不过Kerberos协议并没有直接将Ticket发送给Service,而是通过Client转发给Service,所以有了第二步。

(2)此时KDC将刚才的Ticket转发给Client。由于这个Ticket是要给Service的,不能让Client看到,所以KDC用协议开始前KDC与Service之间的密钥将Ticket加密后再发送给Client。同时为了让Client和Service之间共享那个密钥(KDC在第一步为它们创建的Session Key),KDC用Client与它之间的密钥将Session Key加密随加密的Ticket一起返回给Client。

(3)为了完成Ticket的传递,Client将刚才收到的Ticket转发到Service. 由于Client不知道KDC与Service之间的密钥,所以它无法算改Ticket中的信息。同时Client将收到的Session Key解密出来,然后将自己的用户名,用户地址(IP)打包成Authenticator用Session Key加密也发送给Service。

(4)Service 收到Ticket后利用它与KDC之间的密钥将Ticket中的信息解密出来,从而获得Session Key和用户名,用户地址(IP),服务名,有效期。然后再用Session Key将Authenticator解密从而获得用户名,用户地址(IP)将其与之前Ticket中解密出来的用户名,用户地址(IP)做比较从而验证Client的身份。

(5)如果Service有返回结果,将其返回给Client。

4.4  kerberos在Hadoop上的应用

Hadoop集群内部使用Kerberos进行认证

具体的执行过程可以举例如下:

4.5  使用kerberos进行验证的原因

  • 可靠 Hadoop 本身并没有认证功能和创建用户组功能,使用依靠外围的认证系统
  • 高效 Kerberos使用对称钥匙操作,比SSL的公共密钥快
  • 操作简单 用户可以方便进行操作,不需要很复杂的指令。比如废除一个用户只需要从Kerbores的KDC数据库中删除即可。

5.  参考资料

(1) kerberos原理:http://idior.cnblogs.com/archive/2006/03/20/354027.html

(2) 什么是kerberos:http://www.logicprobe.org/~octo/pres/pres_kerberos.pdf

(3) "Hadoop Security Design"  Owen O’Malley, Kan Zhang, Sanjay Radia,  Ram Marti, and Christopher Harrell


转载来源: http://dongxicheng.org/mapreduce/hadoop-kerberos-introduction/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop Kerberos安全机制 的相关文章

  • 阿里云服务器使用过程小记

    实验室服务器升级 之前一直免费托管在学校实验室 最近开始往阿里云上面迁移 先从阿里云服务器ECS入手 以下是在实验过程中的一些记录 记录下来便于后期管理 一 前端设备数据接入 一 最普遍的使用是采用DTU透传 DTU配置的目标IP即为ECS
  • appium从安装到运行,控制真机+模拟器,安卓自动化

    1 jdk 8u152 windows x64 exe 下载地址 JAVA环境变量 https www oracle com cn java technologies oracle java archive downloads html 系
  • pnpm install报错

    原因是npm版本过高 降低版本可成功install 以下是nvm管理node版本常用的一些命令 方便多个项目切换node版本
  • 对英文字母和数字的组合分别排序,并计算相同字母后的数字和

    import java io BufferedReader import java io FileReader import java util Map import java util TreeMap public class PaiXv
  • Struts2 框架验证

    一 对于输入校验struts2提供了两种实现方法 1 采用手工编写代码实现 2 基于XML配置方式实现 注意 配置验证文件ActionName alias validation xml 常用 使用基于XML配置方式实现输入校验时 Actio
  • 第三方(网页/小程序)唤醒微信app小结

    第三方 网页 小程序 唤醒微信app小结 在实际业务中 要在第三方网页或者小程序实现唤醒微信app 其实很简单 贴代码 a href a 或者 window location href weixin 或者 window location r
  • python execjs库_python3调用js的库之execjs

    执行JS的类库 execjs PyV8 selenium node 这里主要讲一下execjs 一个比较好用且容易上手的类库 支持py2 与py3 支持 JS runtime url https pypi org project PyExe
  • 如何设置管道为非阻塞

    LINUX中 管道的读写两端是阻塞的 例如读端会一直阻塞直到写端写入内容 才会立即返回 其实也可以将管道中的读或写端设置为非阻塞状态 如果要设置读端或者写端为非阻塞 参考以下三个步骤 int flags fcntl fd 0 F GETFL
  • 盒子模型(详)

    定义 每一个标签都是一个矩形 像一个盒子 所以HTML页面的布局可以理解为多个盒子组合嵌套排列而成 盒模型由里到外包括四个部分 内容部分 padding 内边距 border 边框 margin 外边距 内容部分一般用来显示图像或文字 在标
  • SpringCloud - Spring Cloud Netflix 之 Hystrix熔断器(七)

    阅读本文前可先参考 SpringCloud Spring Cloud根 父项目 开发准备 二 MinggeQingchun的博客 CSDN博客 在微服务架构中 一个应用往往由多个服务组成 这些服务之间相互依赖 依赖关系错综复杂 通常情况下
  • Python注册器register初使用

    创建三个文件 register py import importlib import logging MODEL MODULES models ALL MODULES model MODEL MODULES def import all m
  • beef-xss

    下载使用 apt get install beef xss apt get update beef xss 使用beef xss命令打开后 默认打开一个浏览器登录页面 初次使用需要修改密码 example处修改为本机IP 在DVWA进行测试

随机推荐

  • 基于Java+SSM项目的计算机毕业设计-电器网上订购系统项目实战(附论文+源码)

    大家好 我是职场程序猿 感谢您阅读本文 欢迎一键三连哦 当前专栏 Java毕业设计 精彩专栏推荐 安卓app毕业设计 微信小程序毕业设计 演示视频 ssm003电器网上订购系统演示 转 标准 源码下载地址 https download cs
  • 利用过滤器实现 论坛或留言板 上内容转义

    注意此方法只能解决getParameter 方法取得参数转义 若要彻底解决getParameterMap 和getParameterValues 方法取得参数的转义 则需要使用 关于Filter 覆盖getParameterMap 来实现功
  • react hooks中为useState添加回调函数(自定义hooks)

    react hooks默认是不支持useState的回调的 但有时候因为异步问题 不能及时获取到修改后的值 所以我们可以自定义回调函数 1 先自定义函数 function useCallbackState od const cbRef us
  • Xilinx FPGA BRAM IP核:实现高效内存管理

    Xilinx FPGA BRAM IP核 实现高效内存管理 在FPGA项目中 内存资源是非常有限的 而BRAM Block RAM 是其中一种高速内存解决方案 Xilinx FPGA提供了BRAM IP核 用于实现高效的内存管理 本文将介绍
  • 【图像处理】彩色直方图均衡

    sourcePic imread D Images pic loc 1870358810205041517 jpg m n o size sourcePic grayPic rgb2gray sourcePic figure imshow
  • 【华为OD机试】高效的任务规划【2023 B卷

    题目描述 你有 n 台机器编号为 1 n 每台都需要完成完成一项工作 机器经过配置后都能完成独立完成一项工作 假设第 i 台机器你需要花 B 分钟进行设置 然后开始运行 J 分钟后完成任务 现在 你需要选择布置工作的顺序 使得用最短的时间完
  • 关键路径-STL版

    题目描述 给定有向图无环的边信息 求每个顶点的最早开始时间 最迟开始时间 参考代码 include
  • 微信小程序云开发将数据库数据生成word文件

    演示如何通过云函数把数据存入word模板中 源代码见cloudfunctions genarateDocument index js 整个过程分为以下几个过程 1 创建云函数 并安装doctemplater pizzip 2 读取数据库集合
  • streamstring

    这是从http www cnblogs com yaozhongxiao archive 2009 05 23 1487903 html拿来的 希望作者不要介意 1 sstream 在C 有两种字符串流 一种在sstream中定义 另一种在
  • FPN详解

    论文题目 Feature Pyramid Networks for Object Detection 论文链接 论文链接 论文代码 Caffe版本代码链接 一 FPN初探 1 图像金字塔 图1 图像金字塔 图2 高斯金字塔效果 如上图所示
  • 【恒指早盘分析】9.18恒指今日复盘及后市思路

    9月18日消息 美股周二小幅收高 市场正在等待美联储货币政策会议结果 沙特称原油生产设施遭袭造成的产能损失已恢复50 预计月底将完全恢复 今日开盘 港股恒指高开0 18 午后转跌 截至收盘 恒生指数 26754 12 36 12 0 13
  • 服务器巡检都做什么工作,巡检的手段是什么?

    服务器巡检都做什么工作 服务器巡检主要分为 1 对于基础资源的巡检 比如说磁盘 cpu 内存的利用率有没有达到公司设定的阈值范围之上 如果达到了就需要及时扩容或者杀进程 2 核心业务的巡检 跟钱打交道的程序 对核心业务的相关指标监控的图形
  • 解决root@localhost's password:localhost:permission denied,please try again

    背景 在装完hadoop及jdk之后 在执行start all sh的时候出现 root localhost s password localhost permission denied please try again 可是 我记得当时设
  • 计算机视觉与深度学习-经典网络解析-ZFNet-[北邮鲁鹏]

    这里写目录标题 ZFNet 主要改进 减小第一层卷积核 将第二 第三个卷积层的卷积步长都设置为2 增加了第三 第四个卷积层的卷积核个数 ZFNet ZFNet是一种基于AlexNet的模型 由Matthew D Zeiler和Rob Fer
  • smplayer中使用srt字幕乱码问题

    选择菜单 选项 gt 首选项 gt 字幕 选择默认字幕编码cp936 简体中文 和正确的中文字体 本文转自JustRun博客园博客 原文链接 http www cnblogs com JustRun1983 archive 2012 10
  • 用户画像技术干货

    1 用户画像是什么 在互联网步入大数据时代后 用户行为给企业的产品和服务带来了一系列的改变和重塑 其中最大的变化在于 用户的一切行为在企业面前是可 追溯 分析 的 企业内保存了大量的原始数据和各种业务数据 这是企业经营活动的真实记录 如何更
  • 在传统公司干IT是一种什么体验(五)

    与不懂技术的人交流 最痛苦的不是你说的她听不懂 而是她自以为懂帝 强行把概念降低到她能所理解的层面 然后丰富的经验来指导你 表哥语录 表哥以前最喜欢当老师 例尤其是公司新来的同事 都愿意找表哥请教技术问题 自动去了新公司之后 表哥天天面对不
  • 内网穿透神器-frp的概念,搭建和使用,方便访问内网服务

    FRP概念 FRP是什么 借助官网的描述 frp 是一个专注于内网穿透的高性能的反向代理应用 支持 TCP UDP HTTP HTTPS 等多种协议 且支持 P2P 通信 可以将内网服务以安全 便捷的方式通过具有公网 IP 节点的中转暴露到
  • sql注入;基于时间盲注;sqli-labs/less-9;

    1 搭建好环境 连好数据库 这里看我这篇文章 可以找到网盘文件 sql注入之报错注入 这里用到的是sqli labs Less 1 也就是第一关 利用报错信息注入 小乘杭的博客 CSDN博客 2 无真假 报错回显 通过时间延迟判断 3 通过
  • Hadoop Kerberos安全机制

    Hadoop Kerberos安全机制 1 背景 在Hadoop1 0 0或者CDH3 版本之前 hadoop并不存在安全认证一说 默认集群内所有的节点都是可靠的 值得信赖的 用户与HDFS或者M R进行交互时并不需要进行验证 导致存在恶意