在kafka的身份认证方法一(SASL/PLAIN)中,说明了如何给kafka添加简单身份认证,但是用户名密码是在启动zookeeper和kafka的时候 通过静态文件,就注册到内存中,因此无法动态添加用户名密码。
正如Apache Kafka security_sasl_scram所说的,The default SCRAM implementation in Kafka stores SCRAM credentials in Zookeeper。SCRAM资格证明是存储在zookeeper中,而非文件中,
这为动态添加身份认证的凭据:用户名密码,提供了可能。
目的:
producer/consumer到broker端连接,通过简单的用户名密码作身份认证,这些用户名密码可以动态的添加、删除。
步骤:
0)利用kafka提供的接口kafka-config.sh把client端连broker端的用户名密码都添加到 zookeeper中备用,包含普通用户和admin用户
1)--6)类似与SASL/PLAIN的配置,配置broker端和producer/consumer端,并且使得properties的值通过vm argument的方式,传给kafka和zookeeper。
7)动态删除这些用户。
8)使用kafka提供的接口,对已有用户做权限控制。
参考: