Hadoop的安全模式——hadoop2.2.0的Kerberos的配置

我的环境:Red Hat Enterprise Linux Server release 5.5 (查看系统版本的命令:lsb_release -a)  64位Java 环境:jdk1.7.0_51Hadoop环境:最先开始使用的是未编译的hadoop2.3.0,最后使用的是编译过的hadoop2.2.0。二者配置过程差不多,但是64位的系统一定要先编译源码!!!1.had
摘要由CSDN通过智能技术生成
我的环境:
Red Hat Enterprise Linux Server release 5.5 (查看系统版本的命令:lsb_release -a)  64位
Java 环境:jdk1.7.0_51
Hadoop环境:最先开始使用的是未编译的hadoop2.3.0,最后使用的是编译过的hadoop2.2.0。二者配置过程差不多, 但是64位的系统一定要先编译源码!!!

1.hadoop的安全特性主要包括:鉴权(authentication),服务级授权(service level authorization),用于Web控制台的身份验证(authentication for Web consoles),数据保密性(confidentiality)。

2.Authentication
1)最简单的方式:用kinit的命令。
2)要求不同的进程运行在不同的用户之下(每个用户都要配置SSH):
HDFS-------hdfs
YARN-------yarn
JOBHISTORY-------mapred

3)因为不同的进程要运行在不同的用户下,那么本地的目录的权限是必须要设置的,如下表所示:

同时,在HDFS上,将目录权限设置为下表所示:

4)如果使用的是CentOS,Red Hat Enterprise Linux 5.6及以上版本,或者Ubuntu,这些操作系统是以AES-256作为默认的票据加密方式的,需要安装jce_policy-X.zip,连接为:
把这个文件解压后,得到两个jar包,放到$JAVA_HOME/jre/lib/security目录下面,删掉原来的Jar包。如果不这样做,之后的票据验证可能会出现GSS Init失败的错误等。
但是我们使用的系统是Red Hat 4.1.2-48,所以不存在这个问题。保持默认的加密方式就好。

PS:测试集群加密方式的方法:
执行命令:
$ kadmin -q "addprinc test"
$ kinit test 
$ klist -e 
如果使用的是AES-256加密,则显示如下:


    
    
    
5)创建和部署Kerberos 的principal和keytab文件
    首先,在Kerberos安全的集群中,每个Kerberos principal都代表一个唯一的身份。Kerberos为这些principal分发票据使得他们可以使用hadoop的服务。而在hadoop机群中,每个principal的命名应该是:
username/fully.qualified.domain.name@YOUR-REALM.COM
这个应该对应着linux系统中的一个账号,例如hdfs和mapred,yarn等。
    其次,keytab文件包含着Kerberos principal和加密的principal key。对于每个主机来说,keytab文件时唯一的,因为在keytab文件中包含主机名。有了这个文件,principal可以不用输入密码来获得票据。因此必须严格保密,只有相应的principal有读的权限。

注意:每台机器上,必须为hdfs和mapred,yarn都设置一个keytab,而且这些keytabfile必须包含相应的principal和名为HTTP的principal,而对于每台主机来说,只有一个HTTP的principal。也就是说,hdfs和mpared,yarn的keytab中包含的HTTP的principal是同一个。

   最后,创建principal和keytab的过程如下:
可以使用kadmin或者kadmin.local两种命令进入kadmin的shell。如果拥有KDC那台机器的root账号,但是没有kerberos的admin账号,可以用kadmin.local命令;如果没有KDC那台机器的root账号,但是有admin账号,可以使用kadmin命令;如果二者都有,两个命令都可以使用。如下所示:
$  kadmin.local   (运行这个命令的时候,有可能提示你输入密码,此时应该输入Unix密码)
或者
$ kadmin           (运行这个命令的时候,提示输入密码的时候,输入admin的密码)
a)创建Kerberos Principals

  命令如下:
kadmin:  addprinc -randkey hdfs/hostname1@YOUR_REALM
kadmin:  addprinc -randkey yarn/hostname2@YOUR_REALM
kadmin:  addprinc -randkey mapred/hostname1@YOUR_REALM
kadmin:  addprinc -randkey HTTP/hostname1@YOUR_REALM
b)创建kerberos keytab 文件

 因为是在vbaby1-3上面搭建的环境,而且我们集群上的kerberos不支持-norandkey这个参数,使用yarn作为计算框架。所以命令如下:
kadmin:  xst -k hdfs.keytab hdfs/hostname1@YOUR_REALM HTTP/hostname1@YOUR_REALM
kadmin:  xst -k yarn.keytab yarn/hostname1@YOUR_REALM HTTP/hostname1@YOUR_REALM
在Namenode的机器上,执行以下命令(为了配置安全的WebHDFS):
kadmin:  xst -k HTTP.keytab HTTP/hostname1@YOUR_REALM
在有Jobhistory的机器上,执行以下命令:
kadmin:  xst -k mapred.keytab mapred/hostname1@YOUR_REALM HTTP/hostname1@YOUR_REALM

用klist命令来查看keytab文件,各个文件应该像这样:
Keytab name: FILE: /path/to/keytabs/hdfs.keytab
KVNO Timestamp         Principal
---- ----------------- --------------------------------------------------------
   4 03/10/14 11:40:38 hdfs/hostname1@YOUR_REALM (Triple DES cbc mode with HMAC/sha1) 
   4 03/10/14 11:40:38 hdfs/hostname1@YOUR_REALM (DES cbc mode with CRC-32) 
   9 03/10/14 11:40:38 HTTP/hostname1@YOUR_REALM (Triple DES cbc mode with HMAC/sha1) 
   9 03/10/14 11:40:38 HTTP/host
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值