zookeeper配置kerberos

说明

zk自3.4.10开始存在两种kerberos认证方式

  1. client-server之间

    client到server之间的认证是允许匿名用户登录查询的,跟sasl认证用户区别在于acl上(acl是谁创建谁能删除,其他用户不行,获取方式getAcl 路径查看)

  2. server-server之间

client-server认证配置

  1. 生成keytab文件

    变量qabb-qa-hadoop3.h.qi-inc.com修改成各自的hostname -f的名字

    kadmin -w qaqa -p kadmin/admin -q 'addprinc -randkey zookeeper/qabb-qa-hadoop3.h.qi-inc.com'
    mkdir /data/keytab/zk
    kadmin -w qaqa -p kadmin/admin -q 'ktadd -k /data/keytab/zk/zk-server.keytab zookeeper/qabb-qa-hadoop3.h.qi-inc.com'
    chmod 755 -R /data/keytab/zk

  2. 修改zoo.cfg配置

    authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
    jaasLoginRenew=3600000
    kerberos.removeHostFromPrincipal=true
    sasl.enabled.mechanisms=GSSAPI

    requireClientAuthScheme=sasl

  3. 新增jaas.conf文件

    把server和client的认证信息放在一起

    变量qabb-qa-hadoop1.h.qi-inc.com修改成各自的hostname -f的名字

    Server {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    keyTab="/data/keytab/zk/zk-server.keytab"
    storeKey=true
    useTicketCache=false
    principal="zookeeper/qabb-qa-hadoop1.h.qi-inc.com";
    };
    Client {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    keyTab="/data/keytab/zk/zk-cli.keytab"
    storeKey=true
    useTicketCache=false
    principal="zkcli/qabb-qa-hadoop1.h.qi-inc.com";
    };

  4. 修改环境变量

    bin/zkServer.sh

    新增

    export JVMFLAGS="-Djava.security.auth.login.config=/opt/zookeeper/conf/jaas.conf -Dzookeeper.allowSaslFailedClients=false"
    

    conf/java.env

    更新

    export JVMFLAGS="-server -Xms2g -Xmx2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:SurvivorRatio=8 -Xss256k -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled -XX:CMSMaxAbortablePrecleanTime=5000 -XX:CMSInitiatingOccupancyFraction=80 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/zookeeper/ -verbose:gc -Xloggc:/data/logs/zookeeper/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7777 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false ${JVMFLAGS}"
    

    注意新增的变量是不是带入进程启动参数

    bin/zkCli.sh

    新增

    export CLIENT_JVMFLAGS="-Djava.security.auth.login.config=/opt/zookeeper/conf/jaas.conf"
    

你可能感兴趣的:(zookeeper配置kerberos)