CDH5x开启Kerberosle
环境:
服务器:云服务器
环境版本: CDH:5.12
Cloudera Manager:5.12
lilnux: CentOS 7.8
JDK : 1.8.0_144
Yum源已经安装
CDH已经再Master安装: Mysql
要是没安装:
服务端的安装配置
- 查看/etc/hosts 我的内网做映射了,要根据自己实际情况。
最好不要像我这样写,不对。。映射内网ip就好了
2.查看是否安装Kerberos
(1):rpm -qa | grep krb5
(2):卸载自带kerberos
特别注意: 千万不要急着卸载, 先观察自己到底存在哪些包, 上图是我已经安装好 kerberos了, 但是当我再第一次检查是否有kerbkeros的时候,自 带:krb5-libs-1.15.1-37.el7_6.x86_64。这个包千万不能删除!
不过你还是可以使用: yum -y remove krb5 这个命令,来删除自带的kerberos,这个包不会被删除掉,因为他附带这一些依赖
千万不要去网上看一些无脑文章,使用: rpm -e --nodeps krb5-libs.x86_64, 这个命令千千万万不能用,否则,yum不能用 ssh不能用。还要花很长时间来解决。所以这个包不用删除。
3.Server节点安装Kerberos
serveros节点安装相关软件
yum install -y krb5-server krb5-workstation krb5-libs krb5-auth-dialog
出现这个提示则安装成功
查看结果: rpm -qa | grep krb5
修改配置
需要配置的文件有两个为kdc.conf和krb5.conf , 配置只是需要Server服务节点配置,也就是我的master节点。查看krb5的配置文件路径,执行下面命令进行查看:
whereis krb5
1.Krb5文件安装配置。
编辑修改krb5.conf文件,执行命令进行修改 vim /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 = HADOOP.COM
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
udp_preference_limit= 1
pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
#default_realm = HADOOP.COM
#default_ccache_name = KEYRING:persistent:%{uid}
[realms]
HADOOP.COM = {
kdc = master
admin_server = master
}
[domain_realm]
.hadoop.com = HADOOP.COM
hadoop.com = HADOOP.COM
注意:[logging] [libdefaults][realms][domain_realm]的前面一定不能有空格
备注说明:
- default_realm = HADOOP.COM 默认的realm,设置 Kerberos 应用程序的默认领域,必须跟要配置的realm的名称一致。
- 如果您有多个领域,只需向 [realms] 节添加其他的语句。
- ticket_lifetime : 表明凭证生效的时限,一般为24小时。
- renew_lifetime : 表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,对安全认证的服务的后续访问则会失败。
- clockskew :时钟偏差是不完全符合主机系统时钟的票据时戳的容差,超过此容差将不接受此票据。通常,将时钟扭斜设置为 300 秒(5 分钟)。这意味着从服务器的角度看,票证的时间戳与它的偏差可以是在前后 5 分钟内。
- udp_preference_limit= 1:禁止使用 udp 可以防止一个 Hadoop 中的错误
- [realms]:列举使用的 realm。
kdc:代表要kdc的位置。格式是 机器:端口 因为配置了hosts 可以使用Master
admin_server:代表admin的位置。格式是机器:端口 Master(全限定名)
- [default_domain]:代表默认的域名
- [appdefaults]:可以设定一些针对特定应用的配置,覆盖默认配置
2.编辑修改kdc.conf,执行下面命令
修改vim /var/kerberos/krb5kdc/kdc.conf配置
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
HADOOP.COM = {
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
注意:[kdcdefaults] 和 [realms] 前面一定不能有空格
备注说明:
- HADOOP.COM:是设定的realms。名字随意。Kerberos可以支持多个realms,大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。
- master_key_type和 supported_enctypes 默认使用 aes256-cts。JAVA 使用 aes256-cts 验证方式需要安装 JCE 包,见下面的说明。为了简便,你可以不使用 aes256-cts 算法,这样就不需要安装 JCE ,我们这里没有使用。
- acl_file:标注了 admin 的主体权限,使用默认的文件。文件格式是:Kerberos_principal permissions [target_principal] [restrictions]
- supported_enctypes:支持的校验方式。
- admin_keytab:KDC 进行校验的 keytab。
3.上传jce的jar包, 因为我们选择了aes那种的加密方式,所以需要jce的jar包
地址: 链接:https://pan.baidu.com/s/1GV2pO5aHT7Xe37ieWXaK1g
提取码:jsxk
然后上传至 ${JAVA_HOME}/jre/lib/security/ 下覆盖掉原来的 所有机器都配置
4.修改kadm5.cal文件 给管理员实例的全部主体进行授权
备注:
- *代表全部的主体
- /admin 代表admin实例
- @HADOOP.COM代表领域
- 最后个*代表全部权限。
这个授权的意思:就是授予admin实例的全部主体对应HADOOP.COM领域的全部权限。
也就是创建Kerberos主体的时候如果实例为admin,就具有HADOOP.COM领域的全部权限,比如创建如下的主体user1/admin就拥有全部的HADOOP.COM领域的权限。
请特别留意:
- 后续都是为了简便创建principal时候都是以”主体”来称谓,因为我们只配置一个领域那么默认领域不写则为HADOOP.COM。如果存在多个领域必须添加@HADOOP.COM。
- 如果创建模式为:addprinc user1 那么就没有指定实例,默认领域为HADOOP.COM,格式为user1@HADOOP.COM
- 如果创建模式为addprinc user1/user1 那么主体为user1实例为user1,领域为默认领域HADOOP.COM。格式为user1/user1@HADOOP.COM
同步至客户端
scp -r /var/kerberos/ slave1的IP :/var/
scp -r /var/kerberos/ slave2的IP :/var/
scp -r /erc/krb5.conf slave1的IP :/etc/krb5.conf
scp -r /erc/krb5.conf slave2的IP :/etc/krb5.conf
已经免密情况下
创建Kerberos数据库
在Kerberos的Server服务器节点上执行生成Kerberos数据库,也就是master节点
执行过程输入两次Kerberos的密码,注意要记住
输入命令:
kdb5_util create -s -r HADOOP.COM
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'NAMENODE.COM',
master key name 'K/M@HADOOP.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key: 备注请输入密码:123456
Re-enter KDC database master key to verify: 备注请输入密码:123456
确定Kerberos数据库是否创建完成
可以通过查看/var/kerberos/krb5kdc是否生成principal文件,执行下面命令
(可选)重新创建数据库 删除当下的principal文件
rm -rf /var/kerberos/krb5kdc/*principal*
查看是否删除完成,执行下面命令
再次输入命令:
kdb5_util create -s -r HADOOP.COM
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'NAMENODE.COM',
master key name 'K/M@HADOOP.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key: 备注请输入密码:123456
Re-enter KDC database master key to verify: 备注请输入密码:123456
可以通过查看/var/kerberos/krb5kdc是否生成principal文件,执行下面命令
可能遇到问题:创建Kerberos数据库过程可能会在loading random data中等待很长时间
- 原因:因为/dev/random的随机数据产生的很少,可以适当的让网卡传输数据,这样有助于产生随机数据。
- 解决办法:可以重新开启一个窗口执行cat /dev/sda > /dev/urandom命令,加快消耗CPU,增加随机数采集。
创建Kerberos管理员主体/实例并授权
输入: kadmin.local -q "addprinc admin/admin"
Authenticating as principal root/admin@HADOOP.COM with password.
WARNING: no policy specified for admin/admin@HADOOP.COM; defaulting to no policy
Enter password for principal "admin/admin@HADOOP.COM": 备注:输入密码123456
Re-enter password for principal "admin/admin@HADOOP.COM": 备注:输入密码123456
Principal "admin/admin@NAMENODE.COM" created
启动Kerberos并设置开机启动 Centos7操作方法
Server节点启动Kerberos和kadmin服务
- 启动krb5kdc
systemctl start krb5kdc
- 启动 kadmin
systemctl start kadmin
- 加入开机启动
systemctl enable krb5kdc
systemctl enable kadmin
- 查看状态
service krb5kdc status
service kadmin status
检查启动情况
查看krb5kdc启动日志: cat /var/log/krb5kdc.log
正常启动。
查看kadmin启动日志: cat /var/log/kadmind.log
正常启动
Kinit管理员检查
- 通过kinit进行管理员主体检查,执行下面命令,并输入创建管理员主体时的密码
Kinit admin/admin
- 通过klist查看Kerberos管理员主体登录情况,执行下面命令查看
klist
出现上面截图证明kinit管理员主体检查已经正常。
客户端检查
通过其他客户端节点比如slave1节点检查Kerberos服务是否正常,通过运行下面命令
再客户端输入: kadmin admin/admin
备注:到处Kerberos的整个安装配置流程已经完成~
下面全部默认一键继续即可
出现这个安装成功
OK