在CentOS上配置Kafka的安全策略,通常涉及以下几个步骤:
启用SSL/TLS:
配置SASL:
配置防火墙:
配置Kafka服务器:
server.properties
文件以启用安全特性。配置Kafka客户端:
producer.properties
和consumer.properties
)中设置必要的安全参数。下面是具体的步骤:
使用OpenSSL生成自签名证书:
# 创建一个密钥库
keytool -genkey -alias kafka-server -keystore kafka.server.keystore.jks -storepass password -validity 365 -keysize 2048
# 创建一个信任库
keytool -export -alias kafka-server -file kafka.server.crt -keystore kafka.server.keystore.jks -storepass password
keytool -import -alias kafka-server -file kafka.server.crt -keystore kafka.server.truststore.jks -storepass password
编辑/etc/kafka/server.properties
文件,添加或修改以下配置:
listeners=SSL://:9093
ssl.keystore.location=/etc/kafka/kafka.server.keystore.jks
ssl.keystore.password=password
ssl.key.password=password
ssl.truststore.location=/etc/kafka/kafka.server.truststore.jks
ssl.truststore.password=password
ssl.enabled.protocols=TLSv1.2
ssl.cipher.suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
在客户端的配置文件中添加以下配置:
security.protocol=SSL
ssl.truststore.location=/etc/kafka/kafka.server.truststore.jks
ssl.truststore.password=password
ssl.keystore.location=/etc/kafka/kafka.client.keystore.jks
ssl.keystore.password=password
ssl.key.password=password
例如,使用SCRAM-SHA-256:
# 创建SCRAM凭证
kafka-configs.sh --zookeeper localhost:2181 --entity-type users --entity-name kafka-user --alter --add-config SCRAM-SHA-256=[password]=true
创建一个JAAS配置文件(如kafka_server_jaas.conf
):
KafkaServer {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="kafka-user"
password="password";
};
编辑/etc/kafka/server.properties
文件,添加或修改以下配置:
listeners=SASL_SSL://:9093
security.inter.broker.protocol=SASL_SSL
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka-user" password="password";
在客户端的配置文件中添加以下配置:
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka-user" password="password";
使用firewall-cmd
打开必要的端口:
firewall-cmd --permanent --zone=public --add-port=9093/tcp
firewall-cmd --reload
最后,重启Kafka服务以应用更改:
systemctl restart kafka
请注意,这些步骤可能需要根据你的具体环境和安全需求进行调整。在生产环境中,建议使用更安全的证书管理方法,如使用PKI(公钥基础设施)而不是自签名证书,并且可能需要配置更多的安全参数。