下面主要介绍Kafka两种认证方式
kafka验证方式:
-
SASL/PLAIN:不能动态添加用户配置文件写死账号密码
-
SASL/SCRAM: 可以动态的添加用户
SASL/PLAIN方式
cd /usr/local/kafka/kafka_2.12-3.0.1/bin/
## 复制一份sasl
cp kafka-server-start.sh kafka-server-start-sasl.sh
在kafka-server-start-sasl.sh 末尾修改配置
exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/usr/local/kafka/kafka_2.12-3.0.1/config/kafka-server-jaas.conf kafka.Kafka "$@"
或者在环境变量vim /etc/profile末尾增加如下配置:
if [ "x$KAFKA_OPTS" ]; then
export KAFKA_OPTS="-Djava.security.auth.login.config=/usr/local/kafka/kafka_2.12-3.0.1/config/kafka-client-jaas.conf"
fi
config目录下增加kafka_server_jaas.conf文件
touch kafka-server-jaas.conf
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin"
user_rex="123456"
user_alice="123456"
user_lucy="123456";
};
进入config目录将server.properties 复制一份改为server-sasl.properties 并添加如下配置:
listeners=SASL_PLAINTEXT://localhost:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=kafka.security.authorizer.AclAuthorizer ## 如果kafka是3.0一下的配置authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer 因为kafka3.0开始已经移除了SimpleAclAuthorizer改用AclAuthorizer 如果还是配置SimpleAclAuthorizer 启动时会报ClassNotFoundException
super.users=User:admin
使用sasl认证启动kafka
./bin/kafka-server-start-sasl.sh -daemon config/server-sasl.properties
SASL/SCRAM方式
创建kafka用户
bin/kafka-configs.sh --zookeeper 127.0.0.1:2181/kafka --alter --add-config 'SCRAM-SHA-256=[password=admin],SCRAM-SHA-512=[password=admin]' --entity-type users --entity-name admin # 系统用户
bin/kafka-configs.sh --zookeeper 127.0.0.1:2181/kafka --alter --add-config 'SCRAM-SHA-256=[password=chan_test],SCRAM-SHA-512=[password=chan_test]' --entity-type users --entity-name chan # 测试用户
可以看到在zk上已经创建了对应的用户信息,并且对密码做了加密
在kafka的config目录下创建jaas文件
touch kafka_server_jaas_scram.conf
vim kafka_server_jaas_scram.conf
KafkaServer{
org.apache.kafka.common.security.scram.ScramLoginModule required
username="admin"
password="admin";
}
# 同时启用SCRAM和PLAIN机制
sasl.enabled.mechanisms=SCRAM-SHA-256,PLAIN
# 为broker间通讯开启SCRAM机制,采用SCRAM-SHA-512算法
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
# broker间通讯使用PLAINTEXT
security.inter.broker.protocol=SAS