您好,登錄后才能下訂單哦!
Hadoop自身是沒有安全認證的,所以需要引入第三方的安全認證機制。kerberos是hadoop比較受歡迎的一種認證方式。kerberos配置比較簡單。但是實際使用的時候,如果不嚴格遵守游戲規則。你會經常遇到“奇怪”的問題。
1. 安裝kerberos的軟件包
yum install krb5* vi /etc/krb5.conf
2. 修改kerberos的配置文件
# more /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = LIANG.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 2d forwardable = false [realms] LIANG.COM = { kdc = c6701 admin_server = c6701 default_domain = liang.com key_stash_file = /var/kerberos/krb5kdc/.k5.LIANG.COM dict_file = /usr/share/dict/words } [domain_realm] .liang.com = LIANG.COM liang.com = LIANG.COM
3. 修改kdc配置文件
cat /var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] LIANG.COM = { kadmind_port = 749 master_key_type = aes256-cts-hmac-sha1-96 acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words supported_enctypes = des3-cbc-sha1:normal max_life = 24h 0m 0s max_renewable_life = 7d 0h 0m 0s dict_file = /usr/share/dict/words key_stash_file = /var/kerberos/krb5kdc/.k5.LIANG.COM database_name = /var/kerberos/krb5kdc/principal }
執行命令創建kdc數據庫
kdb5_util create -s -r HADOOP.LIANG.COM
4. 給數據庫管理員添加ACL權限,修改kadm5.acl文件,*代表全部權限
# cat /var/kerberos/krb5kdc/kadm5.acl */admin@ESGYN.COM *
5. 啟動服務
# service krb5kdc start # service kadmin start # service krb5kdc status # service kadmin status # chkconfig krb5kdc on # chkconfig kadmin on
6. 補充:在每個客戶端的系統參數/etc/profile中,加上下面參數,確保每次su - user都能使用同一個tgt,而不是創建一個新的,而找不到,最終導致su的用戶kinit失敗
# workaround for kerberos loging export KRB5CCNAME=FILE:/tmp/krb5cc_`id -u`
7. 創建principal
kadmin.local -q "addprinc -pw <password> <username>"
針對hadoop用戶,增加主機名,一同創建principal,增加安全性。
注意:hadoop只能通過小寫的主機名進行注冊。如果主機名有大寫字母,手動改成小寫。后續kinit的時候,也是使用小寫的。hadoop會自動將大寫的主機名變成小寫。
kadmin.local -q "addprinc -pw <password> hdfs/<hostname>"
8. 創建keytab
kadmin.local -q "ktadd -norandkey -k /root/keytab/<username>.keytab <username>"
9. 注冊
kinit -kt /root/keytab/hdfs.keytab <username>
針對hadoop用戶,增加主機名,一同創建principal,增加安全性。
kinit -kt /root/keytab/hdfs.keytab hdfs/`hostname`
10. 查詢當前用戶的kinit情況
$ klist Ticket cache: FILE:/tmp/krb5cc_1098 Default principal: hdfs/hdfs1.liang.com@LIANG.COM Valid starting Expires Service principal 03/26/18 17:19:04 03/27/18 17:19:04 krbtgt/LIANG.COM@LIANG.COM renew until 04/02/18 17:19:04
11. 查詢keytab文件內容
$ klist -kt /etc/security/keytab/hdfs.keytab Keytab name: FILE:/root/keytab/hdfs.keytab KVNO Timestamp Principal ---- ----------------- -------------------------------------------------------- 1 04/07/17 16:16:04 hdfs/hdfs1.liang.com@LIANG.COM 1 04/07/17 16:16:04 hdfs/hdfs2.liang.com@LIANG.COM 1 04/07/17 16:16:05 hdfs/hdfs3.liang.com@LIANG.COM
12. 查詢KDC,用戶列表
kadmin.local -q "listprincs"
13. 刪除用戶
kadmin.local -q "delprinc -force HTTP/hdfs3.liang.com@LIANG.COM"
14. 修改密碼
kpasswd 用戶名
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。