zookeeper集成kerberos认证

1. 生成zookeeper的keytab文件

#添加zookeeper的principal
kadmin.local -q "addprinc -randkey zookeeper/$hostname@REALM.COM"
#生成zookeeper的keytab
kadmin.local -q "xst -kt /tmp/keytabs/zookeeper.keytab zookeeper/$hostname@REALM.COM"

生成的zookeeper.keytab就在/tmp/keytabs路径下,我们需要在集群每个节点提前创建一个存放keytab证书的目录。注意,集群中安装zookeeper的每个节点都需要创建对应的principal,即将$hostname替换为对应节点的hostname即可。生成keytab时,可以将所有节点的principal的密钥生成到一个keytab中,也可以每个节点单独生产一个keytab。然后将生成的keytab证书发送到对应节点的 /tmp/keytabs 目录下。注意,其他用户如果对该文件有读权限,就可以冒充 keytab 中指定的用户身份访问集群中的服务,所以 keytab 文件需要确保只对 owner(我这里的owner是hadoop用户) 有读权限。

#修改keytab存放目录的用户和用户组
chown -R hadoop:hadoop /tmp/keytabs/zookeeper.keytab
#修改zookeeper.keytab证书的权限为500
chmod 500 /tmp/keytabs/zookeeper.keytab

2. zookeeper配置kerberos认证

在$ZOOKEEPER_HOME/conf/zoo.cfg里面添加以下内容:

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
kerberos.removeHostFromPrincipal=true
kerberos.removeRealmFromPrincipal=true

在$ZOOKEEPER_HOME/conf下创建zookeeper_jaas.conf,并在里面添加以下内容:

Server {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    useTicketCache=false
    keyTab="/etc/security/keytabs/zookeeper.keytab" #keytab证书的位置
    principal="zookeeper/$hostname@REALM.COM";
};

在$ZOOKEEPER_HOME/conf下创建zookeeper_client_jaas.conf,并在里面添加以下内容:

Client {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=false
    useTicketCache=true;
};

在$ZOOKEEPER_HOME/conf/java.env里面添加以下内容:

export SERVER_JVMFLAGS="$SERVER_JVMFLAGS -Djava.security.auth.login.config=$ZOOKEEPER_HOME/conf/zookeeper_jaas.conf"
export CLIENT_JVMFLAGS="$CLIENT_JVMFLAGS -Djava.security.auth.login.config=$ZOOKEEPER_HOME/conf/zookeeper_client_jaas.conf"

重启每个节点的zookeeper:

$ZOOKEEPER_HOME/bin/zkServer.sh start

查看zookeeper状态:

$ZOOKEEPER_HOME/bin/zkServer.sh status

连接zookeeper的Client:

$ZOOKEEPER_HOME/bin/zkCli.sh -server $hostname:2181
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值