当前位置: 首页 > news >正文

zookeeper、kakfa添加用户加密

背景

zookeeper无权限访问到根目录

步骤

  1. 在kafka/config 目录中创建

    vi config/zookeeper_jaas.conf
    
  2. 在zookeeper_jaas.conf中添加

    Server {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="12345"
    user_admin="12345";
    };
    #user_{username}="{password}"
    
  3. zookeeper.properties最后添加配置

    #auth
    authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
    requireClientAuthScheme=sasl
    jaasLoginRenew=3600000
    
  4. 在zookeeper-server-start.sh中添加配置

    根据不同的目录位置进行修改-Djava.security.auth.login.config=/opt/kafka_2.13-3.5.1/config/zookeeper_jaas.conf

    if [ "x$KAFKA_HEAP_OPTS" = "x" ]; thenexport KAFKA_HEAP_OPTS="-Xmx512M -Xms512M -Djava.security.auth.login.config=/opt/kafka_2.13-3.5.1/config/zookeeper_jaas.conf"
    fi
    
  5. 启动zookeeper

    ./zookeeper-server-start.sh -daemon ../config/zookeeper.properties
    
  6. 下面开始设置ACL配置

    1. 登录zookeeper192.168.6.42:2181IP地址根据自己的进行调整

      ./zookeeper-shell.sh 192.168.6.42:2181
      
    2. 添加用户

      addauth digest admin:12345
      addauth digest kafka:12345
      
    3. 设置ACLip:192.168.6.42:cdrwa根据自己的ip地址进行修改

      setAcl / ip:192.168.4.235:cdrwa,ip:127.0.0.1:cdrwa,auth:kafka:cdrwa,auth:admin:cdrwa
      setAcl /consumers ip:192.168.4.235:cdrwa,ip:127.0.0.1:cdrwa,auth:kafka:cdrwa,auth:admin:cdrwa
      
      cdrwa:create: 你可以创建子节点。read: 你可以获取节点数据以及当前节点的子节点列表。write: 你可以为节点设置数据。delete: 你可以删除子节点。admin: 可以为节点设置权限
      
    4. 查看是否配置正确

      getAcl /
      getAcl /consumers 
      
  7. 添加kafka的配置

    vim config/kafka_server_jaas.conf
    
  8. 添加内容

    KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="12345"user_admin="12345";
    };Client {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="12345";
    };
    
  9. 修改config/server.properties

    # AUTHsecurity.inter.broker.protocol=SASL_PLAINTEXT
    sasl.mechanism.inter.broker.protocol=PLAIN
    sasl.enabled.mechanisms=PLAINauthorizer.class.name=kafka.security.authorizer.AclAuthorizer
    allow.everyone.if.no.acl.found=true
    listeners=SASL_PLAINTEXT://0.0.0.0:9092
    advertised.listeners=SASL_PLAINTEXT://:9092#将zookeeper.connect改成zookeeper的地址
    zookeeper.connect=192.168.6.42:2181
    
  10. 调整kafka的启动脚本 kafka-server-start.sh-Djava.security.auth.login.config=/opt/kafka_2.13-3.5.1/config/kafka_server_jaas.conf根据自己的地址进行配置

    if [ "x$KAFKA_HEAP_OPTS" = "x" ]; thenexport KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/opt/kafka_2.13-3.5.1/config/kafka_server_jaas.conf"
    fi
  11. 启动kafka

    ./kafka-server-start.sh -daemon ../config/server.properti
    
  12. 测试

    进入kafka目录,在config目录下创建kafka_client_jaas.conf文件,并写入如下内容。

    KafkaClient {  
    org.apache.kafka.common.security.plain.PlainLoginModule required  username="admin"  password="admin";  
    };
    
  13. 配置提供者认证,修改提供者启动脚本,vi bin/kafka-console-producer.sh

    if [ "x$KAFKA_HEAP_OPTS" = "x" ]; thenexport KAFKA_HEAP_OPTS="-Xmx512M -Djava.security.auth.login.config=/opt/kafka_2.13-3.5.1/config/kafka_client_jaas.conf"
    fi
    exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleProducer "$@"                        
    
  14. 启动消费者

    ./kafka-console-producer.sh --broker-list 192.168.4.235:9092 --topic testTopic --producer-property security.protocol=SASL_PLAINTEXT --producer-property sasl.mechanism=PLAIN
    
  15. 配置消费者认证,修改提供者启动脚本,vi bin/kafka-console-consumer.sh

    if [ "x$KAFKA_HEAP_OPTS" = "x" ]; thenexport KAFKA_HEAP_OPTS="-Xmx512M -Djava.security.auth.login.config=/opt/kafka_2.13-3.5.1/config/kafka_client_jaas.conf"
    fiexec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleConsumer "$@"
    
  16. 启动消费者

    ./kafka-console-consumer.sh --bootstrap-server 192.168.4.235:9092 --topic testTopic --from-beginning --consumer-property security.protocol=SASL_PLAINTEXT --consumer-property sasl.mechanism=PLAIN
    

    有消息输出即为成功

  17. springboot的配置

    spring:kafka:# docker http://192.168.2.202:8080bootstrap-servers: http://192.168.6.42:9092# 配置用户名密码producer:properties:sasl:mechanism: PLAINsecurity:protocol: SASL_PLAINTEXTconsumer:properties:sasl:mechanism: PLAINsecurity:protocol: SASL_PLAINTEXT
    
  18. 在相关的kafkaConfig中增加相关配置

       @Beanpublic KafkaTemplate kafkaTemplate() {Map<String, Object> configs = new HashMap<>();configs.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrap_servers_config);configs.put(ProducerConfig.RETRIES_CONFIG, pro_retry_config);configs.put(ProducerConfig.BATCH_SIZE_CONFIG, batch_size_config);configs.put(ProducerConfig.ACKS_CONFIG, acks_config);configs.put(ProducerConfig.LINGER_MS_CONFIG, linger_ms_config);configs.put(ProducerConfig.BUFFER_MEMORY_CONFIG, buffer_memory_config);configs.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,key_serializer_config);configs.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,value_serializer_config);configs.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, compression_type_config);if (Boolean.valueOf(auth_enabled)) {configs.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, SecurityProtocol.SASL_PLAINTEXT.name());configs.put(SaslConfigs.SASL_MECHANISM, sasl_mechanism);}DefaultKafkaProducerFactory  producerFactory = new DefaultKafkaProducerFactory(configs);return new KafkaTemplate(producerFactory);}
    
  19. 最后在启动脚本中新增一个配置

