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的環境變量
配置完環境變量後,須要重啓機器使其環境變量生效。注意默認的「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
http://web.mit.edu/kerberos/dist/index.html#kfw-4.0
醉酒鞭名馬,少年多浮誇! 嶺南浣溪沙,嘔吐酒肆下!摯友不願放,數據玩的花!