0005-Windows Kerberos客户端配置并访问CDH

Fayson的github: https://github.com/fayson/cdhproject
推荐关注微信公众号:“Hadoop实操”,ID:gh_c4c535955d0f,或者扫描文末二维码。

1.概述

本文档描述Windows Server2008 R2(windows的内核版本是6.1,与windows 7相同)下安装Kerberos Client及FireFox下HTTP访问HDFS、Yarn、Hive、HBase等Hadoop服务的Web UI(如Namenode的50070,Yarn的8088)的过程。安装文档主要分为以下几步:

1.在Windows Server2008 R2 64位上安装Kerberos Client。

2.在Windows下使用kinit测试。

3.通过keytab在Windows下进行kinit操作。

4.配置FireFox。

5.验证服务是否正常访问。

这篇文档将着重介绍Winodws Server R2下安装及使用Kerberos,并基于以下假设:

1.CDH环境已搭建并正常运行

2.HDFS、Yarn、HBase、Hive等组件已安装部署

3.集群已完成Kerberos的配置,并正常使用

以下是对本次测试环境,但不是本操作手册的硬限制:

1.操作系统:Redhat7.2

2.CM版本:CM5.11.1

3.CDH版本:CDH5.11.1

4.采用ec2-user对集群进行部署

2. Kerberos安装

2.1.Kerberos安装包准备

在Kerberos官网下载Kerberos安装包,点击下载,如下截图:
0005-Windows Kerberos客户端配置并访问CDH_第1张图片
根据自己Windows操作系统下载不同的Client,32位或者64位。

2.2.安装Kerberos

1.将下载下来的客户端双击打开
0005-Windows Kerberos客户端配置并访问CDH_第2张图片
2.点击下一步,如下图所示
0005-Windows Kerberos客户端配置并访问CDH_第3张图片
3.选择“同意”,点击下一步
0005-Windows Kerberos客户端配置并访问CDH_第4张图片
4.选择“Typical”进入下一步
0005-Windows Kerberos客户端配置并访问CDH_第5张图片
5.点击“install”进行安装
0005-Windows Kerberos客户端配置并访问CDH_第6张图片
点击“finish”安装完成

6.配置C:\ProgramData\MIT\Kerberos5\krb5.ini文件
0005-Windows Kerberos客户端配置并访问CDH_第7张图片
将KDC Server服务器上/ect/krb5.conf文件中的部分内容,拷贝到krb5.ini文件中
0005-Windows Kerberos客户端配置并访问CDH_第8张图片
注意:此处将标注部分拷贝至krb5.ini文件中,否则会导致MIT Kerberos无法正常启动,如果直接将krb5.conf文件更名为ini文件并替换krb5.ini文件会出现文件格式问题导致MIT Kerberos无法正常启动。
7.配置完成后,启动MIT Kerberos客户端,如下图所示:
0005-Windows Kerberos客户端配置并访问CDH_第9张图片

3.在Window下使用kinit测试

3.1.使用密码登录Kerberos

1.KDC Server上通过admin创建一个用户

[ec2-user@ip-172-31-18-97 keytab]$ sudo kadmin.local
Authenticating as principal root/[email protected] with password.
kadmin.local:  addprinc [email protected]
WARNING: no policy specified for [email protected]; defaulting to no policy
Enter password for principal "[email protected]": 
Re-enter password for principal "[email protected]": 
Principal "[email protected]" created.

在这里插入图片描述
测试正常
在这里插入图片描述
2.在Winodw端,通过MIT Kerberos客户Get Ticket
0005-Windows Kerberos客户端配置并访问CDH_第10张图片
在如下列表中可以看到获取到的Ticket
0005-Windows Kerberos客户端配置并访问CDH_第11张图片
3.销毁获取到的Ticket

选中列表中需要销毁的Ticket,点击Destroy Ticket
0005-Windows Kerberos客户端配置并访问CDH_第12张图片
0005-Windows Kerberos客户端配置并访问CDH_第13张图片
4.命令行下初始化
在这里插入图片描述
在客户端可以看到初始化成功的Ticket
0005-Windows Kerberos客户端配置并访问CDH_第14张图片
5.命令行下kdestroy
在这里插入图片描述
客户端数据已destroy
0005-Windows Kerberos客户端配置并访问CDH_第15张图片

3.2.使用Keytab文件登录Kerberos

1.在KDC Server创建一个ketab文件,使用上一步创建的[email protected]

