kafka消息加密(SASL/PLAIN)

kafka消息加密(SASL/PLAIN)

具体的配置方式官网已经说的很清楚了(尽量去官网看)
官网配置
分为以下几个步骤

  • 1、 在conf文件目录下添加文件kafka_server_jaas.conf(文件目录 文件名随意)内容如下
KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="admin-secret"
    user_admin="admin-secret"
    user_alice="alice-secret";
};

第一行 暂时不清楚干嘛
第二行 客户端连接的时候 可以使用这个用户名admin
最后两行的意思是 使用admin 密码得是 admin-secret 使用alice 密码得是alice-secret
至于如何扩展应该知道了

  • 2、 修改配置文件

一般启动命令后面 会指定配置文件 一般是server.properties 也可以自定义 我们以它为例
添加如下配置

 listeners=SASL_SSL(SASL_PLAINTEXT)://host.name:port
 security.inter.broker.protocol=SASL_SSL(SASL_PLAINTEXT)
 sasl.mechanism.inter.broker.protocol=PLAIN
 sasl.enabled.mechanisms=PLAIN

这里要将原来的 listeners改为上面的样子同时协议要保持一致

  • 3、 修改启动文件

win下和liunix会有些许不同 但是修改的文件的文件名都是一样的kafka-run-class
找到最下方(我的是win)

set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %*
rem echo.
rem echo %COMMAND%
rem echo.
%COMMAND%

添加

set KAFKA_SASL_OPTS=-Djava.security.auth.login.config=D:/myprogram/kafka/config/kafka_server_jaas.conf
set后面的名字随便起
然后
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% %KAFKA_SASL_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %*
在原来的COMMAND 里面把KAFKA_SASL_OPTS这个加进去 加到-cp的前面

上面的三步处理完 你的kafka服务就可以启动了


Java客户端配置

这边要做的就很少了 只要在配置文件里加上如下配置就可以了

 spring:
  kafka:
    bootstrap-servers: 127.0.0.1:9092
    consumer:
      group-id: tst-1
      auto-offset-reset: earliest
      properties:
        security.protocol: SASL_PLAINTEXT
        sasl.mechanism: PLAIN
        #sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required  username="admin"  password="admin-secret";
        sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required  username="alice" password="alice-secret";

对上面的配置进行简单的说明
group-id 这个在启用机密后 就必须配置了 不然会报错
@KafkaListener annotation; a group.id is required when group management is used.
这个我觉得应该是服务器要识别这个消费者吧 用id标识
security.protocol: SASL_PLAINTEXT
sasl.mechanism: PLAIN
上面的这两个要和服务器端使用的保持一致
最后的这个配置 sasl.jaas.config 后面的值一定要用分号结尾 另外这个值也可以保存到文件中 kafka.client.conf

KafkaClient {
 com.sun.security.auth.module.Krb5LoginModule required
 useKeyTab=true
 storeKey=true
 keyTab="/etc/security/keytabs/kafka_client.keytab"
 principal="[email protected]";
};

然后在使用jvm参数
-Djava.security.auth.login.config=…/kafka.client.conf也是可以的

另外还有一条
同一个用户名和密码 可以在多个java客户端使用

猜你喜欢

转载自blog.csdn.net/zhaoyu_nb/article/details/84324400