下面是详细讲解如何在Kafka中配置安全验证的完整攻略。
一、前置条件
在开始配置Kafka的安全验证之前,我们需要先满足以下的条件:
- 安装了Java环境
- 下载并安装了Kafka
- 配置了Kafka的基本参数
二、配置SSL/TLS
SSL/TLS是Kafka中实现安全验证的一种常见方式,下面是配置SSL/TLS的步骤:
1. 自动生成SSL证书
Kafka提供了工具来自动生成SSL证书。我们可以使用bin/kafka-dump-certs.sh
脚本来生成证书:
bin/kafka-dump-certs.sh --bootstrap-server localhost:9093 --command-config config/admin-client.properties
执行该命令会生成keystore和truststore,在Kafka的配置文件中需要用到。
2. 配置SSL证书
在Kafka的配置文件中(一般是config/server.properties),添加以下配置项:
listeners=INTERNAL://localhost:9092,EXTERNAL://localhost:9093
inter.broker.listener.name=INTERNAL
ssl.keystore.location=path/to/keystore.jks
ssl.keystore.password=changeme
ssl.key.password=changeme
ssl.truststore.location=path/to/truststore.jks
ssl.truststore.password=changeme
security.inter.broker.protocol=SSL
ssl.client.auth=required
解释一下每个配置项的含义:
listeners
: Kafka所使用的端口以及协议的映射。上面的配置表示使用INTERNAL
协议在localhost:9092
上处理内部通讯,使用EXTERNAL
协议在localhost:9093
上处理外部通讯。inter.broker.listener.name
: Kafka处理内部通讯所使用的协议名称。ssl.*
: SSL/TLS证书相关配置。security.inter.broker.protocol
: Kafka内部通讯时使用的协议,这里设置为SSL。ssl.client.auth
: SSL客户端验证模式,这里设置为required。
3. 启动Kafka
在配置完SSL证书之后,启动Kafka即可。启动时可以指定配置文件的路径,例如:
bin/kafka-server-start.sh config/server.properties
4. 测试SSL连接
使用Kafka提供的命令行工具来测试SSL连接。例如,使用以下命令来向Kafka中的test
主题发送一条消息:
bin/kafka-console-producer.sh --broker-list localhost:9093 --topic test --producer.config config/producer.properties
5. SSL配置细节
在配置SSL时,还要注意以下几个细节:
- 在Kafka的配置文件中, 注释掉以下两行配置,使Kafka不使用默认的未加密通信方式:
listeners=PLAINTEXT://:9092
security.inter.broker.protocol=PLAINTEXT
- 在创建证书时,需要将
CN
配置为Kafka所使用的主机名,例如localhost
。如果需要在多台机器上使用同一套证书,需要将证书的CN
设置为通配符,例如*.example.com
。
三、配置SASL/PLAIN
SASL/PLAIN是Kafka中另一种常见的安全验证方式。下面是配置SASL/PLAIN的步骤:
1. 创建用户
首先,我们需要在Kafka中创建一个用于验证的用户。可以使用Kafka提供的脚本来创建用户:
bin/kafka-configs.sh --bootstrap-server localhost:9092 --command-config config/client_security.properties \
--alter --add-config 'SCRAM-SHA-256=[password=username-password]' --entity-type users --entity-name username
上面的命令将会在Kafka中创建一个名为username
的用户,密码为username-password
。可以使用下面的命令来检查用户是否创建成功:
bin/kafka-configs.sh --bootstrap-server localhost:9092 --command-config config/client_security.properties \
--describe --entity-type users --entity-name username
2. 配置SASL/PLAIN认证
在Kafka的配置文件中(如config/server.properties),添加以下配置项:
listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256
sasl.server.callback.handler.class=plain.PlainServerCallbackHandler
sasl.user.config=username=[password]
解释一下每个配置项的含义:
listeners
: Kafka所使用的端口以及协议的映射。这里我们使用SASL_PLAINTEXT
协议在localhost:9092
上处理连接请求。security.inter.broker.protocol
: Kafka内部通讯时使用的协议,这里设置为SASL_PLAINTEXT。sasl.*
: SASL/PLAIN相关配置。sasl.mechanism.inter.broker.protocol
: Kafka处理内部通讯所使用的SASL机制名称。sasl.enabled.mechanisms
: 启用的SASL机制名称。sasl.server.callback.handler.class
: SASL回调处理类。sasl.user.config
: 配置SASL用户名和密码,例如username=[password]
。
3. 启动Kafka
在配置完SASL/PLAIN认证之后,启动Kafka即可。启动时可以指定配置文件的路径,例如:
bin/kafka-server-start.sh config/server.properties
4. 测试SASL连接
使用Kafka提供的命令行工具来测试SASL连接。例如,使用以下命令来向Kafka中的test
主题发送一条消息:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test --producer.config config/producer.properties --producer-property security.protocol=SASL_PLAINTEXT --producer-property sasl.mechanism=SCRAM-SHA-256 --producer-property sasl.username=username --producer-property sasl.password=username-password
5. SASL配置细节
在配置SASL时,还要注意以下几个细节:
- 在创建用户时,需要使用
bin/kafka-configs.sh
脚本执行命令。 - 在配置SASL时,需要指定Kafka的服务端和客户端使用的SASL机制,即对应的
sasl.mechanism
参数。 - 如果使用
SCRAM-SHA-*
机制时,为了安全起见,建议不把密码以明文形式写在配置文件中,而是使用kafka-configs.sh
脚本动态地向Kafka中添加和移除用户。 - 客户端连接Kafka时,需要使用正确的
sasl.mechanism
,同时还需要提供帐号和密码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:kafka添加安全验证配置方式 - Python技术站