0005-Windows Kerberos客戶端配置並訪問CDH

1.概述html

本文檔描述Windows Server2008 R2(windows的內核版本是6.1,與windows 7相同)下安裝Kerberos Client及FireFox下HTTP訪問HDFS、Yarn、Hive、HBase等Hadoop服務的Web UI(如Namenode的50070,Yarn的8088)的過程。安裝文檔主要分爲如下幾步:node

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

2.在Windows下使用kinit測試。windows

3.經過keytab在Windows下進行kinit操做。瀏覽器

4.配置FireFox。服務器

5.驗證服務是否正常訪問。dom

這篇文檔將着重介紹Winodws Server R2下安裝及使用Kerberos,並基於如下假設:oop

1.CDH環境已搭建並正常運行測試

2.HDFS、Yarn、HBase、Hive等組件已安裝部署ui

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安裝包(http://web.mit.edu/kerberos/dist/),以下截圖:

根據本身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.internalnetwork.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 principal07/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 參考文檔

http://doc.mapr.com/display/MapR/Configuring+Kerberos+Authentication+for+Windows

https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_sg_browser_access_kerberos_protected_url.html

https://community.hortonworks.com/articles/28537/user-authentication-from-windows-workstation-to-hd.html

http://web.mit.edu/kerberos/dist/index.html#kfw-4.0

醉酒鞭名馬,少年多浮誇! 嶺南浣溪沙,嘔吐酒肆下!摯友不願放,數據玩的花!

相關文章
相關標籤/搜索