[Kafka with kraft] SASL_PLAINTEXT认证

本文基于kafka3.3.1使用kraft作为仲裁,进行测试,kafka with zookeeper使用也是一样的。

修改服务器配置

1.创建kafka_server_jaas.conf文件,写入如下内容

KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="admin-sec"
    user_admin="admin-sec"
    user_producer="prod-sec"
    user_consumer="cons-sec";
};
  • username: 定义了一个公共的用户名密码,用于节点间通信

  • user_xxx: 自定义用户,主要用于客户端连接kafka,所以可以使用的用户必须在此定义。等号后面是密码,xxx是用户名。格式不能错。

  • 注意倒数第一行和倒数第二行都有一个分号

2.修改kafka-server-start.sh启动脚本的最后一行,将上述文件作为参数传递个kafka:exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/usr/local/kafka/config/kafka_server_jaas.conf kafka.Kafka "$@"。注意修改文件路径。

3.修改 kafka 配置文件下的server.properties

# 这两行主要是修改协议
listeners=SASL_PLAINTEXT://0.0.0.0:9193 
advertised.listeners=SASL_PLAINTEXT://12.120.20.3:9092

# inter.broker.listener.name=PLAINTEXT # 如果这一行默认是开启的注释掉这一行

# 增加下面四行配置
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
allow.everyone.if.no.acl.found=true

4.重启kafka节点

修改控制台生产者消费者配置

这一节主要配置控制台生产者和消费者。主要用于测试,如果直接用程序调试这一节可以跳过。

5.消费者新建jaas文件kafka_client_consumer_jaas.conf

KafkaClient {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="consumer"
    password="cons-sec";
};

6.生产者新建jaas文件kafka_client_producer_jaas.conf

KafkaClient {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="producer"
    password="prod-sec";
};

7.修改生产者客户端脚本kafka-console-producer.sh,指定配置文件.注意文件路径

exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/data/users/yulei/kafka_2.12-3.3.1/config/kraft/kafka_client_producer_jaas.conf kafka.tools.ConsoleProducer "$@"

8.修改消费者客户端脚本kafka-console-consumer.sh

exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=/data/users/yulei/kafka_2.12-3.3.1/config/kraft/kafka_client_consumer_jaas.conf kafka.tools.ConsoleConsumer "$@"

9.创建生产者配置文件producer.properties

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN

10.创建消费者配置文件consumer.properties

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN

11.控制台启动消费者,生产者测试

bin/kafka-console-producer.sh --topic aa --bootstrap-server localhost:9092 --producer.config config/kraft/producer.propertis
bin/kafka-console-consumer.sh --topic aa --from-beginning --bootstrap-server localhost:8082 --consumer.config config/kraft/consumer.properties

Springboot集成带SASL_PLAINTEXT认证的kafka

springboot集成kafka只需要修改配置文件即可,业务代码不需要修改

spring:
  kafka:
    bootstrap-servers: localhost:9092
    consumer:
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      # 消费者主要添加如下四行,注意用户名密码与第一步中的kafka_server_jaas.conf相同
      properties:
        sasl.mechanism: PLAIN
        security.protocol: SASL_PLAINTEXT
        sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="consumer" password="cons-sec";
    producer:
    # 生产者主要添加如下四行,注意用户名密码与第一步中的kafka_server_jaas.conf相同
      properties:
        sasl.mechanism: PLAIN
        security.protocol: SASL_PLAINTEXT
        sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="producer" password="prod-sec";
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer

Flink集成SASL_PLAINTEXT认证的kafka

flink集成带SASL_PLAINTEXT认证的kafka同样只需要下面三个配置,业务代码不需要修改。

