在CentOS上配置Kafka以实现安全性,主要包括以下几个方面:
生成SSL证书:
使用openssl
生成CA证书、服务器证书和密钥。
openssl req -new -x509 -nodes -keyout ca.key -out ca.crt -days 3650
openssl req -newkey rsa:2048 -keyout server.key -out server.crt -days 3650
配置Kafka和Zookeeper:
在server.properties
中配置SSL相关属性:
listeners=SSL://:9093
ssl.keystore.location=/path/to/kafka.server.keystore.jks
ssl.keystore.password=your_keystore_password
ssl.key.password=your_key_password
ssl.truststore.location=/path/to/ca.truststore.jks
ssl.truststore.password=your_truststore_password
配置SASL:
在server.properties
中启用SASL_SSL:
security.inter.broker.protocol=SASL_SSL
sasl.mechanism.inter.broker.protocol=PLAIN
创建JAAS配置文件:
创建kafka_server_jaas.conf
和kafka_client_jaas.conf
文件,用于配置SASL认证。
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="your_password";
}
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="client"
password="your_password";
}
配置启动脚本: 在Kafka启动脚本中添加JVM参数,指定JAAS配置文件路径。
export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf"
firewall-cmd
命令开放Kafka服务使用的端口(默认9092和9093)。firewall-cmd --zone=public --add-port=9092/tcp --permanent
firewall-cmd --zone=public --add-port=9093/tcp --permanent
firewall-cmd --reload
kafka-acls.sh
工具为用户和用户组分配特定的权限。kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow --user=myUser --operation=Read --topic=myTopic
audit.log.enable=true
通过上述步骤,可以在CentOS上配置Kafka以实现安全性,保护数据不被未授权访问和篡改。