ubuntu

如何在Ubuntu上配置Kafka的认证与授权

小樊
46
2025-05-18 18:43:51
栏目: 智能运维

在Ubuntu上配置Apache Kafka的认证与授权是一个复杂的过程,涉及到多个步骤和组件。以下是一个基本的指南,帮助你在Ubuntu上配置Kafka的认证与授权。

前提条件

  1. 安装Java:Kafka需要Java运行环境。

    sudo apt update
    sudo apt install openjdk-11-jdk
    
  2. 下载并解压Kafka

    wget https://downloads.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz
    tar -xzf kafka_2.13-3.2.0.tgz
    cd kafka_2.13-3.2.0
    

配置Kafka服务器

1. 配置server.properties

编辑config/server.properties文件,启用SASL认证和SSL加密。

# 启用SASL认证
listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN

# 启用SSL加密
listeners=SSL://:9093
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

# 启用认证和授权
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:admin

2. 创建SSL证书和密钥

使用OpenSSL生成自签名证书和密钥。

# 生成密钥库
keytool -genkey -alias kafka -keystore keystore.jks -storepass keystore-password -validity 3650

# 生成信任库
keytool -import -alias kafka -file kafka.crt -keystore truststore.jks -storepass truststore-password

配置Kafka客户端

1. 配置生产者

编辑config/producer.properties文件,启用SASL认证和SSL加密。

bootstrap.servers=localhost:9093
security.protocol=SSL
ssl.truststore.location=/path/to/truststore.jks
ssl.truststore.password=truststore-password
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";

2. 配置消费者

编辑config/consumer.properties文件,启用SASL认证和SSL加密。

bootstrap.servers=localhost:9093
security.protocol=SSL
ssl.truststore.location=/path/to/truststore.jks
ssl.truststore.password=truststore-password
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";

启动Kafka服务器

bin/kafka-server-start.sh config/server.properties

创建主题并配置ACL

创建一个主题并配置ACL以进行授权。

bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9093 --partitions 1 --replication-factor 1

# 配置ACL
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
  --add --allow-principal User:admin --operation Read --topic test-topic

测试配置

使用Kafka客户端发送和接收消息,确保认证和授权配置正确。

# 生产者测试
bin/kafka-console-producer.sh --broker-list localhost:9093 --topic test-topic --property security.protocol=SSL --property ssl.truststore.location=/path/to/truststore.jks --property ssl.truststore.password=truststore-password --property sasl.mechanism=PLAIN --property sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret"

# 消费者测试
bin/kafka-console-consumer.sh --bootstrap-server localhost:9093 --topic test-topic --from-beginning --property security.protocol=SSL --property ssl.truststore.location=/path/to/truststore.jks --property ssl.truststore.password=truststore-password --property sasl.mechanism=PLAIN --property sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret"

通过以上步骤,你应该能够在Ubuntu上成功配置Kafka的认证与授权。请根据实际需求调整配置文件中的路径和密码。

0
看了该问题的人还看了