/**
     * 构建kafka数据源,结果格式为ImageResult
     *
     * @param address 集群地址
     * @param topics  topic
     * @return 图片结果数据源
     */
    private static KafkaSource<ImageResult> getImageResultSource(String address, String... topics) {
        final Properties props = new Properties();
        props.setProperty("security.protocol", "SASL_PLAINTEXT");
        props.setProperty("sasl.mechanism", "PLAIN");
        props.setProperty("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"consumer\" password=\"cons-sec\";");

        return KafkaSource.<ImageResult>builder()
                .setBootstrapServers(address)
                .setTopics(topics)
                .setGroupId("results-group")
                .setProperties(props)
                .setStartingOffsets(OffsetsInitializer.latest())
                .setValueOnlyDeserializer(new SimpleImageResultSchema())
                .build();
    }

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Kafka SASL_PLAINTEXT 认证是一种安全机制,用于保护 Kafka 集群中的数据传输。它使用明文密码进行身份验证,但在传输过程中使用了 SASL(Simple Authentication and Security Layer)协议进行加密,从而保证了数据的安全性。这种认证方式适用于需要保护数据传输的场景,如金融、医疗等领域。 ### 回答2: Kafka是一种分布式流处理平台,它能够处理大量的实时数据流,被广泛运用于大数据处理和分布式应用程序中。为了保证数据的安全性,Kafka认证方面提供了多种认证机制,其中sasl_plaintext认证是其中一种比较常用的认证方式。 sasl_plaintext认证基于SASL框架,支持明文认证,即客户端发送的用户名和密码不进行加密,而是直接传输给服务器端进行验证。因此,sasl_plaintext被认为是一种不太安全的认证方式,但仍然被广泛采用。 在使用sasl_plaintext认证时,需要在Kafka的server.properties文件中配置相关参数。具体步骤如下: 1. 修改Kafka的server.properties文件,在其中加入以下几行内容,分别指定认证协议、安全协议、认证方式、用户信息等。 sasl.mechanism=PLAIN security.inter.broker.protocol=SASL_PLAINTEXT sasl.enabled.mechanisms=PLAIN sasl.server.callback.handler.class=io.confluent.kafka.security.auth.kerberos.KerberosUsernamePasswordAuthenticateCallback sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ username="kafka" \ password="kafka123"; 其中,username和password分别指定了客户端发送的用户名和密码。 2. 在客户端应用程序中添加sasl相关的配置,使其能够以sasl_plaintext方式与Kafka服务器进行通信。 在Java代码中需要设置的配置如下: props.put("security.protocol", "SASL_PLAINTEXT"); props.put("sasl.mechanism", "PLAIN"); props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"kafka\" password=\"kafka123\";"); 3. 启动Kafka集群,并验证sasl_plaintext认证是否生效。 启动Kafka集群之后,使用Kafka命令行工具进行验证,具体命令如下: ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --consumer.config config/consumer-sasl.properties --from-beginning 其中,consumer-sasl.properties文件中需要配置以下内容: security.protocol=SASL_PLAINTEXT sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka123"; 如果验证成功,将会输出生产者已经发送的消息,证明sasl_plaintext认证已经生效。 总结来说,sasl_plaintext认证是一种比较简单的认证方式,但相比其他认证方式来说,其安全性较低。因此,在实际应用过程中,建议选择更加安全可靠的认证方式,以确保数据的安全性。 ### 回答3: Kafka是一个流行的分布式消息系统,可以支持高吞吐量的消息传输。为了保证消息传输的安全性,Kafka提供了多种认证机制,其中sasl_plaintext是一种基于用户名密码的认证方式。 sasl_plaintext认证的原理是,在客户端和Kafka服务器之间建立一个安全通道,并且在该通道上使用sasl_plaintext协议进行认证。客户端在与Kafka服务器建立连接之前,必须提供用户名和密码。Kafka服务器会验证这些凭证,并在凭证有效时允许客户端访问Kafka集群中的主题或分区。 sasl_plaintext认证的步骤如下: 1. 客户端发送一个SASL握手请求给Kafka服务器,该请求包括使用的机制和客户端的用户名。 2. Kafka服务器通过查找其配置文件中的用户列表来验证客户端的用户名是否正确,并获取该用户的密码。 3. Kafka服务器使用该密码与客户端发送的密码进行比较。如果它们匹配,则客户端的认证成功。 4. 客户端和Kafka服务器之间建立安全通道,并且sasl_plaintext认证成功。 总之,sasl_plaintext认证提供了一种基于用户名和密码的安全认证机制,可以有效地保护Kafka系统中的消息传输的安全性。但是,为了进一步保护Kafka系统,我们还需要使用其他的安全措施,如TLS/SSL、Kerberos等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值