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

文档编写目的

在使用CDH的过程中,集群启用了Kerberos认证后,集群中的一些组件的Web UI也会启用Kerberos认证,例如HDFS、Yarn、Hive等组件,此时如果在Windows上对这些页面进行访问,是无法正常访问的,需要在Windows本地安装上Kerberos客户端,并进行配置后才能够访问这些需要Kerberos认证的Web UI,本文档将介绍如何在Windows 10安装Kerberos客户端并配置FireFox浏览器访问CDH集群组件的Web UI。

  • 测试环境:

1.CM和CDH版本为6.2.0

2.本地操作系统环境为Windows10

3.集群服务均正常运行

4.集群启用Kerberos

5.集群操作系统版本为RedHat7.2

Kerberos安装

1.在Kerberos官网下载安装包,下载地址:

http://web.mit.edu/kerberos/dist/

2.本文档下载了64位的 安装包,下面按步骤进行安装

至此安装完成

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

将安装KDC Server的服务器上的/etc/krb5.conf配置文件中的部分内容拷贝到该文件中

注意:不要直接替换krb5.ini文件,否则会出现文件格式问题,建议拷贝部分内容到krb5.ini文件中,然后保存文件

4.配置完成后,启动MIT Kerberos客户端,如下图所示:

在Windows下使用kinit测试

1.在KDC Server上创建一个用户

[root@cdh178 ~]# kadmin.local 
Authenticating as principal solr/admin@MACRO.COM with password.
kadmin.local:  addprinc test_krb
WARNING: no policy specified for test_krb@MACRO.COM; defaulting to no policy
Enter password for principal "test_krb@MACRO.COM": 
Re-enter password for principal "test_krb@MACRO.COM": 
Principal "test_krb@MACRO.COM" created.

测试正常

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

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

3.销毁获取到的Ticket

4.命令行下初始化

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

5.命令行下kdestroy

客户端数据已kdestroy

使用keytab文件测试Kerberos

1.在KDC Server上生成keytab文件,使用test_krb@MACRO.COM账号

[root@cdh178 ~]# kadmin.local 
Authenticating as principal test_krb/admin@MACRO.COM with password.
kadmin.local:  xst -norandkey -k test_krb.keytab test_krb@MACRO.COM
Entry for principal test_krb@MACRO.COM with kvno 1, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:test_krb.keytab.
Entry for principal test_krb@MACRO.COM with kvno 1, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:test_krb.keytab.
Entry for principal test_krb@MACRO.COM with kvno 1, encryption type des3-cbc-sha1 added to keytab WRFILE:test_krb.keytab.
Entry for principal test_krb@MACRO.COM with kvno 1, encryption type arcfour-hmac added to keytab WRFILE:test_krb.keytab.
Entry for principal test_krb@MACRO.COM with kvno 1, encryption type camellia256-cts-cmac added to keytab WRFILE:test_krb.keytab.
Entry for principal test_krb@MACRO.COM with kvno 1, encryption type camellia128-cts-cmac added to keytab WRFILE:test_krb.keytab.
Entry for principal test_krb@MACRO.COM with kvno 1, encryption type des-hmac-sha1 added to keytab WRFILE:test_krb.keytab.
Entry for principal test_krb@MACRO.COM with kvno 1, encryption type des-cbc-md5 added to keytab WRFILE:test_krb.keytab.

生成成功

测试keytab文件

测试成功

2.将生成的keytab文件拷贝到本地Windows环境,进行kinit测试

初始化成功,在客户端查看

配置FireFox浏览器访问

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

2.修改配置

network.negotiate-auth.trusted-uris = cdh178.macro.com,cdh177.macro.com,cdh176.macro.com
network.auth.use-sspi = false

network.negotiate-auth.trusted-uris这个参数配置的是访问服务的hostname,配置多个的话以“,”分隔

测试访问集群服务

6.1 测试访问HDFS和Yarn

1.由于此时未初始化HDFS的Ticket,所以无法访问

2.进入到/var/run/cloudera-scm-agent目录下,到最新的HDFS的目录中找到HDFS的keytab文件

3.测试HDFS的keytab文件是否能够正常使用

[root@cdh177 1298-hdfs-NAMENODE]# kinit -kt hdfs.keytab hdfs/cdh177.macro.com@MACRO.COM
[root@cdh177 1298-hdfs-NAMENODE]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: hdfs/cdh177.macro.com@MACRO.COM

