更新时间:2021-09-03 来源:黑马程序员 浏览量:
按照环境准备中的设定,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
填入以下内容:
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 域:表示一个公司或者一个组织。逻辑上的授权认证范围
比如,某个认证账户是属于某个域下的,跨域账户不通用
域和FQDN的配置很像,使用大写,本次演示使用ITCAST.CN 来标记域
其中:
logging 块配置日志相关
libdefaults块配置默认的设置,包括ticket的生存周期等
realms 是域的配置,可以配置多个realm,本次演示只配置一个 即是 ITCAST.CN
domain_realm 是 Kerberos内的域 和 主机名的域的一个对应关系
.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 , 可以免密直接登录某个账户,所以这个文件很重要
在一些企业的配置中,对于用户的配置,就是直接发放给用户对应的 keytab 文件,用户有了这个文件就能访问对应的资源
就类似于 ssh 中的 登录私钥一样 有了私钥就能直接登录机器
这个文件就是一把钥匙,能开门的
这个配置文件内:设置了对于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的账户拥有所有权限
这一步也就是配置了admin的规则 如 admin/ admin@ITCAST.CN 就拥有ITCAST.CN 域内的全部权限
5. 初始化Kerberos的数据库
输入: kdb5_util create -s -r ITCAST.CN
其中 ITCAST.CN 是对应的域,如果你的不同请修改
然后命令要求设置数据库master的密码,要求输入两次,输入 krb5kdc 即可
这样得到 数据库master账户: K/M@ITCAST.CN , 密码: krb5kdc
6. 创建ITCAST.CN 域内的管理员
执行:kadmin.local 进入 kerberos 的 admin 命令行界面
# 输入如下内容,添加一个用户 addprinc root/admin@ITCAST.CN # 要求输入密码,输入root作为密码(可自行设置) # 上面的账户就作为ITCAST.CN的管理员账户存在 (满足 */admin@ITCAST.CN 的规则 拥有全部权限) # 再创建一个 测试的管理员用户 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