-Djava.security.auth.login.config=客户端登录文件所在的位置
#eg:
-Djava.security.auth.login.config=/opt/kafka/config/kafka_client_jaas.conf

相关文章:

  • k8s基础命令集合
  • Wake Lock API:保持设备唤醒的利器
  • Oracle阅读Java帮助文档
  • Pytorch-Padding Layers
  • 【定义通讯数据类型】LCM搭建系统通讯
  • 重温react-01
  • Mongodb学习
  • Nginx之HTTP模块详解
  • 【LeetCode 5.】 最长回文子串
  • 主窗体设计
  • 2023年的Top20 AI应用在近一年表现怎么样?
  • Postman如何做接口测试:什么?postman 还可以做压力测试?
  • Windows 服务器Nginx 下载、部署、配置流程(图文教程)
  • 一次基于 rebase 的 PR 提交
  • MEMS:Lecture 18 Feedback
  • JavaScript-如何实现克隆(clone)函数
  • JS 中的深拷贝与浅拷贝
  • 【面试系列】之二:关于js原型
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • iOS 颜色设置看我就够了
  • Javascript Math对象和Date对象常用方法详解
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • 阿里云Kubernetes容器服务上体验Knative
  • 分布式熔断降级平台aegis
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 扑朔迷离的属性和特性【彻底弄清】
  • 设计模式 开闭原则
  • 实战|智能家居行业移动应用性能分析
  • 我是如何设计 Upload 上传组件的
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 在Unity中实现一个简单的消息管理器
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • AI算硅基生命吗,为什么?
  • ​人工智能书单(数学基础篇)
  • (02)vite环境变量配置
  • (175)FPGA门控时钟技术
  • (C++20) consteval立即函数
  • (一)RocketMQ初步认识
  • (转)Windows2003安全设置/维护
  • ****三次握手和四次挥手
  • ***利用Ms05002溢出找“肉鸡
  • *2 echo、printf、mkdir命令的应用
  • .cfg\.dat\.mak(持续补充)
  • .gitignore文件_Git:.gitignore
  • .Net Core和.Net Standard直观理解
  • .net wcf memory gates checking failed
  • .NET 快速重构概要1
  • .NET框架
  • .NET学习全景图
  • .sh 的运行
  • ::前边啥也没有
  • @private @protected @public
  • [383] 赎金信 js
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [AIGC] Java List接口详解