Hadoop Kerberos安全机制介绍(转载,笔记).md

[toc]

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 用户到服务器的认证问题

  • NameNoder上没有用户认证:用户可以伪装成其他用户入侵到一个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上获得与目标节点通信的密钥,进而被目标节点所认证,提供相应的服务,防止了被冒充的可能性。

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

由于kerberos对集群里的所有机器都分发了keytab,相互之间使用密钥进行通信,确保不会冒充服务器的情况。集群中的机器就是它们所宣称的,是可靠的。防止了用户伪装成Datanode,Tasktracker,去接受JobTracker,Namenode的任务指派。

3.2 解决client到服务器的认证

Kerberos对可信任的客户端提供认证,确保他们可以执行作业的相关操作。防止用户恶意冒充client提交作业的情况。用户无法伪装成其他用户入侵到一个HDFS 或者MapReduce集群上。用户即使知道datanode的相关信息,也无法读取HDFS上的数据,用户无法发送对于作业的操作到JobTracker上

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

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

4 Kerberos工作原理介绍

4.1 基本概念

  • Princal(安全个体):被认证的个体,有一个名字和口令
  • KDC(key distribution center ) : 是一个网络服务,提供ticket 和临时会话密钥
  • Ticket:一个记录,客户用它来向服务器证明自己的身份,包括客户标识、会话密钥、时间戳。
  • AS (Authentication Server): 认证服务器
  • TGS(Ticket Granting Server): 许可证服务器

4.2 kerberos工作原理

Kerberos可以分为两个部分:

  1. Client向KDC发起请求获得TGT:Client向KDC发送自己的身份信息,KDC从Ticket Granting Service得到TGT(ticket-granting ticket), 并用协议开始前Client与KDC之间的密钥将TGT加密回复给Client。
  2. Client利用之前获得的TGT向KDC请求其他Service的Ticket,如下图所示:


5 kerberos在Hadoop上的应用

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

6 参考资料

kerberos原理
什么是kerberos
“Hadoop Security Design” Owen O’Malley, Kan Zhang, Sanjay Radia, Ram Marti, and Christopher Harrell

你可能感兴趣的:(Hadoop Kerberos安全机制介绍(转载,笔记).md)