配置Kafka安全认证主要包括启用SASL认证、配置SSL/TLS加密、设置访问控制列表(ACL)以及相关的JAAS配置文件。以下是详细的配置步骤:
修改server.properties
文件:
在Kafka的server.properties
文件中,设置listeners=SASL_PLAINTEXT://hostname:9092
来启用SASL认证,并设置security.inter.broker.protocol=SASL_PLAINTEXT
来确保broker之间的通信也经过认证。
创建JAAS配置文件:
在Kafka的配置目录下创建kafka_server_jaas.conf
文件,用于配置Kafka服务器的认证信息。例如:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret";
}
同样,为客户端创建kafka_client_jaas.conf
文件,配置客户端的认证信息:
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="alice"
password="alice-secret";
}
生成SSL证书和密钥: 使用OpenSSL等工具生成SSL证书和私钥。
配置Kafka Broker:
在server.properties
文件中设置SSL相关的参数,包括SSL证书和私钥的路径、密码等。例如:
listeners=SASL_SSL://kafka-broker:9093
security.inter.broker.protocol=SASL_SSL
sasl.mechanism.inter.broker.protocol=PLAIN
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
配置客户端: 在客户端的配置文件中设置SSL相关的参数,以启用SSL/TLS加密。
添加ACL规则:
使用kafka-configs.sh
脚本在Zookeeper中为Kafka添加用户,并设置ACL规则。例如:
./kafka/bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=alice-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name alice
验证ACL规则:
使用kafka-configs.sh
脚本验证ACL规则是否正确添加:
./kafka/bin/kafka-configs.sh --zookeeper localhost:2181 --describe --entity-type users --entity-name alice
启动Zookeeper:
export KAFKA_OPTS='-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf'
./bin/zookeeper-server-start.sh config/zookeeper.properties
启动Kafka Broker:
export KAFKA_OPTS='-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf'
./bin/kafka-server-start.sh config/server.properties
通过上述步骤,你可以配置Kafka以使用SASL和SSL/TLS进行安全认证,并通过ACL进行细粒度的权限控制。确保所有配置文件正确放置在相应位置,并且在启动Kafka服务时能够正确加载这些配置。