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


根据自己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实操

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容