Apache Hadoop配置Kerberos指南

  一般,一個Hadoop集羣的安全使用kerberos來進行保障。在啓用Kerberos後,須要用戶進行身份驗證。用戶經過驗證後可使用GRANT/REVOKE語句來進行基於角色的訪問控制。本文介紹一下在CDH集羣中如何配置kerberos。java

1.KDC安裝和配置腳本
  腳本install_kerberos.sh能夠完成kerberos服務器全部安裝配置和相應的參數配置數據庫

 1 #!/bin/bash
 2 
 3 # 
 4 echo "ready to install and config kerberos"
 5 
 6 # 使用root權限運行
 7 cd /root  8 chmod 755 /etc  9 chmod 755 /etc/hadoop 10 
11 # 安裝kerberos組件
12 yum install -y krb5-server 13 yum install  -y openldap-clients 14 yum -y install krb5-workstation 15 
16 # 在配置文件中更新域名和主機名
17 
18 # 設置域名
19 sed -i.orig 's/EXAMPLE.COM/CLOUDERA/g' /etc/krb5.conf 20 # 設置kerberos server主機名
21 sed -i.m1 's/kerberos.example.com/quickstart.cloudera/g' /etc/krb5.conf 22 # 設置域名爲cloudera
23 sed -i.m2 's/example.com/cloudera/g' /etc/krb5.conf 24 
25 # 從Oracle官網下載JDK到root目錄
26 
27 mkdir jce 28 cd jce 29 unzip ../UnlimitedJCEPolicyJDK7.zip 30 # 保存原始jar文件作備份
31 cp /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/local_policy.jar local_policy.jar.orig 32 cp /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/US_export_policy.jar US_export_policy.jar.orig 33 
34 # 將新的jar包拷貝進來
35 cp /root/jce/UnlimitedJCEPolicy/local_policy.jar /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/local_policy.jar 36 cp /root/jce/UnlimitedJCEPolicy/US_export_policy.jar /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/US_export_policy.jar 37 
38 # 建立kerberos數據庫
39 echo suggested password is cloudera 40 
41 kdb5_util create -s 42 
43 # 更新kdc.conf
44 sed -i.orig 's/EXAMPLE.COM/CLOUDERA/g' /var/kerberos/krb5kdc/kdc.conf 45 # 票據文件中增長一行
46 sed -i.m1 '/dict_file/a max_life = 1d' /var/kerberos/krb5kdc/kdc.conf 47 # 增長可建立的最大文件數
48 sed -i.m2 '/dict_file/a max_renewable_life = 7d' /var/kerberos/krb5kdc/kdc.conf 49 # 將新增長的兩行縮進
50 sed -i.m3 's/^max_/ max_/' /var/kerberos/krb5kdc/kdc.conf 51 
52 # acl文件須要admin權限
53 sed -i 's/EXAMPLE.COM/CLOUDERA/' /var/kerberos/krb5kdc/kadm5.acl 54 
55 # 修改kdc.conf文件
56 sed -i.m3 '/supported_enctypes/a default_principal_flags = +renewable, +forwardable' /var/kerberos/krb5kdc/kdc.conf 57 # 設置縮進
58 sed -i.m4 's/^default_principal_flags/ default_principal_flags/' /var/kerberos/krb5kdc/kdc.conf 59 
60 
61 # 啓動krb5kdc和kadmin服務
62 service krb5kdc start 63 service kadmin start 64 
65 kadmin.local <# cloudera-scm/admin@YOUR-LOCAL-REALM.COM
66 
67 # 在集羣中添加admin用戶
68 kadmin.local <

2.Cloudera Manager Kerberos配置
  在運行腳本以後,咱們如今擁有一個正在運行的Kerberos服務器,可使用它來保護Hadoop集羣。ClouderaManager封裝了大部分工做,咱們只須要配置一些參數值。瀏覽器

  經過瀏覽器訪問http://<your.cm.manager>:7180登陸到Cloudera Manager。安全

  

  直接進入管理> 安全>Kerberos,以下圖所示bash

  

  點擊「啓用Kerberos」按鈕服務器

  列表中這四個選項所有已經由運行的腳本完成。而後選擇「繼續」。oop

  

  Kerberos嚮導須要知道腳本的配置項的值。須要咱們填寫如下選項:ui

  •  KDC服務器主機: <your_kdc_server>
  •  Kerberos安全領域: <your_safe_realm>
  •  Kerberos加密類型: aes256-cts-hmac-sha1-96

  點擊「繼續」。加密

  

  勾選經過Cloudera Manager管理krb5.conf。點擊繼續spa

  

  輸入建立的用戶名和密碼。點擊繼續,以後提示成功可須要重啓集羣。重啓後咱們就構建了一個使用kerberos進行安全保護的hadoop集羣。

3.啓動kerberos後集羣使用方式

  未開啓kerberos時,hdfs用戶是hdfs的超級用戶,用戶能夠經過su hdfs來獲取對hdfs操做的權限,啓用kerberos後使用方式以下:

kinit hdfs@HADOOP

  使用hdfs命令進行驗證

hadoop fs -mkdir /kongc hadoop fs -rmdir /kongc

  使Kerberos·token無效

kdestroy

  如今已經成功構建了一個正在運行的Kerberos集羣!

相關文章
相關標籤/搜索