更新時間:2021-09-03 來源:黑馬程序員 瀏覽量:
按照環(huán)境準備中的設定,cdh0 cdh1 cdh2 均作為Kerberos 的客戶端, cdh3作為Kerberos的服務端
搭建Kerberos Server
以下操作運行在cdh3
1. 使用 yum 安裝Kerberos Server的套件
yum install -y krb5-libs krb5-server krb5-workstation
2. 配置 /etc/krb5.conf
vim /etc/krb5.conf
填入以下內(nèi)容:
export HADOOP_HOME=/bigdata/hadoop-2.6.0-cdh5.14.4 export MAVEN_HOME=/bigdata/apache-maven-3.0.5 export HIVE_HOME=/bigdata/hive-1.1.0-cdh5.14.4 export JAVA_HOME=/usr/local/jdk1.8.0_221 export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$MAVEN_HOME/bin:$HIVE_HOME/bin: $PATH # export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native # export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native" export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/bigdata/hadoop-2.6.0-cdh5.14.4/lib/native [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = ITCAST.CN dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] ITCAST.CN = { kdc = cdh3.itcast.cn admin_server = cdh3.itcast.cn } [domain_realm]
名詞講解:
realm 域:表示一個公司或者一個組織。邏輯上的授權(quán)認證范圍
比如,某個認證賬戶是屬于某個域下的,跨域賬戶不通用
域和FQDN的配置很像,使用大寫,本次演示使用ITCAST.CN 來標記域
其中:
logging 塊配置日志相關
libdefaults塊配置默認的設置,包括ticket的生存周期等
realms 是域的配置,可以配置多個realm,本次演示只配置一個 即是 ITCAST.CN
domain_realm 是 Kerberos內(nèi)的域 和 主機名的域的一個對應關系
.itcast.cn 類似 *.itcast.cn 表示如cdh0.itcast.cn cdh1.itcast.cn 等均是ITCAST.CN 這個realm
.itcast.cn 表示 itcast.cn 這個主機名也是 ITCAST.CN 這個realm的一部分
3. 配置 /var/kerberos/krb5kdc/kdc.conf
填入:
export HADOOP_HOME=/bigdata/hadoop-2.6.0-cdh5.14.4 export MAVEN_HOME=/bigdata/apache-maven-3.0.5 export HIVE_HOME=/bigdata/hive-1.1.0-cdh5.14.4 export JAVA_HOME=/usr/local/jdk1.8.0_221 export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$MAVEN_HOME/bin:$HIVE_HOME/bin: $PATH # export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native # export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native" export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/bigdata/hadoop-2.6.0-cdh5.14.4/lib/native [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = ITCAST.CN dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] ITCAST.CN = { kdc = cdh3.itcast.cn admin_server = cdh3.itcast.cn } [domain_realm]
名詞解釋:
acl_file : Kerberos acl 的一些配置對應的文件
kerberos : admin賬戶的 keytab 本地路徑
keytab : 登錄憑證,有了這個相當于直接有了 ticket , 可以免密直接登錄某個賬戶,所以這個文件很重要
在一些企業(yè)的配置中,對于用戶的配置,就是直接發(fā)放給用戶對應的 keytab 文件,用戶有了這個文件就能訪問對應的資源
就類似于 ssh 中的 登錄私鑰一樣 有了私鑰就能直接登錄機器
這個文件就是一把鑰匙,能開門的
這個配置文件內(nèi):設置了對于server的一些重要配置
比如:
kdc 的端口
以及ITCAST.CN這個域中的 acl file 文件路徑(下一步設置它)
admin賬戶的 keytab
支持的加密方法等
4. 配置 /var/kerberos/krb5kdc/kadm5.acl
填入 */admin@ITCAST.CN *
其中 */admin 是Kerberos中的賬戶形式
如賬戶 rm/cdh0.itcast.cn@ITCAST.CN 表示 在 cdh0機器上的 resourcemanager賬戶,這個賬戶屬于ITCAST.CN這個域
最后的 * 表示 符合 */admin的賬戶擁有所有權(quán)限
這一步也就是配置了admin的規(guī)則 如 admin/ admin@ITCAST.CN 就擁有ITCAST.CN 域內(nèi)的全部權(quán)限
5. 初始化Kerberos的數(shù)據(jù)庫
輸入: kdb5_util create -s -r ITCAST.CN
其中 ITCAST.CN 是對應的域,如果你的不同請修改
然后命令要求設置數(shù)據(jù)庫master的密碼,要求輸入兩次,輸入 krb5kdc 即可
這樣得到 數(shù)據(jù)庫master賬戶: K/M@ITCAST.CN , 密碼: krb5kdc
6. 創(chuàng)建ITCAST.CN 域內(nèi)的管理員
執(zhí)行:kadmin.local 進入 kerberos 的 admin 命令行界面
# 輸入如下內(nèi)容,添加一個用戶 addprinc root/admin@ITCAST.CN # 要求輸入密碼,輸入root作為密碼(可自行設置) # 上面的賬戶就作為ITCAST.CN的管理員賬戶存在 (滿足 */admin@ITCAST.CN 的規(guī)則 擁有全部權(quán)限) # 再創(chuàng)建一個 測試的管理員用戶 addprinc krbtest/admin@ITCAST.CN # 同樣滿足 */admin@ITCAST.CN 密碼設置為krbtest # 查看當前擁有的所有用戶 listprincs
名詞解釋: principal
可以當作是用戶的意思 一個principal由3個部分組成,如下:
nn/cdh0.itcast.cn@ITCAST.CN
也就是 account/instance@realm
其中account 表示賬戶名 或者服務類型
instance表示實例,一般為主機名表示 屬于這個主機名下的某個賬戶
realm 就是域 如 ITCAST.CN
nn/cdh0.itcast.cn@ITCAST.CN 就表示
nn 這個賬戶 只能在cdh0機器登錄 ITCAST.CN 這個域
7. 重啟Kerberos server的組件并設置開機自啟
service krb5kdc restart
service kadmin restart
chkconfig krb5kdc on
chkconfig kadmin on
JDK環(huán)境變量配置win10視頻教程【黑馬程序員】