1、KDC创建principal
1.1、创建认证用户
登陆到kdc服务器,使用root或者可以使用root权限的普通用户操作:
# kadmin.local -q “addprinc -randkey hbase/yjt”
# kadmin.local -q “addprinc -randkey zookeeper/yjt”
# kadmin.local -q “addprinc -randkey zkcli/yjt”
其中hbase集群有几台,上面的第一台命令就需要执行几次,每次执行的时候请把yjt修改成你机器对应的主机名
同理,zookeeper也是一样
1.2、生成密钥文件
生成hbase密钥文件
# kadmin.local -q “xst -norankey -k /etc/hbase.keytab hbase/yjt”
生成zookeeper密钥文件
# kadmin.local -q “xst -norankey -k /etc/zk.keytab zookeeper/yjt zkcli/yjt”
拷贝hbase.keytab到所有的hbase集群节点的conf目录下
拷贝zk.keytab到所有zookeeper集群节点的conf目录下
2、zookeeper操作
2.1、创建jaas.conf文件
在zookeeper的conf目录下创建或者修改jaas.conf,没有就创建,配置信息如下:
Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/data1/hadoop/zookeeper/conf/zk.keytab"
storeKey=true
useTicketCache=false
principal="zookeeper/yjt@HADOOP.COM"; #这里注意,如果是多个zookeeper,那么这个principal里面的域名改成对应的主机名,同时在这个server里面,principal必须以zookeeper开头,也就是principal='zookeeper/hostname@xxx.COM',否则会报服务不能找到错误。
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/data1/hadoop/zookeeper/conf/zk.keytab"
storeKey=true
useTicketCache=false
principal="zkcli/yjt@HADOOP.COM";
};
2.2、创建java.env文件
在zookeeper的conf目录下创建或者修改java.env文件,配置信息如下:
export JVMFLAGS="-Djava.security.auth.login.config=/data1/hadoop/zookeeper/conf/jaas.conf"
2.3、修改zoo.cfg文件
添加如下属性:
kerberos.removeHostFromPrincipal=truekerberos.removeRealmFromPrincipal=trueauthProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
2.4、测试zookeeper kerberos
首先启动zookeeper集群,然后使用zkcli -server IP:端口(注意,一定要以这种方式)测试
如下:zkCli.sh -server yjt:2181
在输出的信息中&