10.4 hadoop安全性kerberos安全验证和委托令牌

1.1  安全性

HDFS的文件许可模块可以组织程序漏洞而毁坏文件系统,也能阻止运行hadoop fs –rmr删除文件指令,但是无法组织恶意的用户假冒root身份来访问或者删除数据。需要使用Kerberos实现用户认证。

1.1.1         Kerberos和Hadoop

(1)客户端请求认证的步骤

 

 

1) 认证。客户端向认证服务器获取含时间票据授权票据(Ticket-Granting Ticket,TGT)。

2) 授权。客户使用TGT向票据授权服务器请求服务器票据。

3) 服务请求。客户端使用服务器票据向服务器发送请求。

(2)hadoop配置使用Kerberos

1)hadoop配置文件如何配置

core-site.xml文件中属性hadoop.security.authentication设置为kerberos启动kerberos认证。同时要将hadoop.security.authorization属性设置为true。用户调用kinit命令来执行认证,这个过程需要输入密码,用户申请到的TGT具有时效性,默认10小时,可以是一周。采用单次登陆(single sign-on)到hadoop。如果不希望输入密码,可以用ktutil命令创建一个Kerberos的keytab文件,保存密码使用命令kinit –t keytab执行认证。hadoop-policy.xml文件中访问控制列表ACL(access control list)配置哪些用户对哪些hadoop服务具有访问权限。

2)启动一个KDC(key distribution center)验证授权服务器

3)执行初始化验证任务kinit

可以输入kinit命令,会提示输入密码。或者kinit –t keytab指定密码文件。验证之后就可以hadoop fs –put qu.txt上传文件。

4)klist命令查看票据的过期时间,kdestory指令可销毁票据。

1.1.2         委托令牌

(1)委托令牌创建

一个HDFS读操作会与namenode和datanode多次交互,如果每次交互都要认证,则KDC压力会很大,所以使用委托令牌来支持后续认证。委托令牌由hadoop服务器创建。客户端首次登陆之后,从namenode服务器取得委托令牌,用令牌作为后续验证。

(2)块访问令牌

客户端执行HDFS块操作的委托令牌,客户端向namenode获取的委托令牌可以去datanode验证以获取数据,因为namenode会通过心跳将令牌传给datanode。通过设置属性dfs.block.access.token.enable属性为true来开启块访问令牌。

(3)HDFS之间共享令牌

将属性mapreduce.job.hdfs-servers设置为逗号隔开的HDFS URI列表,才能在其他HDFS共享令牌。

1.1.3         采用认证后安全性提高

(1)   分布式缓存分共享缓存和私有缓存。

(2)   用户只能操作自己的作业,需要将mapreduce.cluster.acls.enabled属性设置为true,mapreduce.job.acl-view-job和mapreduce.job.acl.modify-job属性设置可以查看和修改的的用户,用逗号隔开。

(3)   阻止遏抑的namenode和datanode或节点管理器加入集群,需要加入的节点要进行验证配置,例如datanode,把dfs.datanode.keytab.file设置为保存密码的keytab文件,其次在dfs.datanode.keyberos.principal和hadoop-policy.xml文件中的security.datanode.protocal.acl属性设置为datanode的用户名。配置权限验证。

(4)   任务只与父application master通讯,阻止攻击者获取数据。

(5)多个服务之间数据传输采用加密方式。

自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:

https://www.cnblogs.com/bclshuai/p/11380657.html

原文地址:https://www.cnblogs.com/bclshuai/p/12392827.html