Valid starting       Expires              Service principal
08/04/2019 10:08:39  08/05/2019 10:08:39  krbtgt/MACRO.COM@MACRO.COM
    renew until 08/09/2019 10:08:39

初始化成功

4.将HDFS的keytab文件拷贝到Windows本地,并进行kinit

5.再次通过FireFox访问HDFS服务,能够正常访问

6.访问Yarn资源管理服务,访问正常

6.2 keytab合并使用

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

2.使用ktutil命令合并keytab文件,操作如下:

[root@cdh177 0804]# ktutil 
ktutil:  rkt hbase.keytab
ktutil:  rkt hdfs.keytab
ktutil:  rkt hive.keytab
ktutil:  rkt yarn.keytab
ktutil:  wkt test-new.keytab
ktutil:  exit

keytab合并成功,默认生成的keytab文件权限是600,如果事应非root用户执行需要注意权限问题

3.将生成的合并后的keytab文件拷贝到本地Windows环境进行测试

使用hdfs凭证进行初始化

访问HDFS服务成功

使用hive凭证进行初始化

访问HDFS服务成功

使用hbase凭证进行初始化

访问HDFS服务成功

使用yarn凭证进行初始化

访问HDFS服务成功

通过测试可以看出,使用合并后的keytab文件,无论用哪个系统用户的身份进行认证,配置成功后都能够通过FireFox浏览器访问服务的页面

总结

1.Windows本地的krb5.ini文件不能直接使用krb5.conf文件更名替换,否则会出现文件格式的问题导致MIT Kerberos客户端无法正常启动。

2.在生成keytab文件时需要加上”-norandkey”参数,否则会导致kinit时密码错误。

3.在Windows本地安装了Java环境后,由于Java里也有kinit、klist等命令,所以需要在Path环境变量里面,将Kerberos的环境变量位置调整到Java环境变量的前面,保证在Windows本地使用的kinit、klist等命令是使用的Kerberos的命令,否则就会导致命令冲突,如下图,将Kerberos的环境变量调整到最前面即可。

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏测试技术圈

测试职业发展的微笑曲线

Acer公司的施老先生早先发明过一个IT产业的微笑曲线。这里照猫画虎,划了一个软件测试的微笑曲线。

8730
来自专栏测试技术圈

MockMvc -你需要一个测试基类

用例虽然能执行成功,但是还存在着不少问题。最为严重的,就是代码冗余度太高。两次模拟的HTTP请求,虽然请求的方式和发送内容不同,但是整个请求的组装、发送和结果验...

16930
来自专栏大数据文摘

模仿人类逻辑,首个BERT模型AI通过初二科学考试!研究人员:完成了老板遗愿

一只名叫亚里士多德的人工智能刚刚通过了美国八年级的科学测试,上周,这条新闻占据了美国多家新闻网站的首版。

10120
来自专栏Java研发军团

每敲一行代码,需要测试1000次!!!

此前Oracle 惨遭亚马逊、Salesforce 弃用,究其根本原因,不是因为亚马逊等企业为了省钱,而是因为 Oracle 数据库逐渐满足不了他们业务的发展需...

5810
来自专栏二狗的DBA之路

kubectl 命令自动补全

原文地址: https://blog.csdn.net/wenwenxiong/article/details/53105287

7120
来自专栏二狗的DBA之路

使用Prometheus监控DBLE

DBLE是一款基于MyCAT改进的MySQL分库分表中间件,但是并没有一个配套的监控软件。

8920
来自专栏大话swift

kotlin标准库扩展之 let run apply also(一)

kotlin十分简便系统为我们提供了一些十分简便的标准库扩展,今天我们就看看这些常规的使用频率比较高的能帮助我们加速开发的标准库吧

7510
来自专栏FunTester

如何正确执行功能API测试

测试曾经在GUI级别进行,但开发人员已经意识到它是多么脆弱。本文将讲述更多API测试以及如何使其最佳运行。

11320
来自专栏FunTester

利用python wxpy和requests写一个自动应答微信机器人实例

在做测试的过程中,同事们经常需要获取一个账户的token和个人信息,我自己利用spring boot写了一个接口,但是对于APP测试同学来说不是很方便,因为需要...

22640
来自专栏JAVA葵花宝典

线程顺序执行

本文使用了8种方法实现在多线程中让线程按顺序运行的方法,涉及到多线程中许多常用的方法,不止为了知道如何让线程按顺序运行,更是让读者对多线程的使用有更深刻的了解。...

7130

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励