[ec2-user@ip-172-31-18-97 keytab]$ sudo kadmin.local
Authenticating as principal root/[email protected] with password.
kadmin.local:  xst -norandkey -k test.keytab [email protected]
kadmin.local: Principal test.keytab does not exist.
Entry for principal [email protected] with kvno 1, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type des3-cbc-sha1 added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type arcfour-hmac added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type camellia256-cts-cmac added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type camellia128-cts-cmac added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type des-hmac-sha1 added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type des-cbc-md5 added to keytab WRFILE:-k.

注意:在生成keytab文件时需要加参数”-norandkey”否则会导致,直接使用kinit [email protected]初始化时会提示密码错误。

生成成功
0005-Windows Kerberos客户端配置并访问CDH_第16张图片
0005-Windows Kerberos客户端配置并访问CDH_第17张图片
测试test.keytab文件
0005-Windows Kerberos客户端配置并访问CDH_第18张图片
注意:在非root用户下需要将生成的keytab文件,权限设置到644以上,否则会初始化失败或者使用sudo权限初始化
0005-Windows Kerberos客户端配置并访问CDH_第19张图片
2.将生成的test.keytab文件拷贝到Windows Server上,在CMD命令行进行初始化
在这里插入图片描述
初始化成功,在MIT Kerberos客户端显示
0005-Windows Kerberos客户端配置并访问CDH_第20张图片

4.FireFox浏览器访问

4.1.FireFox浏览器配置

1.打开FireFox浏览器,在地址栏输入about:config
0005-Windows Kerberos客户端配置并访问CDH_第21张图片
2.修改配置参数

network.negotiate-auth.trusted-uris = ip-172-31-18-97.ap-southeast-1.compute.internal,ip-172-31-19-209.ap-southeast-1.compute.internal
network.auth.use-sspi = false

注意:network.negotiate-auth.trusted-uris此参数主要配置需要访问服务的hostname,如果需要访问多个host则以“,”分割。
在这里插入图片描述
在这里插入图片描述

4.2.测试访问HDFS服务

1.访问HDFS的50070端口
0005-Windows Kerberos客户端配置并访问CDH_第22张图片
由于此时未将hdfs的ticket初始化所以不能正常访问,提示输入principal和密码
2.在CM节点的/var/run/cloudera-scm-agent目录下选择最新的xxx-hdfs-NAMENODE目录下的hdfs.keytab文件
0005-Windows Kerberos客户端配置并访问CDH_第23张图片
0005-Windows Kerberos客户端配置并访问CDH_第24张图片
3.测试hdfs.keytab是否正常

通过kadmin.loca命令列出所有hdfs的身份

[root@ip-172-31-18-97 577-hdfs-NAMENODE]# kadmin.local
Authenticating as principal hdfs/[email protected] with password.
kadmin.local:  listprincs hdfs*
hdfs/[email protected]
hdfs/[email protected]
hdfs/[email protected]
hdfs/[email protected]

0005-Windows Kerberos客户端配置并访问CDH_第25张图片

[root@ip-172-31-18-97 577-hdfs-NAMENODE]# kinit -kt hdfs.keytab hdfs/[email protected]
[root@ip-172-31-18-97 577-hdfs-NAMENODE]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: hdfs/[email protected]

Valid starting       Expires              Service principal
07/26/2017 11:23:08  07/27/2017 11:23:08  krbtgt/[email protected]
        renew until 07/31/2017 11:23:08

0005-Windows Kerberos客户端配置并访问CDH_第26张图片
注意:可以使用listprincs列出的hdfs身份进行初始化
4.将hdfs.keytab文件拷贝到Windows机器上,通过CMD命令进行初始化
0005-Windows Kerberos客户端配置并访问CDH_第27张图片
5.再次通过FireFox浏览器访问HDFS服务,正常访问
0005-Windows Kerberos客户端配置并访问CDH_第28张图片
6.访问Yarn资源管理服务是否能正常
0005-Windows Kerberos客户端配置并访问CDH_第29张图片
查看作业详情时无法正常访问,由于该hostname信息未添加到FireFox的network.negotiate-auth.trusted-uris配置中
0005-Windows Kerberos客户端配置并访问CDH_第30张图片
将该hostname添加到配置中
0005-Windows Kerberos客户端配置并访问CDH_第31张图片
再次访问成功
0005-Windows Kerberos客户端配置并访问CDH_第32张图片

5.keytab合并及使用

1.将需要合并的keytab文件统一的放在同一个目录下
0005-Windows Kerberos客户端配置并访问CDH_第33张图片
2.使用ktutil命令合并keytab文件,操作如下

