zookeeper和kafka添加Kerberos認證

zookeeper添加kerberos認證

一個3節點的zk集羣,3個節點的hostname分別是node01,node02,node03,zk版本3.5.4.java

  1. 建立3個節點的principle和keytab。
addprinc -randkey zookeeper/node01
addprinc -randkey zookeeper/node02
addprinc -randkey zookeeper/node03
ktadd -k zookeeper.node01.keytab zookeeper/node01
ktadd -k zookeeper.node02.keytab zookeeper/node02
ktadd -k zookeeper.node03.keytab zookeeper/node03

將zookeeper.nodeX.keytab文件分別放置在3個節點上,例如分別放置在zk的conf/目錄下。 2. 編輯zoo.cfg。 在zoo.cfg文件下增長下面的配置:node

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
  1. 編寫jaas.conf 分別在3個節點的jaas.conf添加zk server的entry。例如node01的:
Server {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/home/jungle/libs/zookeeper-3.5.4-beta/conf/zookeeper.node01.keytab"
  storeKey=true
  useTicketCache=false
  principal="zookeeper/node01";
};
  1. 在zk的conf/目錄下添加一個java.env文件,配置jaas.conf地址,內容以下:
export JVMFLAGS="-Djava.security.auth.login.config=/home/jungle/keytab/jaas.conf"

kafka添加kerberos認證

一個3節點的kafka集羣,3個節點分別是node01,node02,node03,kafka版本2.0.1.apache

  1. 建立3個節點的principle和keytab。
addprinc -randkey kafka/node01
addprinc -randkey kafka/node02
addprinc -randkey kafka/node03
ktadd -k kafka.node01.keytab kafka/node01
ktadd -k kafka.node02.keytab kafka/node02
ktadd -k kafka.node03.keytab kafka/node03

將kafka.nodeX.keytab文件分別放置在3個節點上,例如分別放置在kafka的config/目錄下 2. 編輯server.properties並增長:bootstrap

listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=GSSAPI
sasl.enabled.mechanisms=GSSAPI
sasl.kerberos.service.name=kafka

sasl.kerberos.service.name就是kafka/node01中的kafka zookeeper.connect=node01:2181,node02:2181,node03:2181要用hostname主機名 3. 編寫jaas.conf 分別在3個節點的jaas.conf添加kafka server和zk client的entry。例如node02的:ide

KafkaServer {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/home/jungle/libs/kafka_2.11-2.0.1/config/kafka.node02.keytab"
  storeKey=true
  useTicketCache=false
  principal="kafka/node02";
};
Client {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/home/jungle/libs/kafka_2.11-2.0.1/config/kafka.node02.keytab"
  storeKey=true
  useTicketCache=false
  principal="kafka/node02";
};
  1. 在環境變量中添加
export KAFKA_OPTS=-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/home/jungle/keytab/jaas.conf
  1. 如何使用console-consumer和console-producer 在kafka/config目錄下建立Client.Properties,並添加內容:
security.protocol=SASL_PLAINTEXT
sasl.kerberos.service.name=kafka

使用腳本時用—consumer.config指定該配置,例如:ui

./kafka-console-consumer.sh --bootstrap-server node02:9092 --topic test --consumer.config  ../config/Client.properties

在jaas.conf下添加code

KafkaClient {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/home/jungle/libs/kafka_2.11-2.0.1/config/kafka.node02.keytab"
  storeKey=true
  useTicketCache=false
  principal="kafka/node02";
};

console-producer同理。 6. 如何在ide中發送 在consumer properties中添加一下2個配置:server

security.protocol: SASL_PLAINTEXT
sasl.kerberos.service.name: kafka

在啓動程序的時候指定krb.conf和jaas,例如:-Djava.security.krb5.conf=E:\krb5.conf -Djava.security.auth.login.config=E:\jaas.confip

相關文章
相關標籤/搜索