在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(公鑰基礎設施)而不是自簽名證書,并且可能需要配置更多的安全參數。