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

docker安装kafka并使用SASL 进行身份验证

在 Docker 中安装 Kafka 并配置 SASL(Simple Authentication and Security Layer) 进行身份验证,能够确保 Kafka 集群的安全性。SASL 是一种常见的认证机制,Kafka 支持多种 SASL 协议,常见的有:

  • SASL/PLAIN:使用用户名和密码进行简单认证。
  • SASL/SCRAM:比 PLAIN 更安全,使用加密的存储机制。
  • SASL/GSSAPI (Kerberos):使用 Kerberos 进行安全认证。

在本示例中,我们将使用 SASL/PLAIN 配置 Kafka,并通过 Docker 运行 Kafka。

步骤 1:准备 Docker 环境

确保你已经安装了 Docker,并且拉取了 Kafka 和 Zookeeper 的镜像。

docker pull wurstmeister/zookeeper 
docker pull wurstmeister/kafka

步骤 2:配置 Zookeeper 和 Kafka 使用 Docker-Compose

我们将使用 docker-compose.yml 文件来配置 Kafka 和 Zookeeper。你可以使用如下的 docker-compose.yml 文件。

services:
  zookeeper:
    image: wurstmeister/zookeeper
    volumes:
      - ./zookeeper/zookeeper_jaas.conf:/opt/zookeeper-3.4.13/zookeeper_jaas.conf
      - ./zookeeper/zoo.cfg:/opt/zookeeper-3.4.13/conf/zoo.cfg
    container_name: zookeeper
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
      SERVER_JVMFLAGS: -Djava.security.auth.login.config=/opt/secrets/zookeeper_jaas.conf
    ports:
      - 2181:2181
    restart: always
  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    volumes:
      - ./secrets/:/opt/secrets/
    environment:
      KAFKA_BROKER_ID: 0
      KAFKA_ADVERTISED_LISTENERS: SASL_PLAINTEXT://localhost:9092
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_LISTENERS: SASL_PLAINTEXT://0.0.0.0:9092
      KAFKA_SECURITY_INTER_BROKER_PROTOCOL: SASL_PLAINTEXT
      KAFKA_PORT: 9092
      KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN
      KAFKA_SASL_ENABLED_MECHANISMS: PLAIN
      KAFKA_AUTHORIZER_CLASS_NAME: kafka.security.auth.SimpleAclAuthorizer
      KAFKA_SUPER_USERS: User:admin
      KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true" #设置为true,ACL机制为黑名单机制,只有黑名单中的用户无法访问,默认为false,ACL机制为白名单机制,只有白名单中的用户可以访问
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_HEAP_OPTS: "-Xmx512M -Xms16M"
      KAFKA_OPTS: -Djava.security.auth.login.config=/opt/secrets/server_jaas.conf

步骤 3:配置 JAAS 文件

Kafka的 JAAS 配置(kafka_server_jaas.conf

Kafka 的 SASL 需要通过 Java Authentication and Authorization Service (JAAS) 配置认证机制。你需要创建 kafka_server_jaas.conf 文件,并指定认证的用户名和密码。

touch kafka_server_jaas.conf

kafka_server_jaas.conf 中添加以下内容:

KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="123456"  
    user_admin="123456";
};

KafkaClient {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="123456";
};
  • KafkaServer: 定义了 Kafka 服务器的认证模块。
  • usernamepassword: 为 Kafka 自己的身份信息,用于 Broker 之间的认证。
  • user_admin="admin-secret"user_user1="user1-secret":定义了允许连接 Kafka 的用户及其密码(例如 adminuser1)。
  • Client:用于 Kafka 作为 Zookeeper 客户端时的身份验证配置。
Zookeeper 的 JAAS 配置 (zookeeper_jaas.conf)

Zookeeper 也需要配置 SASL 认证。创建 zookeeper_jaas.conf 文件:

Client {
    org.apache.zookeeper.server.auth.DigestLoginModule required
    username="admin"
    password="123456";
};


Server {
    org.apache.zookeeper.server.auth.DigestLoginModule required
    username="admin"
    password="123456"
    user_admin="123456";
};

步骤 4. 启动 Kafka 和 Zookeeper 服务

使用以下命令启动 Kafka 和 Zookeeper:

docker-compose up -d

此命令将以后台模式启动所有服务。你可以使用 docker ps 命令确认容器是否启动成功。

步骤 5. 测试 Kafka 和 SASL 认证

5.1. 使用 Kafka CLI 工具验证

Kafka 启动后,可以通过 Kafka 自带的命令行工具来测试 SASL 认证是否生效。

首先,创建一个主题:

docker exec -it <kafka-container-id> kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --command-config /opt/secrets/server_jaas.conf

接着,验证生产者和消费者是否正常工作:

生产消息:

docker exec -it <kafka-container-id> kafka-console-producer --broker-list localhost:9093 --topic test-topic --producer.config /etc/kafka/kafka_server_jaas.conf

消费消息:

docker exec -it <kafka-container-id> kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning --consumer.config /opt/secrets/server_jaas.conf

通过 --producer.config--consumer.config 参数指定使用 SASL 认证配置。

步骤 6. 验证日志

检查 Kafka 和 Zookeeper 的日志,确认是否有身份认证相关的错误:

docker logs <kafka-container-id> docker logs <zookeeper-container-id>

确保没有身份验证失败的错误信息。

总结

通过上述步骤,你可以使用 Docker 安装 Kafka 和 Zookeeper 并配置 SASL 认证机制。这个配置将确保 Kafka 和 Zookeeper 的通信通过 SASL/PLAIN 认证进行。通过 Docker Compose 可以轻松启动和管理 Kafka 集群,并保证高效的部署。


http://www.kler.cn/a/354239.html

相关文章:

  • set的使用
  • 上传文件(vue3)
  • SPL06 基于stm32F103 HAL库驱动(软件模拟IIC)
  • Linux中Mysql5.7主从架构(一主多从)配置教程
  • microk8s使用
  • 如何在window 使用 conda 环境下载大模型
  • 无人机组装、维护、飞行技术全能培训详解
  • WebGl 使用缓冲区对象绘制多个点
  • 建造者模式(C++)
  • MySQL日期类型选择建议
  • FPGA学习-将modelsim中的波形数据保存到TXT文件方便MATLAB画图分析
  • 023 elasticsearch查询数据 高亮 分页 中文分词器 field的数据类型
  • 【布隆过滤器】
  • 在生产制造领域,可视化大屏的作用可以说无可替代。
  • 用Java爬虫API,轻松获取taobao商品SKU信息
  • C++_Stack和Queue的使用及其模拟实现
  • vue-vben-admin 首页加载慢优化 升级vite2到vite3
  • Qt-系统处理鼠标相关事件(57)
  • 阿里巴巴系列数据库
  • Halcon 使用二维像素分类对图像进行分割
  • Linux期末考试简答题题库
  • Ajax:原生ajax、使用FormData的细节问题,数据的载体
  • C#Process进程的使用,以及对ProcessInfo中所有的参数详细记录
  • java中,深克隆和浅克隆怎么用,有什么应用场景?-----面试题分享
  • 对比长安链、FISCO BCOS、蚂蚁链
  • [实时计算flink]作业开发上线流程及规范