1. 程式人生 > >kafka 增加許可權認證配置

kafka 增加許可權認證配置

一、 版本說明:
     zookeeper版本無要求,kafka必須使用0.9 以後的版本
     本例使用:zookeeper-3.4.10,kafka_2.11-1.0.0
     安裝連結:Linux下kafka安裝和zookeeper環境搭配

二、 zookeeper配置
    2.1  切換至 /usr/zookeeper/zookeeper-3.4.10/conf/ 下
          新建檔案:zk_server_jaas.conf
          檔案內容:
            Server {
                    org.apache.kafka.common.security.plain.PlainLoginModule required
                    username="admin"
                    password="admin-secret"
                    user_kafka="kafka-sec"
                    user_producer="prod-sec";
                    };

         # 註釋: "user_"  接使用者名稱, "=" 後為密碼   (例user_kafka="kafka-sec": 使用者名稱為 kafka,密碼為 kafka-sec  ) 

    2.2   zoo.cfg 檔案配置新增如下配置:
            authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
            requireClientAuthScheme=sasl
            jaasLoginRenew=3600000

    2.3  切換至  /usr/zookeeper/zookeeper-3.4.10/ 下
           新建資料夾: for_sasl
           將以下jar包拷貝到for_sasl資料夾中(jar在 kafka_2.11-1.0.0/libs/ 中查詢, 版本號可以不同,名字相同即可
             kafka-clients-0.10.0.1.jar
             lz4-1.3.0.jar
             slf4j-api-1.7.21.jar
             slf4j-log4j12-1.7.21.jar
             snappy-java-1.1.2.6.jar

    2.4   切換至 /usr/zookeeper/zookeeper-3.4.10/bin/ 下

            zkEnv.sh  檔案新增如下配置
                  for i in "$ZOOBINDIR"/../for_sasl/*.jar;
                  do CLASSPATH="$i:$CLASSPATH"
                  done
                  SERVER_JVMFLAGS=" -Djava.security.auth.login.config=$ZOOCFGDIR/zk_server_jaas.conf "

三、kafka配置
    3.1  切換至 /usr/kafka/kafka_2.11-1.0.0/config/
           新建檔案:kafka_server_jaas.conf
           檔案內容:
               KafkaServer {
                            org.apache.kafka.common.security.plain.PlainLoginModule required
                            username="admin"
                            password="admin"
                            user_admin="admin"
                            user_producer="prod-sec"
                            user_consumer="cons-sec";
                            };

               Client {
                       org.apache.kafka.common.security.plain.PlainLoginModule required
                       username="kafka"
                       password="kafka-sec";
                      };

    3.2  切換至   /usr/kafka/kafka_2.11-1.0.0/config/
          server.properties 檔案新增如下配置:
             # 注意:172.10.10.10   修改為自己本機IP
             listeners=SASL_PLAINTEXT://172.10.10.10:9092
             security.inter.broker.protocol=SASL_PLAINTEXT
             sasl.enabled.mechanisms=PLAIN
             sasl.mechanism.inter.broker.protocol=PLAIN
             authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
             allow.everyone.if.no.acl.found=true

    3.3 切換至 /usr/kafka/kafka_2.11-1.0.0/
        新建檔案:start.sh     (kafka啟動指令碼)
        檔案內容:
            ROOT=$(cd `dirname $0`; pwd)
            export KAFKA_OPTS=" -Djava.security.auth.login.config=$ROOT/config/kafka_server_jaas.conf "
            $ROOT/bin/kafka-server-start.sh -daemon $ROOT/config/server.properties
        修改檔案許可權:
             sudo chmod 777 start.sh

四、啟動
       (若有啟動執行的,請先關閉,重啟)
       1. 啟動zookeeper:
              cd  /usr/zookeeper/zookeeper-3.4.10/bin
              ./zkServer.sh  start

       2. 啟動kafka:
           # 注意:請勿使用 ./bin/kafka-server-start.sh -daemon ./config/server.properties 在終端直接啟動
               cd /usr/kafka/kafka_2.11-1.0.0/
              ./start.sh

       3.驗證啟動:
           jps
            # 如下啟動成功