适用于kafka_2.11-1.1.1版本
第1步
将kafka_client_jaas.conf/kafka_server_jaas.conf/kafka_zoo_jaas.conf三個檔案放入kafka的config檔案夾中,檔案中配置使用者,admin使用者必須配置。
- kafka_client_jaas.conf内容如下
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin";
};
- kafka_server_jaas.conf内容如下
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin"
user_test="test#2018";
};
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin";
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin";
};
- kafka_zoo_jaas.conf内容如下
ZKServer{
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin";
};
第2步
修改kafka的bin檔案夾中的zookeeper-server-start.sh,
添加:
export KAFKA_OPTS=" -Djava.security.auth.login.config=/data/application/kafka_2.11-1.1.1/config/kafka_zoo_jaas.conf -Dzookeeper.sasl.serverconfig=ZKServer"
第3步
修改kafka的bin檔案夾中的kafka-server-start.sh,
添加:
export KAFKA_OPTS=" -Djava.security.auth.login.config=/data/application/kafka_2.11-1.1.1/config/kafka_server_jaas.conf"
第4步
修改kafka的bin檔案夾中的kafka-console-producer.sh
添加:
export KAFKA_OPTS=" -Djava.security.auth.login.config=/data/application/kafka_2.11-1.1.1/config/kafka_client_jaas.conf"
第5步
修改kafka的bin檔案夾中的kafka-console-consumer.sh
添加:
export KAFKA_OPTS=" -Djava.security.auth.login.config=/data/application/kafka_2.11-1.1.1/config/kafka_client_jaas.conf"
第6步
修改kafka的config檔案夾中的consumer.properties
添加:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
第7步
修改kafka的config檔案夾中的producer.properties
添加:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
第8步
修改kafka的config檔案夾中的zookeeper.properties
添加:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
第9步
修改kafka的config檔案夾中的server.properties
修改:
listeners=SASL_PLAINTEXT://192.168.1.115:9092
添加:
#使用的認證協定
security.inter.broker.protocol=SASL_PLAINTEXT
#SASL機制
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
#完成身份驗證的類
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
#如果沒有找到ACL(通路控制清單)配置,則允許任何操作。
#allow.everyone.if.no.acl.found=true
super.users=User:admin
delete.topic.enable=true
auto.create.topics.enable=false
第10步
啟動zookeeper服務
執行
sh bin/zookeeper-server-start.sh config/zookeeper.properties
第11步
啟動kafka服務
執行
sh bin/kafka-server-start.sh config/server.properties
第12步
檢視topic清單
執行
sh bin/kafka-topics.sh --list --zookeeper localhost:2181
第13步
建立新的topic
執行
sh bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 16 --topic test
第14步
給admin使用者授權
執行
sh bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:admin --group=* --topic=*
第15步
給使用者test授予某個topic的讀寫的權限
執行
sh bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:test --operationRead --operationWrite --topic test --group=*
說明:
控制讀寫:–operationRead–operationWrite
控制消費組:不控制組 --group=*,指定消費組 --grouptest-comsumer-group
第16步
移除權限
執行
sh bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --remove --allow-principal User:test --allow-host 192.168.1.101 --operationRead --operationWrite --topic test
第17步
列出topic為test的所有權限賬戶
執行
sh bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --list --topic test
第18步
測試啟動消費者
執行
sh bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.115:9092 --topic test --from-beginning --consumer.config config/consumer.properties
第19步
測試啟動生産者
執行
sh bin/kafka-console-producer.sh --broker-list 192.168.1.115:9092 --topic test --producer.config config/producer.properties
第20步
啟用kafka-manager,需要使用最新版本1.3.3.21,
連結:https://pan.baidu.com/s/1H6rMOdKrEJ59pivgCkSdjg
提取碼:vreq
第21步
将my-jaas.conf移到kafa-manager的conf檔案夾中
my-jaas.conf内容如下:
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin";
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin";
};
第22步
修改kafa-manager的conf檔案夾中的consumer.properties,
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
第23步
修改kafa-manager的conf檔案夾中的application.conf
kafka-manager.consumer.properties.file=(上面修改的consumer.properties)
第24步
啟動kafka-manager
bin/kafka-manager -Djava.security.auth.login.config=conf/my-jaas.conf -Dconfig.file=conf/application.conf