首頁(yè)技術(shù)文章正文

如何搭建Kerberos環(huán)境?

更新時(shí)間:2021-09-03 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

按照環(huán)境準(zhǔn)備中的設(shè)定,cdh0 cdh1 cdh2 均作為Kerberos 的客戶端, cdh3作為Kerberos的服務(wù)端

搭建Kerberos Server

以下操作運(yùn)行在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 域:表示一個(gè)公司或者一個(gè)組織。邏輯上的授權(quán)認(rèn)證范圍

比如,某個(gè)認(rèn)證賬戶是屬于某個(gè)域下的,跨域賬戶不通用

域和FQDN的配置很像,使用大寫(xiě),本次演示使用ITCAST.CN 來(lái)標(biāo)記域

其中:

  • logging 塊配置日志相關(guān)

  • libdefaults塊配置默認(rèn)的設(shè)置,包括ticket的生存周期等

  • realms 是域的配置,可以配置多個(gè)realm,本次演示只配置一個(gè) 即是 ITCAST.CN

  • domain_realm 是 Kerberos內(nèi)的域 和 主機(jī)名的域的一個(gè)對(duì)應(yīng)關(guān)系

         .itcast.cn 類似 *.itcast.cn 表示如cdh0.itcast.cn cdh1.itcast.cn 等均是ITCAST.CN 這個(gè)realm

         .itcast.cn 表示 itcast.cn 這個(gè)主機(jī)名也是 ITCAST.CN 這個(gè)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 的一些配置對(duì)應(yīng)的文件

kerberos : admin賬戶的 keytab 本地路徑

keytab : 登錄憑證,有了這個(gè)相當(dāng)于直接有了 ticket , 可以免密直接登錄某個(gè)賬戶,所以這個(gè)文件很重要

在一些企業(yè)的配置中,對(duì)于用戶的配置,就是直接發(fā)放給用戶對(duì)應(yīng)的 keytab 文件,用戶有了這個(gè)文件就能訪問(wèn)對(duì)應(yīng)的資源

就類似于 ssh 中的 登錄私鑰一樣 有了私鑰就能直接登錄機(jī)器

這個(gè)文件就是一把鑰匙,能開(kāi)門(mén)的

這個(gè)配置文件內(nèi):設(shè)置了對(duì)于server的一些重要配置

比如:

kdc 的端口

以及ITCAST.CN這個(gè)域中的 acl file 文件路徑(下一步設(shè)置它)

admin賬戶的 keytab

支持的加密方法等

4. 配置 /var/kerberos/krb5kdc/kadm5.acl

填入 */admin@ITCAST.CN        *

其中 */admin 是Kerberos中的賬戶形式

如賬戶 rm/cdh0.itcast.cn@ITCAST.CN 表示 在 cdh0機(jī)器上的 resourcemanager賬戶,這個(gè)賬戶屬于ITCAST.CN這個(gè)域

最后的 * 表示 符合 */admin的賬戶擁有所有權(quán)限


這一步也就是配置了admin的規(guī)則 如 admin/ admin@ITCAST.CN 就擁有ITCAST.CN 域內(nèi)的全部權(quán)限

5. 初始化Kerberos的數(shù)據(jù)庫(kù)

輸入: kdb5_util create -s -r ITCAST.CN

其中 ITCAST.CN 是對(duì)應(yīng)的域,如果你的不同請(qǐng)修改

然后命令要求設(shè)置數(shù)據(jù)庫(kù)master的密碼,要求輸入兩次,輸入 krb5kdc 即可

這樣得到 數(shù)據(jù)庫(kù)master賬戶: K/M@ITCAST.CN , 密碼: krb5kdc

6. 創(chuàng)建ITCAST.CN 域內(nèi)的管理員

執(zhí)行:kadmin.local 進(jìn)入 kerberos 的 admin 命令行界面

# 輸入如下內(nèi)容,添加一個(gè)用戶
addprinc root/admin@ITCAST.CN
# 要求輸入密碼,輸入root作為密碼(可自行設(shè)置)
# 上面的賬戶就作為ITCAST.CN的管理員賬戶存在 (滿足 */admin@ITCAST.CN 的規(guī)則 擁有全部權(quán)限)
# 再創(chuàng)建一個(gè) 測(cè)試的管理員用戶
addprinc krbtest/admin@ITCAST.CN # 同樣滿足 */admin@ITCAST.CN 密碼設(shè)置為krbtest
# 查看當(dāng)前擁有的所有用戶
listprincs

名詞解釋: principal

可以當(dāng)作是用戶的意思 一個(gè)principal由3個(gè)部分組成,如下:

nn/cdh0.itcast.cn@ITCAST.CN

也就是 account/instance@realm

其中account 表示賬戶名 或者服務(wù)類型

instance表示實(shí)例,一般為主機(jī)名表示 屬于這個(gè)主機(jī)名下的某個(gè)賬戶

realm 就是域 如 ITCAST.CN

nn/cdh0.itcast.cn@ITCAST.CN 就表示

nn 這個(gè)賬戶 只能在cdh0機(jī)器登錄 ITCAST.CN 這個(gè)域

7. 重啟Kerberos server的組件并設(shè)置開(kāi)機(jī)自啟

service krb5kdc restart

service kadmin restart
chkconfig krb5kdc on
chkconfig kadmin on








猜你喜歡:

JDK環(huán)境變量配置win10視頻教程【黑馬程序員】

怎樣安裝Eclipse?怎樣啟動(dòng)Eclipse開(kāi)發(fā)環(huán)境?

在Postman中如何設(shè)置全局變量和環(huán)境變量?

黑馬程序員python大數(shù)據(jù)培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!