美文网首页Hadoop实操
0005-Windows Kerberos客户端配置并访问CDH

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

作者: Hadoop实操 | 来源:发表于2018-12-08 23:51 被阅读17次

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安装包,点击下载,如下截图:


根据自己Windows操作系统下载不同的Client,32位或者64位。

2.2.安装Kerberos

1.将下载下来的客户端双击打开



2.点击下一步,如下图所示



3.选择“同意”,点击下一步

4.选择“Typical”进入下一步



5.点击“install”进行安装

点击“finish”安装完成

6.配置C:\ProgramData\MIT\Kerberos5\krb5.ini文件


将KDC Server服务器上/ect/krb5.conf文件中的部分内容,拷贝到krb5.ini文件中

注意:此处将标注部分拷贝至krb5.ini文件中,否则会导致MIT Kerberos无法正常启动,如果直接将krb5.conf文件更名为ini文件并替换krb5.ini文件会出现文件格式问题导致MIT Kerberos无法正常启动。
7.配置完成后,启动MIT Kerberos客户端,如下图所示:

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/admin@CLOUDERA.COM with password.
kadmin.local:  addprinc test@CLOUDERA.COM
WARNING: no policy specified for test@CLOUDERA.COM; defaulting to no policy
Enter password for principal "test@CLOUDERA.COM": 
Re-enter password for principal "test@CLOUDERA.COM": 
Principal "test@CLOUDERA.COM" created.

测试正常



2.在Winodw端,通过MIT Kerberos客户Get Ticket



在如下列表中可以看到获取到的Ticket

3.销毁获取到的Ticket

选中列表中需要销毁的Ticket,点击Destroy Ticket




4.命令行下初始化



在客户端可以看到初始化成功的Ticket

5.命令行下kdestroy

客户端数据已destroy


3.2.使用Keytab文件登录Kerberos

1.在KDC Server创建一个ketab文件,使用上一步创建的test@CLOUDERA.COM

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

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

生成成功



测试test.keytab文件

注意:在非root用户下需要将生成的keytab文件,权限设置到644以上,否则会初始化失败或者使用sudo权限初始化

2.将生成的test.keytab文件拷贝到Windows Server上,在CMD命令行进行初始化

初始化成功,在MIT Kerberos客户端显示

4.FireFox浏览器访问

4.1.FireFox浏览器配置

1.打开FireFox浏览器,在地址栏输入about:config



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端口



由于此时未将hdfs的ticket初始化所以不能正常访问,提示输入principal和密码
2.在CM节点的/var/run/cloudera-scm-agent目录下选择最新的xxx-hdfs-NAMENODE目录下的hdfs.keytab文件




3.测试hdfs.keytab是否正常

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

[root@ip-172-31-18-97 577-hdfs-NAMENODE]# kadmin.local
Authenticating as principal hdfs/admin@CLOUDERA.COM with password.
kadmin.local:  listprincs hdfs*
hdfs/ip-172-31-18-97.ap-southeast-1.compute.internal@CLOUDERA.COM
hdfs/ip-172-31-19-209.ap-southeast-1.compute.internal@CLOUDERA.COM
hdfs/ip-172-31-28-67.ap-southeast-1.compute.internal@CLOUDERA.COM
hdfs/ip-172-31-30-214.ap-southeast-1.compute.internal@CLOUDERA.COM
[root@ip-172-31-18-97 577-hdfs-NAMENODE]# kinit -kt hdfs.keytab hdfs/ip-172-31-18-97.ap-southeast-1.compute.internal@CLOUDERA.COM
[root@ip-172-31-18-97 577-hdfs-NAMENODE]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: hdfs/ip-172-31-18-97.ap-southeast-1.compute.internal@CLOUDERA.COM

Valid starting       Expires              Service principal
07/26/2017 11:23:08  07/27/2017 11:23:08  krbtgt/CLOUDERA.COM@CLOUDERA.COM
        renew until 07/31/2017 11:23:08

注意:可以使用listprincs列出的hdfs身份进行初始化
4.将hdfs.keytab文件拷贝到Windows机器上,通过CMD命令进行初始化

5.再次通过FireFox浏览器访问HDFS服务,正常访问

6.访问Yarn资源管理服务是否能正常

查看作业详情时无法正常访问,由于该hostname信息未添加到FireFox的network.negotiate-auth.trusted-uris配置中

将该hostname添加到配置中

再次访问成功

5.keytab合并及使用

1.将需要合并的keytab文件统一的放在同一个目录下



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文件


注意:由于生成的keytab文件权限默认为600,如果非root用户则需要使用sudo执行ktutil命令或者提升keytab权限至644以上。
3.将生成的文件拷贝至Windows机器上,使用kinit进行初始化
使用hdfs凭证进行初始化

HDFS的服务访问成功

使用hive凭证进行初始化

访问HDFS服务成功

使用hbase凭证进行初始化

访问HDFS服务成功

使用yarn凭证进行初始化

访问HDFS服务成功

通过上述测试,无论使用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.

配置完环境变量后,需要重启机器使其环境变量生效。注意默认的“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 test@CLOUDERA.com直接初始化时会提示密码错误。

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干货,欢迎转发和分享。



原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

相关文章

网友评论

    本文标题:0005-Windows Kerberos客户端配置并访问CDH

    本文链接:https://www.haomeiwen.com/subject/fvachqtx.html