[root@ip-172-31-18-97 keytab]# ktutil 
ktutil:  rkt hbase.keytab 
ktutil:  rkt hive.keytab 
ktutil:  rkt hdfs.keytab 
ktutil:  rkt yarn.keytab 
ktutil:  wkt test-new.keytab
ktutil:

在当前目录下生成test-new.keytab文件
0005-Windows Kerberos客户端配置并访问CDH_第34张图片
注意:由于生成的keytab文件权限默认为600,如果非root用户则需要使用sudo执行ktutil命令或者提升keytab权限至644以上。
3.将生成的文件拷贝至Windows机器上,使用kinit进行初始化
使用hdfs凭证进行初始化
0005-Windows Kerberos客户端配置并访问CDH_第35张图片
HDFS的服务访问成功
0005-Windows Kerberos客户端配置并访问CDH_第36张图片
使用hive凭证进行初始化
0005-Windows Kerberos客户端配置并访问CDH_第37张图片
访问HDFS服务成功
0005-Windows Kerberos客户端配置并访问CDH_第38张图片
使用hbase凭证进行初始化
0005-Windows Kerberos客户端配置并访问CDH_第39张图片
访问HDFS服务成功
0005-Windows Kerberos客户端配置并访问CDH_第40张图片
使用yarn凭证进行初始化
0005-Windows Kerberos客户端配置并访问CDH_第41张图片
访问HDFS服务成功
0005-Windows Kerberos客户端配置并访问CDH_第42张图片
通过上述测试,无论使用hdfs/yarn/hbase/hive任何身份均可正常访问HDFS服务,因此可以得出Kerberos只做身份认证,未做页面的授权。

6.常见问题

1.无法安装Kerberos,提示you must install a windows service错误

可能是由于Window版本问题,本文档选择的安装包本次不支持Windows Server2008(windows的内核版本是6.0,与windows vista相同),所以建议客户端机器选择Windows7或以上版本。

2.设置Kerberos Credential Cache File路径

配置Windows的环境变量

- KRB5\_CONFIG: Path for the kerberos inifile.()
- KRB5CCNAME: Path for the kerberoscredential cache file.

0005-Windows Kerberos客户端配置并访问CDH_第43张图片
配置完环境变量后,需要重启机器使其环境变量生效。注意默认的“KRB5CCNAME”目录是在C:\temp.

3.在windows下的krb5.ini配置错误导致MIT Kerberos不能启动

如果直接将krb5.conf文件更名为ini文件并替换krb5.ini文件会出现文件格式问题导致MIT Kerberos无法正常启动,配置信息如下:

# Configuration snippets may be placed in this directory as well

[libdefaults]
 default_realm = CLOUDERA.COM
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
# default_realm = EXAMPLE.COM
 #default_ccache_name = KEYRING:persistent:%{uid}

[realms]
# EXAMPLE.COM = {
#  kdc = kerberos.example.com
#  admin_server = kerberos.example.com
# }
 CLOUDERA.COM = {
  kdc = ip-172-31-18-97.ap-southeast-1.compute.internal
  admin_server = ip-172-31-18-97.ap-southeast-1.compute.internal
 }

[domain_realm]
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM
 .ip-172-31-18-97.ap-southeast-1.compute.internal = CLOUDERA.COM
 ip-172-31-18-97.ap-southeast-1.compute.internal = CLOUDERA.COM

4.在创建后凭证后,使用该凭证创建keytab文件后,kinit该凭证报密码错误

在生成keytab文件时需要加参数”-norandkey”否则会导致直接使用kinit [email protected]直接初始化时会提示密码错误。

5.在通过浏览器访问Hadoop服务时部分功能能正常,部分功能不正常

需要确认访问的host地址是否加入network.negotiate-auth.trusted-uris中,此参数主要配置需要访问服务的hostname,如果需要访问多个host则以“,”分割。

6.不需要合并所有Hadoop相关的服务的keytab来访问不同的页面,成功初始化一个用户比如HDFS即可。

7.参考文档

Configuring Kerberos Authentication for Windows

How to Configure Browsers for Kerberos Authentication

User authentication from Windows Workstation to HDP Realm Using MIT Kerberos Client (with Firefox)

MIT Kerberos Distribution


为天地立心,为生民立命,为往圣继绝学,为万世开太平。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
0005-Windows Kerberos客户端配置并访问CDH_第44张图片
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

0005-Windows Kerberos客户端配置并访问CDH_第45张图片

你可能感兴趣的:(Hadoop实操)