Kafka部署全攻略——基于SSL的SASL_SCRAM安全认证实现

本文详细介绍了如何在Kafka中实现基于SSL的SASL_SCRAM安全认证,包括Zookeeper和Kafka的配置步骤,以及测试认证的过程。涉及配置文件修改、依赖包导入、用户新增和脚本调整等关键环节。

目录

 Zookeeper配置SASL

新建zoo_jaas.conf文件

配置zookeeper.properties文件(各节点均需修改)

导入依赖包

独立版zookeeper

Kafka集成版zookeeper

修改启动脚本或环境变量脚本(各节点均需修改)

独立版zookeeper

Kafka集成版zookeeper

Kafka配置SASL_SCRAM

新建kafka_server_jaas.conf文件

配置server.properties文件(各节点均需修改)

新增scram用户

修改启动脚本(各节点均需修改)

重启zookeeper及kafka

测试SASL_SCRAM/SSL认证

为主题、生产、消费脚本创建认证配置文件

开始测试


以下以kafka集成zookeeper为例。

本文仅介绍基于以上已开启SSL认证的前提下,追加SASL_PLAIN安全认证的介绍,即SASL_SSL安全认证的实现,其中部分配置与仅开启SASL/PLAIN存在差异。

 Zookeeper配置SASL

新建zoo_jaas.conf文件

  • 进入zookeeper配置目录
cd /opt/tools/kafka_2.13-3.2.1/config
  • 新建zoo_jaas.conf文件
vim zoo_jaas.conf

添加如下内容:

Server {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="rbt@123456"
    user_kafka="kafka@123";
};

  • 说明
    • Server.username、Server.password为 Zookeeper 内部通信的用户名和密码,因此保证每个 zk 节点该属性一致即可
    • Server.user_xxx 中 xxx 为自定义用户名,用于 zkClient 连接所使用的用户名和密码,即为 kafka 创建的用户名
    • 最后一个账号密码配置的末尾,不可缺失“;”分号。即该配置文件中需有两个“;”分号。
  • 复制配置文件到每个节点
scp zoo_jaas.conf root@big2:/opt/tools/kafka_2.13-3.2.1/config

配置zookeeper.properties文件(各节点均需修改)

独立版zookeeper的配置文件为zoo.conf,kafka集成版的配置文件为zookeeper.properties。

  • 添加如下配置项
authProvidential.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
zookeeper.sasl.client=true

导入依赖包

独立版zookeeper

因为使用的权限验证类为:org.apache.kafka.common.security.plain.PlainLoginModule,所以需要导入Kafka相关jar包,kafka-clients相关jar包,在部署kafka服务下的libs目录中可以找到,根据kafka不同版本,相关jar包版本会有所变化。所需要jar包如下,在zookeeper下创建目录zk_sasl_lib将jar包放入(目录名与位置可以随便,后续引用指定即可)

 

  • 拷贝jar文件到zk_sasl_lib目录

 

  • 编辑zookeeper环境变量脚本
vim bin/zkEnv.sh

添加如下内容:

for i in /apps/apache-zookeeper-3.8.1-bin/zk_sasl_lib/*.jar;
do
    CLASSPATH="$i:$CLASSPATH"
done

Kafka集成版zookeeper

原生具备,无需配置。

修改启动脚本或环境变量脚本(各节点均需修改)

修改启动脚本或环境变量脚本,使之加载zoo_jaas.conf文件

独立版zookeeper

  • 修改环境变量脚本
/opt/too
### Kafka Kraft 模式下 SASL_SSLSCRAM 认证的使用方法及相关配置 #### 1. 环境准备 在开始配置之前,需要确保已经安装了 Kafka,并且集群处于 Kraft 模式。Kraft 模式是 Kafka 从 3.0 版本开始引入的无 ZooKeeper 模式。 #### 2. 生成 SCRAM 凭证 SCRAM 凭证用于用户认证,可通过 `kafka-configs.sh` 命令生成。凭证信息全局集群共享,仅需在任一节点执行一次,不需要每台机器分别执行。以下是创建一个名为 `alice` 的用户的示例命令: ```bash bin/kafka-configs.sh --bootstrap-server localhost:9092 --alter --add-config 'SCRAM-SHA-256=[password=your_password],SCRAM-SHA-512=[password=your_password]' --entity-type users --entity-name alice ``` #### 3. Broker 端配置 在 `server.properties` 文件中进行以下配置: - **启用 SASL_SSL 协议** ```properties listeners=SASL_SSL://:9092 advertised.listeners=SASL_SSL://your_hostname:9092 ``` - **配置 SASL 机制** ```properties security.inter.broker.protocol=SASL_SSL sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256 sasl.enabled.mechanisms=SCRAM-SHA-256 ``` - **配置 SSL 相关参数** ```properties ssl.keystore.location=/path/to/keystore.jks ssl.keystore.password=keystore_password ssl.key.password=key_password ssl.truststore.location=/path/to/truststore.jks ssl.truststore.password=truststore_password ``` - **配置 JAAS 文件** 创建一个 JAAS 文件,例如 `kafka_server_jaas.conf`,内容如下: ```plaintext KafkaServer { org.apache.kafka.common.security.scram.ScramLoginModule required username="alice" password="your_password"; }; ``` 并在 `server.properties` 中指定该文件的路径: ```properties sasl.jaas.config=file:/path/to/kafka_server_jaas.conf ``` #### 4. 客户端配置 对于 Kafka 客户端(如生产者和消费者),需要在配置文件中进行相应的配置。以下是一个 Java 生产者的配置示例: ```java import org.apache.kafka.clients.producer.ProducerConfig; import org.apache.kafka.common.config.SaslConfigs; import org.apache.kafka.common.config.SslConfigs; import java.util.Properties; public class KafkaProducerConfig { public static Properties getConfig() { Properties props = new Properties(); props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "your_hostname:9092"); props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); // 配置 SASL_SSL props.put(ProducerConfig.SECURITY_PROTOCOL_CONFIG, "SASL_SSL"); props.put(SaslConfigs.SASL_MECHANISM, "SCRAM-SHA-256"); props.put(SaslConfigs.SASL_JAAS_CONFIG, "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"alice\" password=\"your_password\";"); // 配置 SSL props.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, "/path/to/truststore.jks"); props.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, "truststore_password"); return props; } } ``` #### 5. 验证配置 启动 Kafka 集群和客户端,尝试发送和接收消息,验证配置是否生效。 ### 总结 通过以上步骤,可以在 Kafka Kraft 模式下成功配置并使用 SASL_SSLSCRAM 认证。关键步骤包括生成 SCRAM 凭证、配置 Broker 端和客户端的认证信息以及 SSL 参数。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值